From 3c83551dfe0e993233b1510223155b4f4edee4a8 Mon Sep 17 00:00:00 2001 From: spaceface777 Date: Sun, 8 Nov 2020 19:33:55 +0100 Subject: [PATCH] parser: fix treating JS fn calls as type casts (#6779) --- vlib/v/gen/js/tests/js.v | 1 + vlib/v/parser/parser.v | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/vlib/v/gen/js/tests/js.v b/vlib/v/gen/js/tests/js.v index d5e90467b6..f4e1d2c3fb 100644 --- a/vlib/v/gen/js/tests/js.v +++ b/vlib/v/gen/js/tests/js.v @@ -30,6 +30,7 @@ fn class(extends string, instanceof int) { fn main() { println('Hello from V.js!') println(JS.Math.atan2(1, 0)) + println(JS.eval("console.log('Hello!')")) mut a := 1 a *= 2 a += 3 diff --git a/vlib/v/parser/parser.v b/vlib/v/parser/parser.v index 1c444bec61..236d1fe0de 100644 --- a/vlib/v/parser/parser.v +++ b/vlib/v/parser/parser.v @@ -1062,7 +1062,7 @@ pub fn (mut p Parser) name_expr() ast.Expr { // if name in table.builtin_type_names { if (!known_var && (name in p.table.type_idxs || name_w_mod in p.table.type_idxs) && name !in ['C.stat', 'C.sigaction']) || - is_mod_cast || (!(name.len > 1 && name[0] == `C` && name[1] == `.`) && name[0].is_capital()) { + is_mod_cast || (language == .v && name[0].is_capital()) { // MainLetter(x) is *always* a cast, as long as it is not `C.` // TODO handle C.stat() start_pos := p.tok.position()