From b7cc3a4f423ed6ed98cbf87a408fe80335e4ab9b Mon Sep 17 00:00:00 2001 From: Chimrod <> Date: Mon, 8 Apr 2024 10:27:14 +0200 Subject: Handle syntax error in string escape mecamism --- lib/qparser/analyzer.ml | 8 ++++++-- test/syntax_error.ml | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/qparser/analyzer.ml b/lib/qparser/analyzer.ml index 7d9b7d2..ca2b54f 100644 --- a/lib/qparser/analyzer.ml +++ b/lib/qparser/analyzer.ml @@ -34,11 +34,15 @@ let rec parse : { code = Interpreter.Custom message; start_pos; end_pos } in Error err - | Lexer.UnclosedQuote -> + | Lexer.UnclosedQuote | Lex_state.Out_of_context -> let start_pos, end_pos = Lexbuf.positions l in let err = IncrementalParser. - { code = Interpreter.Custom "Unclosed text"; start_pos; end_pos } + { + code = Interpreter.Custom "Unclosed string"; + start_pos; + end_pos; + } in Error err in diff --git a/test/syntax_error.ml b/test/syntax_error.ml index 5587908..2187e89 100644 --- a/test/syntax_error.ml +++ b/test/syntax_error.ml @@ -92,7 +92,7 @@ let missing_ampersand () = let unclose_comment () = _test_instruction {| ! that's it|} - { level = Error; loc = _position; message = "Unclosed text" } + { level = Error; loc = _position; message = "Unclosed string" } let syntax_error () = _test_instruction {|*clr $ cla|} @@ -259,6 +259,13 @@ let unknown_operator () = message = "Unknown operator. Did you write '+ =' instead of '+=' ?"; } +let nested_string_mess () = + _test_instruction + {| + '<>' +|} + { level = Error; loc = _position; message = "Unclosed string" } + let test = ( "Syntax Errors", [ @@ -280,4 +287,5 @@ let test = Alcotest.test_case "(()" `Quick unclosed_paren2; Alcotest.test_case "act: else" `Quick unclosed_act; Alcotest.test_case "+ =" `Quick unknown_operator; + Alcotest.test_case "'<<''>>'" `Quick nested_string_mess; ] ) -- cgit v1.2.3