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