This commit is contained in:
Laytan Laats
2024-07-18 21:06:37 +02:00
parent b3d798cb76
commit 2b6a926bb6
+6 -3
View File
@@ -2179,23 +2179,26 @@ parse_inlining_operand :: proc(p: ^Parser, lhs: bool, tok: tokenizer.Token) -> ^
} }
} }
if expr != nil {
#partial switch e in ast.strip_or_return_expr(expr).derived_expr { #partial switch e in ast.strip_or_return_expr(expr).derived_expr {
case ^ast.Proc_Lit: case ^ast.Proc_Lit:
if e.inlining != .None && e.inlining != pi { if e.inlining != .None && e.inlining != pi {
error(p, expr.pos, "both 'inline' and 'no_inline' cannot be applied to a procedure literal") error(p, expr.pos, "both 'inline' and 'no_inline' cannot be applied to a procedure literal")
} }
e.inlining = pi e.inlining = pi
return expr
case ^ast.Call_Expr: case ^ast.Call_Expr:
if e.inlining != .None && e.inlining != pi { if e.inlining != .None && e.inlining != pi {
error(p, expr.pos, "both 'inline' and 'no_inline' cannot be applied to a procedure call") error(p, expr.pos, "both 'inline' and 'no_inline' cannot be applied to a procedure call")
} }
e.inlining = pi e.inlining = pi
case: return expr
}
}
error(p, tok.pos, "'%s' must be followed by a procedure literal or call", tok.text) error(p, tok.pos, "'%s' must be followed by a procedure literal or call", tok.text)
return ast.new(ast.Bad_Expr, tok.pos, expr) return ast.new(ast.Bad_Expr, tok.pos, expr)
} }
return expr
}
parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr {
#partial switch p.curr_tok.kind { #partial switch p.curr_tok.kind {