diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index ec0cb7dc79..947f7f6dd8 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -834,10 +834,12 @@ pub fn (c mut Checker) expr(node ast.Expr) table.Type { it.expr_type = c.expr(it.expr) return table.string_type } - else {} - // println('checker.expr(): unhandled node') - // TODO: find nil string bug triggered with typeof - // println('checker.expr(): unhandled node (${typeof(node)})') + else { + tnode := typeof(node) + if tnode != 'unknown v.ast.Expr' { + println('checker.expr(): unhandled node with typeof(`${tnode}`)') + } + } } return table.void_type } diff --git a/vlib/v/parser/fn.v b/vlib/v/parser/fn.v index 4a82632bd0..a0c702ab8c 100644 --- a/vlib/v/parser/fn.v +++ b/vlib/v/parser/fn.v @@ -23,6 +23,10 @@ pub fn (p mut Parser) call_expr(is_c bool, mod string) ast.CallExpr { name: 'err' typ: table.string_type }) + p.scope.register('errcode', ast.Var{ + name: 'errcode' + typ: table.int_type + }) or_stmts = p.parse_block_no_scope() p.close_scope() } diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 2f77cda034..82326aa344 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -965,6 +965,10 @@ fn (p mut Parser) dot_expr(left ast.Expr) ast.Expr { if p.tok.kind == .key_orelse { p.next() p.open_scope() + p.scope.register('errcode', ast.Var{ + name: 'errcode' + typ: table.int_type + }) p.scope.register('err', ast.Var{ name: 'err' typ: table.string_type