mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 13:01:05 +01:00
Add support to rewriter for free-function declarations and definitions. (#2120)
This commit is contained in:
@@ -131,5 +131,58 @@ TEST(Rewriter, DeclarationComma) {
|
||||
"let y: i32 = 5678;\n");
|
||||
}
|
||||
|
||||
TEST(Rewriter, FunctionDeclaration) {
|
||||
// Function declarations and definitions returning void.
|
||||
EXPECT_EQ(RewriteText("void f();"), "fn f() -> ();\n");
|
||||
EXPECT_EQ(RewriteText("void f() {}"),
|
||||
"fn f() -> () {\n"
|
||||
"}\n");
|
||||
|
||||
// Function declarations and definitions returning int.
|
||||
EXPECT_EQ(RewriteText("int f();"), "fn f() -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("int f() { return 0; }"),
|
||||
"fn f() -> i32 {\n"
|
||||
"return 0;\n"
|
||||
"}\n");
|
||||
|
||||
// Function declarations and definitions with a single parameter.
|
||||
EXPECT_EQ(RewriteText("int f(bool);"), "fn f(_: bool) -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool b);"), "fn f(b: bool) -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool) { return 0; }"),
|
||||
"fn f(_: bool) -> i32 {\n"
|
||||
"return 0;\n"
|
||||
"}\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool b) { return 0; }"),
|
||||
"fn f(b: bool) -> i32 {\n"
|
||||
"return 0;\n"
|
||||
"}\n");
|
||||
|
||||
// Function declarations and definitions with a multiple parameters.
|
||||
EXPECT_EQ(RewriteText("int f(bool, int);"),
|
||||
"fn f(_: bool, _: i32) -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool b, int n);"),
|
||||
"fn f(b: bool, n: i32) -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool, int n) { return 0; }"),
|
||||
"fn f(_: bool, n: i32) -> i32 {\n"
|
||||
"return 0;\n"
|
||||
"}\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool b, int n) { return 0; }"),
|
||||
"fn f(b: bool, n: i32) -> i32 {\n"
|
||||
"return 0;\n"
|
||||
"}\n");
|
||||
EXPECT_EQ(RewriteText("int f(bool b, int n = 3) { return n; }"),
|
||||
"fn f(b: bool, n: i32 = 3) -> i32 {\n"
|
||||
"return n;\n"
|
||||
"}\n");
|
||||
|
||||
// Function declarations with trailing-return syntax.
|
||||
EXPECT_EQ(RewriteText("auto f(bool b, int n = 3) -> int;"),
|
||||
"fn f(b: bool, n: i32 = 3) -> i32;\n");
|
||||
EXPECT_EQ(RewriteText("auto f(bool b, int n = 3) -> int { return n; }"),
|
||||
"fn f(b: bool, n: i32 = 3) -> i32 {\n"
|
||||
"return n;\n"
|
||||
"}\n");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace Carbon::Testing
|
||||
|
||||
Reference in New Issue
Block a user