parser: anon fn arg scope fix

pull/4550/head
joe-conigliaro 2020-04-22 21:11:58 +10:00
parent 830b1807c1
commit 80a4fbf0be
No known key found for this signature in database
GPG Key ID: C12F7136C08206F1
1 changed files with 3 additions and 4 deletions

View File

@ -83,15 +83,14 @@ pub fn (mut p Parser) call_args() []ast.CallArg {
} }
fn (mut p Parser) fn_decl() ast.FnDecl { fn (mut p Parser) fn_decl() ast.FnDecl {
// p.table.clear_vars()
start_pos := p.tok.position() start_pos := p.tok.position()
p.open_scope()
is_deprecated := p.attr == 'deprecated' is_deprecated := p.attr == 'deprecated'
is_pub := p.tok.kind == .key_pub is_pub := p.tok.kind == .key_pub
if is_pub { if is_pub {
p.next() p.next()
} }
p.check(.key_fn) p.check(.key_fn)
p.open_scope()
// C. || JS. // C. || JS.
is_c := p.tok.kind == .name && p.tok.lit == 'C' is_c := p.tok.kind == .name && p.tok.lit == 'C'
is_js := p.tok.kind == .name && p.tok.lit == 'JS' is_js := p.tok.kind == .name && p.tok.lit == 'JS'
@ -237,8 +236,8 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
fn (mut p Parser) anon_fn() ast.AnonFn { fn (mut p Parser) anon_fn() ast.AnonFn {
pos := p.tok.position() pos := p.tok.position()
// p.open_scope()
p.check(.key_fn) p.check(.key_fn)
p.open_scope()
// TODO generics // TODO generics
args, is_variadic := p.fn_args() args, is_variadic := p.fn_args()
for arg in args { for arg in args {
@ -256,7 +255,7 @@ fn (mut p Parser) anon_fn() ast.AnonFn {
if p.tok.kind == .lcbr { if p.tok.kind == .lcbr {
stmts = p.parse_block() stmts = p.parse_block()
} }
// p.close_scope() p.close_scope()
func := table.Fn{ func := table.Fn{
args: args args: args
is_variadic: is_variadic is_variadic: is_variadic