From a3127c76e70bed0a385c3cd751a263b485f0d8a8 Mon Sep 17 00:00:00 2001 From: Luna Date: Mon, 26 Aug 2019 09:54:01 -0300 Subject: [PATCH] remove optional from parseTopDecl --- examples/hello.v | 11 +++++++++++ src/parser.zig | 11 +++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/examples/hello.v b/examples/hello.v index 9a3e886..13de5a8 100644 --- a/examples/hello.v +++ b/examples/hello.v @@ -34,4 +34,15 @@ fn main(a int) int { cock_and_ball_torture('cbt', 1, 2, 3) return 23 + + //p := Point{ + // x: 10 + // y: 20 + //} + //println(p.x) } + +//struct Point { +// x int +// y int +//} diff --git a/src/parser.zig b/src/parser.zig index 0bf4055..ab9fd8a 100644 --- a/src/parser.zig +++ b/src/parser.zig @@ -325,8 +325,7 @@ pub const Parser = struct { if (token.ttype == .EOF) break; var node = try self.parseTopDecl(); - if (node == null) continue; - try root.Root.append(node.?); + try root.Root.append(node); } if (self.hadError) { @@ -336,7 +335,7 @@ pub const Parser = struct { return root; } - fn parseFnDecl(self: *@This()) !?*Node { + fn parseFnDecl(self: *@This()) !*Node { var param_list = ast.ParamList.init(self.allocator); errdefer param_list.deinit(); @@ -365,7 +364,7 @@ pub const Parser = struct { return try self.mkFnDecl(name, param_list, return_type, block_node.Block); } - fn parseConstDecl(self: *@This()) !?*Node { + fn parseConstDecl(self: *@This()) !*Node { var consts = ast.ConstList.init(self.allocator); errdefer consts.deinit(); @@ -389,14 +388,14 @@ pub const Parser = struct { return self.mkConstDecl(consts); } - fn parseTopDecl(self: *@This()) !?*Node { + fn parseTopDecl(self: *@This()) !*Node { return switch (self.peek().ttype) { .Fn => try self.parseFnDecl(), .Const => try self.parseConstDecl(), else => |ttype| blk: { self.doError("(basic) expected fn/const, got {}\n", ttype); - break :blk null; + return Result.CompileError; }, }; }