diff --git a/compiler/fn.v b/compiler/fn.v index a9e73e5ddd..011c09dca0 100644 --- a/compiler/fn.v +++ b/compiler/fn.v @@ -88,6 +88,11 @@ fn (f mut Fn) register_var(v Var) { f.var_idx++ } +fn (f mut Fn) clear_vars() { + f.var_idx = 0 + f.local_vars = []Var +} + // vlib header file? fn (p mut Parser) is_sig() bool { return (p.build_mode == DEFAULT_MODE || p.build_mode == BUILD) && diff --git a/compiler/parser.v b/compiler/parser.v index bdab9b4308..2ac66ebbc1 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -249,6 +249,9 @@ fn (p mut Parser) parse() { } if p.cur_fn.name == '' { p.cur_fn = MainFn + if p.is_repl { + p.cur_fn.clear_vars() + } } start := p.cgen.lines.len p.statement(true)