diff --git a/src/check_expr.cpp b/src/check_expr.cpp index ff1a4557d..1b44bdf55 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5932,11 +5932,6 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t return check_call_expr(c, o, node); case_end; - case_ast_node(ce, MacroCallExpr, node); - error(node, "Macro calls are not yet supported"); - return kind; - case_end; - case_ast_node(de, DerefExpr, node); check_expr_or_type(c, o, de->expr); if (o->mode == Addressing_Invalid) { diff --git a/src/parser.cpp b/src/parser.cpp index 7810c0e01..0c47bf360 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -210,13 +210,6 @@ AST_NODE_KIND(_ExprBegin, "", i32) \ Token close; \ Token ellipsis; \ }) \ - AST_NODE_KIND(MacroCallExpr, "macro call expression", struct { \ - AstNode * macro; \ - Token bang; \ - Array args; \ - Token open; \ - Token close; \ - }) \ AST_NODE_KIND(FieldValue, "field value", struct { Token eq; AstNode *field, *value; }) \ AST_NODE_KIND(TernaryExpr, "ternary expression", struct { AstNode *cond, *x, *y; }) \ AST_NODE_KIND(TypeAssertion, "type assertion", struct { AstNode *expr; Token dot; AstNode *type; }) \ @@ -567,7 +560,6 @@ Token ast_node_token(AstNode *node) { case AstNode_BinaryExpr: return ast_node_token(node->BinaryExpr.left); case AstNode_ParenExpr: return node->ParenExpr.open; case AstNode_CallExpr: return ast_node_token(node->CallExpr.proc); - case AstNode_MacroCallExpr: return ast_node_token(node->MacroCallExpr.macro); case AstNode_SelectorExpr: if (node->SelectorExpr.selector != nullptr) { return ast_node_token(node->SelectorExpr.selector); @@ -732,10 +724,6 @@ AstNode *clone_ast_node(gbAllocator a, AstNode *node) { n->CallExpr.proc = clone_ast_node(a, n->CallExpr.proc); n->CallExpr.args = clone_ast_node_array(a, n->CallExpr.args); break; - case AstNode_MacroCallExpr: - n->MacroCallExpr.macro = clone_ast_node(a, n->MacroCallExpr.macro); - n->MacroCallExpr.args = clone_ast_node_array(a, n->MacroCallExpr.args); - break; case AstNode_FieldValue: n->FieldValue.field = clone_ast_node(a, n->FieldValue.field); @@ -1049,16 +1037,6 @@ AstNode *ast_call_expr(AstFile *f, AstNode *proc, Array args, Token o return result; } -AstNode *ast_macro_call_expr(AstFile *f, AstNode *macro, Token bang, Array args, Token open, Token close) { - AstNode *result = make_ast_node(f, AstNode_MacroCallExpr); - result->MacroCallExpr.macro = macro; - result->MacroCallExpr.bang = bang; - result->MacroCallExpr.args = args; - result->MacroCallExpr.open = open; - result->MacroCallExpr.close = close; - return result; -} - AstNode *ast_selector_expr(AstFile *f, Token token, AstNode *expr, AstNode *selector) { AstNode *result = make_ast_node(f, AstNode_SelectorExpr); @@ -2634,36 +2612,6 @@ AstNode *parse_call_expr(AstFile *f, AstNode *operand) { return ast_call_expr(f, operand, args, open_paren, close_paren, ellipsis); } - -AstNode *parse_macro_call_expr(AstFile *f, AstNode *operand) { - Array args = make_ast_node_array(f); - Token bang, open_paren, close_paren; - - bang = expect_token(f, Token_Not); - - f->expr_level++; - open_paren = expect_token(f, Token_OpenParen); - - while (f->curr_token.kind != Token_CloseParen && - f->curr_token.kind != Token_EOF) { - if (f->curr_token.kind == Token_Comma) { - syntax_error(f->curr_token, "Expected an expression not a ,"); - } - - AstNode *arg = parse_expr(f, false); - array_add(&args, arg); - - if (!allow_token(f, Token_Comma)) { - break; - } - } - - f->expr_level--; - close_paren = expect_closing(f, Token_CloseParen, str_lit("argument list")); - - return ast_macro_call_expr(f, operand, bang, args, open_paren, close_paren); -} - AstNode *parse_atom_expr(AstFile *f, AstNode *operand, bool lhs) { if (operand == nullptr) { if (f->allow_type) return nullptr; @@ -2679,9 +2627,6 @@ AstNode *parse_atom_expr(AstFile *f, AstNode *operand, bool lhs) { case Token_OpenParen: operand = parse_call_expr(f, operand); break; - case Token_Not: - operand = parse_macro_call_expr(f, operand); - break; case Token_Period: { Token token = advance_token(f);