parser: make `v := f(v)' an undefined variable error (#8634)
							parent
							
								
									03d5bfbc95
								
							
						
					
					
						commit
						8ae23cd89e
					
				|  | @ -0,0 +1,7 @@ | ||||||
|  | vlib/v/checker/tests/assign_expr_undefined_err_h.vv:6:9: error: undefined variable: `n` | ||||||
|  |     4 |  | ||||||
|  |     5 | fn main() { | ||||||
|  |     6 |     n := f(n) | ||||||
|  |       |            ^ | ||||||
|  |     7 |     println(n) | ||||||
|  |     8 | } | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fn f(i int) int { | ||||||
|  | 	return i | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  | 	n := f(n) | ||||||
|  | 	println(n) | ||||||
|  | } | ||||||
|  | @ -25,6 +25,9 @@ fn (mut p Parser) check_undefined_variables(exprs []ast.Expr, val ast.Expr) ? { | ||||||
| 		} | 		} | ||||||
| 		ast.CallExpr { | 		ast.CallExpr { | ||||||
| 			p.check_undefined_variables(exprs, val.left) ? | 			p.check_undefined_variables(exprs, val.left) ? | ||||||
|  | 			for arg in val.args { | ||||||
|  | 				p.check_undefined_variables(exprs, arg.expr) ? | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 		ast.InfixExpr { | 		ast.InfixExpr { | ||||||
| 			p.check_undefined_variables(exprs, val.left) ? | 			p.check_undefined_variables(exprs, val.left) ? | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue