From 7227c1d508dfd916fee8c16de69130eec0b48b92 Mon Sep 17 00:00:00 2001 From: yuyi Date: Thu, 18 Aug 2022 16:55:38 +0800 Subject: [PATCH] scanner: fix false &&!ok1 (fix #7524) (#15458) --- vlib/v/scanner/scanner.v | 2 +- vlib/v/tests/scanner_and_and_not_test.v | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/scanner_and_and_not_test.v diff --git a/vlib/v/scanner/scanner.v b/vlib/v/scanner/scanner.v index 1c291fc07c..854402286d 100644 --- a/vlib/v/scanner/scanner.v +++ b/vlib/v/scanner/scanner.v @@ -849,7 +849,7 @@ fn (mut s Scanner) text_scan() token.Token { return s.new_token(.and_assign, '', 2) } afternextc := s.look_ahead(2) - if nextc == `&` && afternextc.is_space() { + if nextc == `&` && (afternextc.is_space() || afternextc == `!`) { s.pos++ return s.new_token(.and, '', 2) } diff --git a/vlib/v/tests/scanner_and_and_not_test.v b/vlib/v/tests/scanner_and_and_not_test.v new file mode 100644 index 0000000000..1f07123282 --- /dev/null +++ b/vlib/v/tests/scanner_and_and_not_test.v @@ -0,0 +1,5 @@ +fn test_and_and_not_parses() { + ok1 := true + ok2 := false && !ok1 + assert ok2 == false +}