Commit 47f7e66580

momumi <57862114+momumi@users.noreply.github.com>
2020-03-15 14:42:29
add more test cases for invalid number literals
1 parent 925f710
Changed files (1)
test/compile_errors.zig
@@ -384,15 +384,31 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
         \\    var bad_float :f32 = 0.0;
         \\    bad_float = bad_float + .20;
         \\    std.debug.assert(bad_float < 1.0);
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:5:29: error: invalid token: '.'",
     });
 
+    cases.add("invalid exponent in float literal - 1",
+        \\fn main() void {
+        \\    var bad: f128 = 0x1.0p1ab1;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:28: error: invalid character: 'a'",
+    });
+
+    cases.add("invalid exponent in float literal - 2",
+        \\fn main() void {
+        \\    var bad: f128 = 0x1.0p50F;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:29: error: invalid character: 'F'",
+    });
+
     cases.add("invalid underscore placement in float literal - 1",
         \\fn main() void {
         \\    var bad: f128 = 0._0;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:23: error: invalid character: '_'",
     });
@@ -400,7 +416,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 2",
         \\fn main() void {
         \\    var bad: f128 = 0_.0;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:23: error: invalid character: '.'",
     });
@@ -408,7 +424,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 3",
         \\fn main() void {
         \\    var bad: f128 = 0.0_;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:25: error: invalid character: ';'",
     });
@@ -416,7 +432,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 4",
         \\fn main() void {
         \\    var bad: f128 = 1.0e_1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:25: error: invalid character: '_'",
     });
@@ -424,7 +440,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 5",
         \\fn main() void {
         \\    var bad: f128 = 1.0e+_1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:26: error: invalid character: '_'",
     });
@@ -432,7 +448,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 6",
         \\fn main() void {
         \\    var bad: f128 = 1.0e-_1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:26: error: invalid character: '_'",
     });
@@ -440,7 +456,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 7",
         \\fn main() void {
         \\    var bad: f128 = 1.0e-1_;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:28: error: invalid character: ';'",
     });
@@ -448,7 +464,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 9",
         \\fn main() void {
         \\    var bad: f128 = 1__0.0e-1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:23: error: invalid character: '_'",
     });
@@ -456,7 +472,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 10",
         \\fn main() void {
         \\    var bad: f128 = 1.0__0e-1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:25: error: invalid character: '_'",
     });
@@ -464,7 +480,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 11",
         \\fn main() void {
         \\    var bad: f128 = 1.0e-1__0;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:28: error: invalid character: '_'",
     });
@@ -472,7 +488,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 12",
         \\fn main() void {
         \\    var bad: f128 = 0_x0.0;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:23: error: invalid character: 'x'",
     });
@@ -480,7 +496,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 13",
         \\fn main() void {
         \\    var bad: f128 = 0x_0.0;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:23: error: invalid character: '_'",
     });
@@ -488,11 +504,43 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
     cases.add("invalid underscore placement in float literal - 14",
         \\fn main() void {
         \\    var bad: f128 = 0x0.0_p1;
-        \\})
+        \\}
     , &[_][]const u8{
         "tmp.zig:2:27: error: invalid character: 'p'",
     });
 
+    cases.add("invalid underscore placement in int literal - 1",
+        \\fn main() void {
+        \\    var bad: u128 = 0010_;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:26: error: invalid character: ';'",
+    });
+
+    cases.add("invalid underscore placement in int literal - 2",
+        \\fn main() void {
+        \\    var bad: u128 = 0b0010_;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:28: error: invalid character: ';'",
+    });
+
+    cases.add("invalid underscore placement in int literal - 3",
+        \\fn main() void {
+        \\    var bad: u128 = 0o0010_;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:28: error: invalid character: ';'",
+    });
+
+    cases.add("invalid underscore placement in int literal - 4",
+        \\fn main() void {
+        \\    var bad: u128 = 0x0010_;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:2:28: error: invalid character: ';'",
+    });
+
     cases.add("var args without c calling conv",
         \\fn foo(args: ...) void {}
         \\comptime {