瀏覽代碼

Allow for `when x in y {` (minor oversight in syntax)

gingerBill 1 年之前
父節點
當前提交
906afa4154
共有 2 個文件被更改,包括 8 次插入0 次删除
  1. 5 0
      core/odin/parser/parser.odin
  2. 3 0
      src/parser.cpp

+ 5 - 0
core/odin/parser/parser.odin

@@ -689,7 +689,12 @@ parse_when_stmt :: proc(p: ^Parser) -> ^ast.When_Stmt {
 
 	prev_level := p.expr_level
 	p.expr_level = -1
+	prev_allow_in_expr := p.allow_in_expr
+	p.allow_in_expr = true
+
 	cond = parse_expr(p, false)
+
+	p.allow_in_expr = prev_allow_in_expr
 	p.expr_level = prev_level
 
 	if cond == nil {

+ 3 - 0
src/parser.cpp

@@ -4573,9 +4573,12 @@ gb_internal Ast *parse_when_stmt(AstFile *f) {
 
 	isize prev_level = f->expr_level;
 	f->expr_level = -1;
+	bool prev_allow_in_expr = f->allow_in_expr;
+	f->allow_in_expr = true;
 
 	cond = parse_expr(f, false);
 
+	f->allow_in_expr = prev_allow_in_expr;
 	f->expr_level = prev_level;
 
 	if (cond == nullptr) {