authorgravatar for codroid@gmail.comStevie Hryciw <codroid@gmail.com> 2022-11-04 13:34:10-07:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2022-11-18 19:22:42+00:00
logbe737bb5ccf172773492f1834cf7e8b4a8bc1753
tree13e5e05ce0e2cbd02da4326f5eb385a1aec1fd7f
parente7424d5d2ab4ac0a44c76dae15aaf35817a9743e

stage1: delete keywords

Backports 05cf449 to the C++ implementation.

6 files changed, 0 insertions(+), 79 deletions(-)

src/stage1/all_types.hpp-8
...@@ -679,9 +679,6 @@ enum NodeType {...@@ -679,9 +679,6 @@ enum NodeType {
679 NodeTypePtrDeref,679 NodeTypePtrDeref,
680 NodeTypeUnwrapOptional,680 NodeTypeUnwrapOptional,
681 NodeTypeUsingNamespace,681 NodeTypeUsingNamespace,
682 NodeTypeBoolLiteral,
683 NodeTypeNullLiteral,
684 NodeTypeUndefinedLiteral,
685 NodeTypeUnreachable,682 NodeTypeUnreachable,
686 NodeTypeIfBoolExpr,683 NodeTypeIfBoolExpr,
687 NodeTypeWhileExpr,684 NodeTypeWhileExpr,
...@@ -1171,10 +1168,6 @@ struct AstNodeEnumLiteral {...@@ -1171,10 +1168,6 @@ struct AstNodeEnumLiteral {
1171 Buf *name;1168 Buf *name;
1172};1169};
11731170
1174struct AstNodeBoolLiteral {
1175 bool value;
1176};
1177
1178struct AstNodeBreakExpr {1171struct AstNodeBreakExpr {
1179 Buf *name;1172 Buf *name;
1180 AstNode *expr; // may be null1173 AstNode *expr; // may be null
...@@ -1240,7 +1233,6 @@ struct AstNode {...@@ -1240,7 +1233,6 @@ struct AstNode {
1240 AstNodeStructField struct_field;1233 AstNodeStructField struct_field;
1241 AstNodeContainerInitExpr container_init_expr;1234 AstNodeContainerInitExpr container_init_expr;
1242 AstNodeStructValueField struct_val_field;1235 AstNodeStructValueField struct_val_field;
1243 AstNodeBoolLiteral bool_literal;
1244 AstNodeBreakExpr break_expr;1236 AstNodeBreakExpr break_expr;
1245 AstNodeContinueExpr continue_expr;1237 AstNodeContinueExpr continue_expr;
1246 AstNodeArrayType array_type;1238 AstNodeArrayType array_type;
src/stage1/analyze.cpp-3
...@@ -4094,9 +4094,6 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {...@@ -4094,9 +4094,6 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {
4094 case NodeTypeIntLiteral:4094 case NodeTypeIntLiteral:
4095 case NodeTypeStringLiteral:4095 case NodeTypeStringLiteral:
4096 case NodeTypeCharLiteral:4096 case NodeTypeCharLiteral:
4097 case NodeTypeBoolLiteral:
4098 case NodeTypeNullLiteral:
4099 case NodeTypeUndefinedLiteral:
4100 case NodeTypeIdentifier:4097 case NodeTypeIdentifier:
4101 case NodeTypePrefixOpExpr:4098 case NodeTypePrefixOpExpr:
4102 case NodeTypePointerType:4099 case NodeTypePointerType:
src/stage1/astgen.cpp-25
...@@ -3857,12 +3857,6 @@ static Stage1ZirInst *astgen_char_lit(Stage1AstGen *ag, Scope *scope, AstNode *n...@@ -3857,12 +3857,6 @@ static Stage1ZirInst *astgen_char_lit(Stage1AstGen *ag, Scope *scope, AstNode *n
3857 return ir_build_const_uint(ag, scope, node, codepoint);3857 return ir_build_const_uint(ag, scope, node, codepoint);
3858}3858}
38593859
3860static Stage1ZirInst *astgen_null_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
3861 assert(node->type == NodeTypeNullLiteral);
3862
3863 return ir_build_const_null(ag, scope, node);
3864}
3865
3866static Stage1ZirInst *astgen_identifier(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,3860static Stage1ZirInst *astgen_identifier(Stage1AstGen *ag, Scope *scope, AstNode *node, LVal lval,
3867 ResultLoc *result_loc)3861 ResultLoc *result_loc)
3868{3862{
...@@ -6592,11 +6586,6 @@ static Stage1ZirInst *astgen_for_expr(Stage1AstGen *ag, Scope *parent_scope, Ast...@@ -6592,11 +6586,6 @@ static Stage1ZirInst *astgen_for_expr(Stage1AstGen *ag, Scope *parent_scope, Ast
6592 return ir_lval_wrap(ag, parent_scope, phi, lval, result_loc);6586 return ir_lval_wrap(ag, parent_scope, phi, lval, result_loc);
6593}6587}
65946588
6595static Stage1ZirInst *astgen_bool_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
6596 assert(node->type == NodeTypeBoolLiteral);
6597 return ir_build_const_bool(ag, scope, node, node->data.bool_literal.value);
6598}
6599
6600static Stage1ZirInst *astgen_enum_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {6589static Stage1ZirInst *astgen_enum_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
6601 assert(node->type == NodeTypeEnumLiteral);6590 assert(node->type == NodeTypeEnumLiteral);
6602 // Currently, stage1 runs astgen for every comptime function call,6591 // Currently, stage1 runs astgen for every comptime function call,
...@@ -6736,11 +6725,6 @@ static Stage1ZirInst *astgen_anyframe_type(Stage1AstGen *ag, Scope *scope, AstNo...@@ -6736,11 +6725,6 @@ static Stage1ZirInst *astgen_anyframe_type(Stage1AstGen *ag, Scope *scope, AstNo
6736 return ir_build_anyframe_type(ag, scope, node, payload_type_value);6725 return ir_build_anyframe_type(ag, scope, node, payload_type_value);
6737}6726}
67386727
6739static Stage1ZirInst *astgen_undefined_literal(Stage1AstGen *ag, Scope *scope, AstNode *node) {
6740 assert(node->type == NodeTypeUndefinedLiteral);
6741 return ir_build_const_undefined(ag, scope, node);
6742}
6743
6744static Stage1ZirInst *astgen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node) {6728static Stage1ZirInst *astgen_asm_expr(Stage1AstGen *ag, Scope *scope, AstNode *node) {
6745 assert(node->type == NodeTypeAsmExpr);6729 assert(node->type == NodeTypeAsmExpr);
6746 AstNodeAsmExpr *asm_expr = &node->data.asm_expr;6730 AstNodeAsmExpr *asm_expr = &node->data.asm_expr;
...@@ -8063,8 +8047,6 @@ static Stage1ZirInst *astgen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *sc...@@ -8063,8 +8047,6 @@ static Stage1ZirInst *astgen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *sc
8063 Stage1ZirInst *load_ptr = ir_build_load_ptr(ag, scope, node, unwrapped_ptr);8047 Stage1ZirInst *load_ptr = ir_build_load_ptr(ag, scope, node, unwrapped_ptr);
8064 return ir_expr_wrap(ag, scope, load_ptr, result_loc);8048 return ir_expr_wrap(ag, scope, load_ptr, result_loc);
8065 }8049 }
8066 case NodeTypeBoolLiteral:
8067 return ir_lval_wrap(ag, scope, astgen_bool_literal(ag, scope, node), lval, result_loc);
8068 case NodeTypeArrayType:8050 case NodeTypeArrayType:
8069 return ir_lval_wrap(ag, scope, astgen_array_type(ag, scope, node), lval, result_loc);8051 return ir_lval_wrap(ag, scope, astgen_array_type(ag, scope, node), lval, result_loc);
8070 case NodeTypePointerType:8052 case NodeTypePointerType:
...@@ -8073,12 +8055,8 @@ static Stage1ZirInst *astgen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *sc...@@ -8073,12 +8055,8 @@ static Stage1ZirInst *astgen_node_raw(Stage1AstGen *ag, AstNode *node, Scope *sc
8073 return ir_lval_wrap(ag, scope, astgen_anyframe_type(ag, scope, node), lval, result_loc);8055 return ir_lval_wrap(ag, scope, astgen_anyframe_type(ag, scope, node), lval, result_loc);
8074 case NodeTypeStringLiteral:8056 case NodeTypeStringLiteral:
8075 return ir_lval_wrap(ag, scope, astgen_string_literal(ag, scope, node), lval, result_loc);8057 return ir_lval_wrap(ag, scope, astgen_string_literal(ag, scope, node), lval, result_loc);
8076 case NodeTypeUndefinedLiteral:
8077 return ir_lval_wrap(ag, scope, astgen_undefined_literal(ag, scope, node), lval, result_loc);
8078 case NodeTypeAsmExpr:8058 case NodeTypeAsmExpr:
8079 return ir_lval_wrap(ag, scope, astgen_asm_expr(ag, scope, node), lval, result_loc);8059 return ir_lval_wrap(ag, scope, astgen_asm_expr(ag, scope, node), lval, result_loc);
8080 case NodeTypeNullLiteral:
8081 return ir_lval_wrap(ag, scope, astgen_null_literal(ag, scope, node), lval, result_loc);
8082 case NodeTypeIfErrorExpr:8060 case NodeTypeIfErrorExpr:
8083 return astgen_if_err_expr(ag, scope, node, lval, result_loc);8061 return astgen_if_err_expr(ag, scope, node, lval, result_loc);
8084 case NodeTypeIfOptional:8062 case NodeTypeIfOptional:
...@@ -8163,14 +8141,11 @@ static Stage1ZirInst *astgen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *...@@ -8163,14 +8141,11 @@ static Stage1ZirInst *astgen_node_extra(Stage1AstGen *ag, AstNode *node, Scope *
8163 case NodeTypeWhileExpr:8141 case NodeTypeWhileExpr:
8164 case NodeTypeForExpr:8142 case NodeTypeForExpr:
8165 case NodeTypeReturnExpr:8143 case NodeTypeReturnExpr:
8166 case NodeTypeBoolLiteral:
8167 case NodeTypeArrayType:8144 case NodeTypeArrayType:
8168 case NodeTypePointerType:8145 case NodeTypePointerType:
8169 case NodeTypeAnyFrameType:8146 case NodeTypeAnyFrameType:
8170 case NodeTypeStringLiteral:8147 case NodeTypeStringLiteral:
8171 case NodeTypeUndefinedLiteral:
8172 case NodeTypeAsmExpr:8148 case NodeTypeAsmExpr:
8173 case NodeTypeNullLiteral:
8174 case NodeTypeIfErrorExpr:8149 case NodeTypeIfErrorExpr:
8175 case NodeTypeIfOptional:8150 case NodeTypeIfOptional:
8176 case NodeTypeSwitchExpr:8151 case NodeTypeSwitchExpr:
src/stage1/parser.cpp-31
...@@ -1704,32 +1704,10 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {...@@ -1704,32 +1704,10 @@ static AstNode *ast_parse_primary_type_expr(ParseContext *pc) {
1704 return res;1704 return res;
1705 }1705 }
17061706
1707 TokenIndex false_token = eat_token_if(pc, TokenIdKeywordFalse);
1708 if (false_token != 0) {
1709 AstNode *res = ast_create_node(pc, NodeTypeBoolLiteral, false_token);
1710 res->data.bool_literal.value = false;
1711 return res;
1712 }
1713
1714 TokenIndex null = eat_token_if(pc, TokenIdKeywordNull);
1715 if (null != 0)
1716 return ast_create_node(pc, NodeTypeNullLiteral, null);
1717
1718 TokenIndex anyframe = eat_token_if(pc, TokenIdKeywordAnyFrame);1707 TokenIndex anyframe = eat_token_if(pc, TokenIdKeywordAnyFrame);
1719 if (anyframe != 0)1708 if (anyframe != 0)
1720 return ast_create_node(pc, NodeTypeAnyFrameType, anyframe);1709 return ast_create_node(pc, NodeTypeAnyFrameType, anyframe);
17211710
1722 TokenIndex true_token = eat_token_if(pc, TokenIdKeywordTrue);
1723 if (true_token != 0) {
1724 AstNode *res = ast_create_node(pc, NodeTypeBoolLiteral, true_token);
1725 res->data.bool_literal.value = true;
1726 return res;
1727 }
1728
1729 TokenIndex undefined = eat_token_if(pc, TokenIdKeywordUndefined);
1730 if (undefined != 0)
1731 return ast_create_node(pc, NodeTypeUndefinedLiteral, undefined);
1732
1733 TokenIndex unreachable = eat_token_if(pc, TokenIdKeywordUnreachable);1711 TokenIndex unreachable = eat_token_if(pc, TokenIdKeywordUnreachable);
1734 if (unreachable != 0)1712 if (unreachable != 0)
1735 return ast_create_node(pc, NodeTypeUnreachable, unreachable);1713 return ast_create_node(pc, NodeTypeUnreachable, unreachable);
...@@ -3094,15 +3072,6 @@ void ast_visit_node_children(AstNode *node, void (*visit)(AstNode **, void *cont...@@ -3094,15 +3072,6 @@ void ast_visit_node_children(AstNode *node, void (*visit)(AstNode **, void *cont
3094 case NodeTypeUsingNamespace:3072 case NodeTypeUsingNamespace:
3095 visit_field(&node->data.using_namespace.expr, visit, context);3073 visit_field(&node->data.using_namespace.expr, visit, context);
3096 break;3074 break;
3097 case NodeTypeBoolLiteral:
3098 // none
3099 break;
3100 case NodeTypeNullLiteral:
3101 // none
3102 break;
3103 case NodeTypeUndefinedLiteral:
3104 // none
3105 break;
3106 case NodeTypeIfBoolExpr:3075 case NodeTypeIfBoolExpr:
3107 visit_field(&node->data.if_bool_expr.condition, visit, context);3076 visit_field(&node->data.if_bool_expr.condition, visit, context);
3108 visit_field(&node->data.if_bool_expr.then_block, visit, context);3077 visit_field(&node->data.if_bool_expr.then_block, visit, context);
src/stage1/tokenizer.cpp-8
...@@ -163,7 +163,6 @@ static const struct ZigKeyword zig_keywords[] = {...@@ -163,7 +163,6 @@ static const struct ZigKeyword zig_keywords[] = {
163 {"error", TokenIdKeywordError},163 {"error", TokenIdKeywordError},
164 {"export", TokenIdKeywordExport},164 {"export", TokenIdKeywordExport},
165 {"extern", TokenIdKeywordExtern},165 {"extern", TokenIdKeywordExtern},
166 {"false", TokenIdKeywordFalse},
167 {"fn", TokenIdKeywordFn},166 {"fn", TokenIdKeywordFn},
168 {"for", TokenIdKeywordFor},167 {"for", TokenIdKeywordFor},
169 {"if", TokenIdKeywordIf},168 {"if", TokenIdKeywordIf},
...@@ -171,7 +170,6 @@ static const struct ZigKeyword zig_keywords[] = {...@@ -171,7 +170,6 @@ static const struct ZigKeyword zig_keywords[] = {
171 {"noalias", TokenIdKeywordNoAlias},170 {"noalias", TokenIdKeywordNoAlias},
172 {"noinline", TokenIdKeywordNoInline},171 {"noinline", TokenIdKeywordNoInline},
173 {"nosuspend", TokenIdKeywordNoSuspend},172 {"nosuspend", TokenIdKeywordNoSuspend},
174 {"null", TokenIdKeywordNull},
175 {"opaque", TokenIdKeywordOpaque},173 {"opaque", TokenIdKeywordOpaque},
176 {"or", TokenIdKeywordOr},174 {"or", TokenIdKeywordOr},
177 {"orelse", TokenIdKeywordOrElse},175 {"orelse", TokenIdKeywordOrElse},
...@@ -185,9 +183,7 @@ static const struct ZigKeyword zig_keywords[] = {...@@ -185,9 +183,7 @@ static const struct ZigKeyword zig_keywords[] = {
185 {"switch", TokenIdKeywordSwitch},183 {"switch", TokenIdKeywordSwitch},
186 {"test", TokenIdKeywordTest},184 {"test", TokenIdKeywordTest},
187 {"threadlocal", TokenIdKeywordThreadLocal},185 {"threadlocal", TokenIdKeywordThreadLocal},
188 {"true", TokenIdKeywordTrue},
189 {"try", TokenIdKeywordTry},186 {"try", TokenIdKeywordTry},
190 {"undefined", TokenIdKeywordUndefined},
191 {"union", TokenIdKeywordUnion},187 {"union", TokenIdKeywordUnion},
192 {"unreachable", TokenIdKeywordUnreachable},188 {"unreachable", TokenIdKeywordUnreachable},
193 {"usingnamespace", TokenIdKeywordUsingNamespace},189 {"usingnamespace", TokenIdKeywordUsingNamespace},
...@@ -1563,7 +1559,6 @@ const char * token_name(TokenId id) {...@@ -1563,7 +1559,6 @@ const char * token_name(TokenId id) {
1563 case TokenIdKeywordError: return "error";1559 case TokenIdKeywordError: return "error";
1564 case TokenIdKeywordExport: return "export";1560 case TokenIdKeywordExport: return "export";
1565 case TokenIdKeywordExtern: return "extern";1561 case TokenIdKeywordExtern: return "extern";
1566 case TokenIdKeywordFalse: return "false";
1567 case TokenIdKeywordFn: return "fn";1562 case TokenIdKeywordFn: return "fn";
1568 case TokenIdKeywordFor: return "for";1563 case TokenIdKeywordFor: return "for";
1569 case TokenIdKeywordIf: return "if";1564 case TokenIdKeywordIf: return "if";
...@@ -1571,7 +1566,6 @@ const char * token_name(TokenId id) {...@@ -1571,7 +1566,6 @@ const char * token_name(TokenId id) {
1571 case TokenIdKeywordNoAlias: return "noalias";1566 case TokenIdKeywordNoAlias: return "noalias";
1572 case TokenIdKeywordNoInline: return "noinline";1567 case TokenIdKeywordNoInline: return "noinline";
1573 case TokenIdKeywordNoSuspend: return "nosuspend";1568 case TokenIdKeywordNoSuspend: return "nosuspend";
1574 case TokenIdKeywordNull: return "null";
1575 case TokenIdKeywordOpaque: return "opaque";1569 case TokenIdKeywordOpaque: return "opaque";
1576 case TokenIdKeywordOr: return "or";1570 case TokenIdKeywordOr: return "or";
1577 case TokenIdKeywordOrElse: return "orelse";1571 case TokenIdKeywordOrElse: return "orelse";
...@@ -1583,9 +1577,7 @@ const char * token_name(TokenId id) {...@@ -1583,9 +1577,7 @@ const char * token_name(TokenId id) {
1583 case TokenIdKeywordSwitch: return "switch";1577 case TokenIdKeywordSwitch: return "switch";
1584 case TokenIdKeywordTest: return "test";1578 case TokenIdKeywordTest: return "test";
1585 case TokenIdKeywordThreadLocal: return "threadlocal";1579 case TokenIdKeywordThreadLocal: return "threadlocal";
1586 case TokenIdKeywordTrue: return "true";
1587 case TokenIdKeywordTry: return "try";1580 case TokenIdKeywordTry: return "try";
1588 case TokenIdKeywordUndefined: return "undefined";
1589 case TokenIdKeywordUnion: return "union";1581 case TokenIdKeywordUnion: return "union";
1590 case TokenIdKeywordUnreachable: return "unreachable";1582 case TokenIdKeywordUnreachable: return "unreachable";
1591 case TokenIdKeywordUsingNamespace: return "usingnamespace";1583 case TokenIdKeywordUsingNamespace: return "usingnamespace";
src/stage1/tokenizer.hpp-4
...@@ -72,7 +72,6 @@ enum TokenId : uint8_t {...@@ -72,7 +72,6 @@ enum TokenId : uint8_t {
72 TokenIdKeywordError,72 TokenIdKeywordError,
73 TokenIdKeywordExport,73 TokenIdKeywordExport,
74 TokenIdKeywordExtern,74 TokenIdKeywordExtern,
75 TokenIdKeywordFalse,
76 TokenIdKeywordFn,75 TokenIdKeywordFn,
77 TokenIdKeywordFor,76 TokenIdKeywordFor,
78 TokenIdKeywordIf,77 TokenIdKeywordIf,
...@@ -81,7 +80,6 @@ enum TokenId : uint8_t {...@@ -81,7 +80,6 @@ enum TokenId : uint8_t {
81 TokenIdKeywordLinkSection,80 TokenIdKeywordLinkSection,
82 TokenIdKeywordNoAlias,81 TokenIdKeywordNoAlias,
83 TokenIdKeywordNoSuspend,82 TokenIdKeywordNoSuspend,
84 TokenIdKeywordNull,
85 TokenIdKeywordOpaque,83 TokenIdKeywordOpaque,
86 TokenIdKeywordOr,84 TokenIdKeywordOr,
87 TokenIdKeywordOrElse,85 TokenIdKeywordOrElse,
...@@ -94,9 +92,7 @@ enum TokenId : uint8_t {...@@ -94,9 +92,7 @@ enum TokenId : uint8_t {
94 TokenIdKeywordSwitch,92 TokenIdKeywordSwitch,
95 TokenIdKeywordTest,93 TokenIdKeywordTest,
96 TokenIdKeywordThreadLocal,94 TokenIdKeywordThreadLocal,
97 TokenIdKeywordTrue,
98 TokenIdKeywordTry,95 TokenIdKeywordTry,
99 TokenIdKeywordUndefined,
100 TokenIdKeywordUnion,96 TokenIdKeywordUnion,
101 TokenIdKeywordUnreachable,97 TokenIdKeywordUnreachable,
102 TokenIdKeywordUsingNamespace,98 TokenIdKeywordUsingNamespace,