From f6947d111b7dc33dfd2b96f341db0bf679d8d81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Uwe=20Kr=C3=BCger?= <45282134+UweKrueger@users.noreply.github.com> Date: Fri, 17 Jul 2020 10:31:35 +0200 Subject: [PATCH] parser: fix `sizeof(int)` when used as call arg for external function (#5855) --- vlib/v/parser/pratt.v | 3 +++ vlib/v/tests/sizeof_test.v | 6 ++++++ 2 files changed, 9 insertions(+) create mode 100644 vlib/v/tests/sizeof_test.v diff --git a/vlib/v/parser/pratt.v b/vlib/v/parser/pratt.v index 50f2deedde..1a5a1e0a1b 100644 --- a/vlib/v/parser/pratt.v +++ b/vlib/v/parser/pratt.v @@ -122,7 +122,10 @@ pub fn (mut p Parser) expr(precedence int) ast.Expr { pos: pos } } else { + save_expr_mod := p.expr_mod + p.expr_mod = '' sizeof_type := p.parse_type() + p.expr_mod = save_expr_mod node = ast.SizeOf{ is_type: true typ: sizeof_type diff --git a/vlib/v/tests/sizeof_test.v b/vlib/v/tests/sizeof_test.v new file mode 100644 index 0000000000..bea1d39360 --- /dev/null +++ b/vlib/v/tests/sizeof_test.v @@ -0,0 +1,6 @@ +import math + +fn test_sizeof() { + r := math.f32_from_bits(sizeof(int)) + assert r > 5.6e-45 && r < 5.7e-45 +}