authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-28 12:34:41+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-12-29 12:43:02+02:00
log8a6295fcba80be9a145d59b103b6ec8d19636b38
tree0a64969fa1fcaabcd8c98e05e2e5d4087b9398c8
parent9a0c593a547eec03a527afaac13fcf11f799c20f

AstGen: make type sentinel expressions implicitly comptime


3 files changed, 6 insertions(+), 6 deletions(-)

doc/langref.html.in+3-3
......@@ -12075,7 +12075,7 @@ ContainerDeclarations
1207512075 / doc_comment? KEYWORD_pub? Decl ContainerDeclarations
1207612076 /
1207712077
12078TestDecl <- KEYWORD_test STRINGLITERALSINGLE? Block
12078TestDecl <- KEYWORD_test (STRINGLITERALSINGLE / IDENTIFIER)? Block
1207912079
1208012080ComptimeDecl <- KEYWORD_comptime Block
1208112081
......@@ -12089,7 +12089,7 @@ FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpa
1208912089VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON
1209012090
1209112091ContainerField
12092 <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr ByteAlign?)? (EQUAL Expr)?
12092 <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)?
1209312093 / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)?
1209412094
1209512095# *** Block Level ***
......@@ -12360,7 +12360,7 @@ PrefixTypeOp
1236012360 <- QUESTIONMARK
1236112361 / KEYWORD_anyframe MINUSRARROW
1236212362 / SliceTypeStart (ByteAlign / AddrSpace / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
12363 / PtrTypeStart (AddrSpace / KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
12363 / PtrTypeStart (AddrSpace / KEYWORD_align LPAREN Expr (COLON Expr COLON Expr)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1236412364 / ArrayTypeStart
1236512365
1236612366SuffixOp
lib/std/zig/parse.zig+1-1
......@@ -1595,7 +1595,7 @@ const Parser = struct {
15951595 /// <- QUESTIONMARK
15961596 /// / KEYWORD_anyframe MINUSRARROW
15971597 /// / SliceTypeStart (ByteAlign / AddrSpace / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1598 /// / PtrTypeStart (AddrSpace / KEYWORD_align LPAREN Expr (COLON INTEGER COLON INTEGER)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
1598 /// / PtrTypeStart (AddrSpace / KEYWORD_align LPAREN Expr (COLON Expr COLON Expr)? RPAREN / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*
15991599 /// / ArrayTypeStart
16001600 /// SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET
16011601 /// PtrTypeStart
src/AstGen.zig+2-2
......@@ -3365,7 +3365,7 @@ fn ptrType(
33653365 var trailing_count: u32 = 0;
33663366
33673367 if (ptr_info.ast.sentinel != 0) {
3368 sentinel_ref = try expr(gz, scope, .{ .rl = .{ .ty = elem_type } }, ptr_info.ast.sentinel);
3368 sentinel_ref = try comptimeExpr(gz, scope, .{ .rl = .{ .ty = elem_type } }, ptr_info.ast.sentinel);
33693369 trailing_count += 1;
33703370 }
33713371 if (ptr_info.ast.align_node != 0) {
......@@ -3468,7 +3468,7 @@ fn arrayTypeSentinel(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.
34683468 }
34693469 const len = try reachableExpr(gz, scope, .{ .rl = .{ .coerced_ty = .usize_type } }, len_node, node);
34703470 const elem_type = try typeExpr(gz, scope, extra.elem_type);
3471 const sentinel = try reachableExpr(gz, scope, .{ .rl = .{ .coerced_ty = elem_type } }, extra.sentinel, node);
3471 const sentinel = try reachableExprComptime(gz, scope, .{ .rl = .{ .coerced_ty = elem_type } }, extra.sentinel, node, true);
34723472
34733473 const result = try gz.addPlNode(.array_type_sentinel, node, Zir.Inst.ArrayTypeSentinel{
34743474 .len = len,