From c8a343f9f8602f4e6c1b385ddbeb58572234d447 Mon Sep 17 00:00:00 2001 From: Gaius Mulley Date: Sat, 23 Mar 2024 15:49:23 +0000 Subject: [PATCH] PR modula2/114443 missing quote cause ICE This patch inserts a missing quotation at the end of a line if required (after an appropiate error message is generated). gcc/m2/ChangeLog: PR modula2/114443 * m2.flex: Call AddTokCharStar with a stringtok if end of line is reached without a closing quote. gcc/testsuite/ChangeLog: PR modula2/114443 * gm2/pim/fail/missingquote.mod: New test. Signed-off-by: Gaius Mulley --- gcc/m2/m2.flex | 2 ++ gcc/testsuite/gm2/pim/fail/missingquote.mod | 8 ++++++++ 2 files changed, 10 insertions(+) create mode 100644 gcc/testsuite/gm2/pim/fail/missingquote.mod diff --git a/gcc/m2/m2.flex b/gcc/m2/m2.flex index f8f5ce64ad36..e8ee383878e4 100644 --- a/gcc/m2/m2.flex +++ b/gcc/m2/m2.flex @@ -188,12 +188,14 @@ extern void yylex (void); \"[^\"\n]*\" { updatepos(); M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); return; } \"[^\"\n]*$ { updatepos(); m2flex_M2Error("missing terminating quote, \""); + M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); resetpos(); return; } '[^'\n]*' { updatepos(); M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); return; } '[^'\n]*$ { updatepos(); m2flex_M2Error("missing terminating quote, '"); + M2LexBuf_AddTokCharStar(M2Reserved_stringtok, yytext); resetpos(); return; } diff --git a/gcc/testsuite/gm2/pim/fail/missingquote.mod b/gcc/testsuite/gm2/pim/fail/missingquote.mod new file mode 100644 index 000000000000..e78f0e339ac9 --- /dev/null +++ b/gcc/testsuite/gm2/pim/fail/missingquote.mod @@ -0,0 +1,8 @@ +MODULE missingquote ; + +CONST + MyConst = 'foobar + +BEGIN + +END missingquote. -- 2.47.2