From 3dabb3ac263b4ed265e8783346872cd49238fcac Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Sun, 2 Jun 2024 16:13:58 +0200 Subject: [PATCH] feat: Key and/or value type of foreach and for loops can be infered and `var` can be used closes #296 --- CHANGELOG.md | 3 +- example.png | Bin 49034 -> 49355 bytes examples/finobacci.buzz | 4 +- src/Parser.zig | 79 ++++++++++++++++++++++++++++++++++++---- src/builtin/range.zig | 6 +-- 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef7337c9..6eca7a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,12 @@ # Unreleased ## Added -- Enum can now have `rg`, `ud`, `void`, `pat` has value type - Object can have `const` properties (https://github.com/buzz-language/buzz/issues/13). A object with only `const` properties is considered itself `const`. Although we don't do anything yet with that concept. https://github.com/buzz-language/buzz/issues/114 is the objective but it requires being able to build objects and instances at compile time which is not yet possible. - `rg.subsetOf`, `rg.intersect`, `rg.union` ## Modified +- Enum can now have `rg`, `ud`, `void`, `pat` has value type +- `var` can be used for key and/or value type in `for` and `foreach` loop ## Fixed - Type checking was not done on object instance property assignments diff --git a/example.png b/example.png index b5f4affc7a068093c56d9f05bd1f98005e2253db..8de1891aba364c6383cb1db64013d3d3d4e81c20 100644 GIT binary patch literal 49355 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 literal 49034 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 diff --git a/examples/finobacci.buzz b/examples/finobacci.buzz index 787bfc52..16644d18 100644 --- a/examples/finobacci.buzz +++ b/examples/finobacci.buzz @@ -5,7 +5,7 @@ fun fibonacci(int n) > void *> int? { var n2 = 1; int? next = null; - foreach (int _ in 0..n) { + foreach (var _ in 0..n) { _ = yield n1; next = n1 + n2; n1 = n2; @@ -19,7 +19,7 @@ fun main([str] args) > void { else 10; - foreach (int? n in &fibonacci(N)) { + foreach (var n in &fibonacci(N)) { std.print("{n}"); } } diff --git a/src/Parser.zig b/src/Parser.zig index c960500e..95fca325 100644 --- a/src/Parser.zig +++ b/src/Parser.zig @@ -1270,6 +1270,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, false, true, + false, ) else if (try self.match(.Pat)) try self.varDeclaration( @@ -1278,6 +1279,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Ud)) try self.varDeclaration( @@ -1286,6 +1288,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Str)) try self.varDeclaration( @@ -1294,6 +1297,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Int)) try self.varDeclaration( @@ -1302,6 +1306,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Float)) try self.varDeclaration( @@ -1310,6 +1315,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Bool)) try self.varDeclaration( @@ -1318,6 +1324,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Range)) try self.varDeclaration( @@ -1326,6 +1333,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Type)) try self.varDeclaration( @@ -1334,6 +1342,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Any)) try self.varDeclaration( @@ -1342,6 +1351,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (self.current_token.? > 0 and self.current_token.? - 1 < self.ast.tokens.len - 1 and self.ast.tokens.items(.tag)[self.current_token.?] == .Identifier and @@ -1353,6 +1363,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Fib)) try self.varDeclaration( @@ -1361,6 +1372,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.Obj)) try self.varDeclaration( @@ -1369,6 +1381,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (try self.match(.LeftBracket)) try self.listDeclaration(constant) @@ -1383,6 +1396,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, constant, true, + false, ) else if (global_scope and try self.match(.Import)) try self.importStatement() @@ -1429,6 +1443,7 @@ fn declaration(self: *Self) Error!?Ast.Node.Index { .Semicolon, true, true, + false, ); } @@ -6762,6 +6777,7 @@ fn varDeclaration( terminator: DeclarationTerminator, constant: bool, should_assign: bool, + type_provided_later: bool, ) Error!Ast.Node.Index { var var_type = if (parsed_type) |ptype| try self.ast.nodes.items(.type_def)[ptype].?.toInstance( @@ -6810,7 +6826,7 @@ fn varDeclaration( } else { self.current.?.locals[slot].type_def = var_type; } - } else if (parsed_type == null) { + } else if (parsed_type == null and !type_provided_later) { self.reporter.reportErrorAt( .inferred_type, self.ast.tokens.get(start_location), @@ -6903,6 +6919,7 @@ fn listDeclaration(self: *Self, constant: bool) Error!Ast.Node.Index { .Semicolon, constant, true, + false, ); } @@ -6920,6 +6937,7 @@ fn mapDeclaration(self: *Self, constant: bool) Error!Ast.Node.Index { .Semicolon, constant, true, + false, ); } @@ -7928,6 +7946,7 @@ fn userVarDeclaration(self: *Self, _: bool, constant: bool) Error!Ast.Node.Index .Semicolon, constant, true, + false, ); } @@ -7945,10 +7964,14 @@ fn forStatement(self: *Self) Error!Ast.Node.Index { try init_declarations.append( try self.varDeclaration( false, - try self.parseTypeDef(null, true), + if (try self.match(.Var)) + null + else + try self.parseTypeDef(null, true), .Nothing, false, true, + false, ), ); @@ -8026,27 +8049,37 @@ fn forEachStatement(self: *Self) Error!Ast.Node.Index { try self.beginScope(null); + const infer_key_type = try self.match(.Var); var key = try self.varDeclaration( false, - try self.parseTypeDef(null, true), + if (infer_key_type) + null + else + try self.parseTypeDef(null, true), .Nothing, false, false, + infer_key_type, ); - var value = if (try self.match(.Comma)) + const key_omitted = !(try self.match(.Comma)); + const infer_value_type = !key_omitted and try self.match(.Var); + var value = if (!key_omitted) try self.varDeclaration( false, - try self.parseTypeDef(null, true), + if (infer_value_type) + null + else + try self.parseTypeDef(null, true), .Nothing, false, false, + infer_value_type, ) else null; // If key is omitted, prepare the slot anyway - const key_omitted = value == null; if (key_omitted) { value = key; @@ -8080,8 +8113,40 @@ fn forEachStatement(self: *Self) Error!Ast.Node.Index { ); const iterable = try self.expression(false); + const iterable_type_def = self.ast.nodes.items(.type_def)[iterable].?; + + self.current.?.locals[iterable_slot].type_def = iterable_type_def; + + // Infer key/value type + if (infer_key_type and !key_omitted) { + const key_type = switch (iterable_type_def.def_type) { + .List, .String => self.gc.type_registry.int_type, + .Map => iterable_type_def.resolved_type.?.Map.key_type, + else => + // Other type don't have key type + self.current.?.locals[self.ast.nodes.items(.components)[key].VarDeclaration.slot].type_def, + }; - self.current.?.locals[iterable_slot].type_def = self.ast.nodes.items(.type_def)[iterable].?; + self.current.?.locals[self.ast.nodes.items(.components)[key].VarDeclaration.slot].type_def = key_type; + self.ast.nodes.items(.type_def)[key] = key_type; + } + + if (infer_value_type or (infer_key_type and key_omitted)) { + const value_type = switch (iterable_type_def.def_type) { + .List => iterable_type_def.resolved_type.?.List.item_type, + .Range => self.gc.type_registry.int_type, + // .String => self.gc.type_registry.str_type, + .Map => iterable_type_def.resolved_type.?.Map.value_type, + .Enum => try iterable_type_def.toInstance(self.gc.allocator, &self.gc.type_registry), + .Fiber => iterable_type_def.resolved_type.?.Fiber.yield_type, + else => + // Other type are invalid and will be caught at codegen + self.current.?.locals[self.ast.nodes.items(.components)[value.?].VarDeclaration.slot].type_def, + }; + + self.current.?.locals[self.ast.nodes.items(.components)[value.?].VarDeclaration.slot].type_def = value_type; + self.ast.nodes.items(.type_def)[value.?] = value_type; + } self.markInitialized(); diff --git a/src/builtin/range.zig b/src/builtin/range.zig index ba168637..ec680f90 100644 --- a/src/builtin/range.zig +++ b/src/builtin/range.zig @@ -59,7 +59,7 @@ pub fn invert(ctx: *obj.NativeCtx) c_int { ctx.vm.push( Value.fromObj((ctx.vm.gc.allocateObject( obj.ObjRange, - obj.ObjRange{ + .{ .high = range.low, .low = range.high, }, @@ -93,7 +93,7 @@ pub fn intersect(ctx: *obj.NativeCtx) c_int { ctx.vm.push( Value.fromObj((ctx.vm.gc.allocateObject( obj.ObjRange, - obj.ObjRange{ + .{ .high = @max( @min(rangeB.low, rangeB.high), @min(rangeA.low, rangeA.high), @@ -119,7 +119,7 @@ pub fn @"union"(ctx: *obj.NativeCtx) c_int { ctx.vm.push( Value.fromObj((ctx.vm.gc.allocateObject( obj.ObjRange, - obj.ObjRange{ + .{ .high = @min( @min(rangeB.low, rangeB.high), @min(rangeA.low, rangeA.high),