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...@@ -12075,7 +12075,7 @@ ContainerDeclarations
12075 / doc_comment? KEYWORD_pub? Decl ContainerDeclarations12075 / doc_comment? KEYWORD_pub? Decl ContainerDeclarations
12076 /12076 /
1207712077
12078TestDecl <- KEYWORD_test STRINGLITERALSINGLE? Block12078TestDecl <- KEYWORD_test (STRINGLITERALSINGLE / IDENTIFIER)? Block
1207912079
12080ComptimeDecl <- KEYWORD_comptime Block12080ComptimeDecl <- KEYWORD_comptime Block
1208112081
...@@ -12089,7 +12089,7 @@ FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpa...@@ -12089,7 +12089,7 @@ FnProto <- KEYWORD_fn IDENTIFIER? LPAREN ParamDeclList RPAREN ByteAlign? AddrSpa
12089VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON12089VarDecl <- (KEYWORD_const / KEYWORD_var) IDENTIFIER (COLON TypeExpr)? ByteAlign? AddrSpace? LinkSection? (EQUAL Expr)? SEMICOLON
1209012090
12091ContainerField12091ContainerField
12092 <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr ByteAlign?)? (EQUAL Expr)?12092 <- doc_comment? KEYWORD_comptime? IDENTIFIER (COLON TypeExpr)? ByteAlign? (EQUAL Expr)?
12093 / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)?12093 / doc_comment? KEYWORD_comptime? (IDENTIFIER COLON)? !KEYWORD_fn TypeExpr ByteAlign? (EQUAL Expr)?
1209412094
12095# *** Block Level ***12095# *** Block Level ***
...@@ -12360,7 +12360,7 @@ PrefixTypeOp...@@ -12360,7 +12360,7 @@ PrefixTypeOp
12360 <- QUESTIONMARK12360 <- QUESTIONMARK
12361 / KEYWORD_anyframe MINUSRARROW12361 / KEYWORD_anyframe MINUSRARROW
12362 / SliceTypeStart (ByteAlign / AddrSpace / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*12362 / 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)*
12364 / ArrayTypeStart12364 / ArrayTypeStart
1236512365
12366SuffixOp12366SuffixOp
lib/std/zig/parse.zig+1-1
...@@ -1595,7 +1595,7 @@ const Parser = struct {...@@ -1595,7 +1595,7 @@ const Parser = struct {
1595 /// <- QUESTIONMARK1595 /// <- QUESTIONMARK
1596 /// / KEYWORD_anyframe MINUSRARROW1596 /// / KEYWORD_anyframe MINUSRARROW
1597 /// / SliceTypeStart (ByteAlign / AddrSpace / KEYWORD_const / KEYWORD_volatile / KEYWORD_allowzero)*1597 /// / 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)*
1599 /// / ArrayTypeStart1599 /// / ArrayTypeStart
1600 /// SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET1600 /// SliceTypeStart <- LBRACKET (COLON Expr)? RBRACKET
1601 /// PtrTypeStart1601 /// PtrTypeStart
src/AstGen.zig+2-2
...@@ -3365,7 +3365,7 @@ fn ptrType(...@@ -3365,7 +3365,7 @@ fn ptrType(
3365 var trailing_count: u32 = 0;3365 var trailing_count: u32 = 0;
33663366
3367 if (ptr_info.ast.sentinel != 0) {3367 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);
3369 trailing_count += 1;3369 trailing_count += 1;
3370 }3370 }
3371 if (ptr_info.ast.align_node != 0) {3371 if (ptr_info.ast.align_node != 0) {
...@@ -3468,7 +3468,7 @@ fn arrayTypeSentinel(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node....@@ -3468,7 +3468,7 @@ fn arrayTypeSentinel(gz: *GenZir, scope: *Scope, ri: ResultInfo, node: Ast.Node.
3468 }3468 }
3469 const len = try reachableExpr(gz, scope, .{ .rl = .{ .coerced_ty = .usize_type } }, len_node, node);3469 const len = try reachableExpr(gz, scope, .{ .rl = .{ .coerced_ty = .usize_type } }, len_node, node);
3470 const elem_type = try typeExpr(gz, scope, extra.elem_type);3470 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
3473 const result = try gz.addPlNode(.array_type_sentinel, node, Zir.Inst.ArrayTypeSentinel{3473 const result = try gz.addPlNode(.array_type_sentinel, node, Zir.Inst.ArrayTypeSentinel{
3474 .len = len,3474 .len = len,