comptime: fix app.$action() or {}

pull/1427/head^2
Alexander Medvednikov 2019-08-02 05:20:18 +02:00
parent f81562ee7e
commit 8ecd62e56f
2 changed files with 6 additions and 3 deletions

View File

@ -197,12 +197,15 @@ fn (p mut Parser) comptime_method_call(typ Type) {
p.cgen.cur_line = '' p.cgen.cur_line = ''
p.check(.dollar) p.check(.dollar)
var := p.check_name() var := p.check_name()
for method in typ.methods { for i, method in typ.methods {
if method.typ != 'void' { if method.typ != 'void' {
continue continue
} }
receiver := method.args[0] receiver := method.args[0]
amp := if receiver.is_mut { '&' } else { '' } amp := if receiver.is_mut { '&' } else { '' }
if i > 0 {
p.gen(' else ')
}
p.gen('if ( string_eq($var, _STR("$method.name")) ) ${typ.name}_$method.name($amp $p.expr_var.name);') p.gen('if ( string_eq($var, _STR("$method.name")) ) ${typ.name}_$method.name($amp $p.expr_var.name);')
} }
p.check(.lpar) p.check(.lpar)

View File

@ -1016,7 +1016,7 @@ fn (p mut Parser) close_scope() {
// Move back `var_idx` (pointer to the end of the array) till we reach the previous scope level. // Move back `var_idx` (pointer to the end of the array) till we reach the previous scope level.
// This effectivly deletes (closes) current scope. // This effectivly deletes (closes) current scope.
mut i := p.cur_fn.var_idx - 1 mut i := p.cur_fn.var_idx - 1
for; i >= 0; i-- { for ; i >= 0; i-- {
v := p.cur_fn.local_vars[i] v := p.cur_fn.local_vars[i]
if v.scope_level != p.cur_fn.scope_level { if v.scope_level != p.cur_fn.scope_level {
// println('breaking. "$v.name" v.scope_level=$v.scope_level') // println('breaking. "$v.name" v.scope_level=$v.scope_level')
@ -1030,7 +1030,7 @@ fn (p mut Parser) close_scope() {
p.genln('v_string_free($v.name); // close_scope free') p.genln('v_string_free($v.name); // close_scope free')
} }
else if v.ptr { else if v.ptr {
p.genln('free($v.name); // close_scope free') //p.genln('free($v.name); // close_scope free')
} }
} }