aboutsummaryrefslogtreecommitdiff
path: root/gcc/m2
diff options
context:
space:
mode:
authorGaius Mulley <gaiusmod2@gmail.com>2023-06-07 01:21:19 +0100
committerGaius Mulley <gaiusmod2@gmail.com>2023-06-07 01:21:19 +0100
commit29c82c6ca929e0f5eccfe038dea71177d814c6b7 (patch)
tree6b65112e9a6715a0a417e0c01c1517a914c8335b /gcc/m2
parent4f0d4825fa489cc1875c94ab405a800a8d76e506 (diff)
downloadgcc-29c82c6ca929e0f5eccfe038dea71177d814c6b7.zip
gcc-29c82c6ca929e0f5eccfe038dea71177d814c6b7.tar.gz
gcc-29c82c6ca929e0f5eccfe038dea71177d814c6b7.tar.bz2
PR modula2/110019 Reported line numbers off by 1 when cpp invoked.
Fix off by one in m2.flex when the line number is set via cpp. gcc/m2/ChangeLog: PR modula2/110019 * gm2-compiler/SymbolKey.mod (SearchAndDo): Reformatted. (ForeachNodeDo): Reformatted. * gm2-compiler/SymbolTable.mod (AddListify): Join list with "," or "and" if more than one word is in the list. * m2.flex: Remove -1 from atoi(yytext) line number. gcc/testsuite/ChangeLog: PR modula2/110019 * gm2/cpp/fail/cpp-fail.exp: New test. * gm2/cpp/fail/foocpp.mod: New test. Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
Diffstat (limited to 'gcc/m2')
-rw-r--r--gcc/m2/gm2-compiler/SymbolKey.mod8
-rw-r--r--gcc/m2/gm2-compiler/SymbolTable.mod14
-rw-r--r--gcc/m2/m2.flex2
3 files changed, 14 insertions, 10 deletions
diff --git a/gcc/m2/gm2-compiler/SymbolKey.mod b/gcc/m2/gm2-compiler/SymbolKey.mod
index b9fa87f..fa11266 100644
--- a/gcc/m2/gm2-compiler/SymbolKey.mod
+++ b/gcc/m2/gm2-compiler/SymbolKey.mod
@@ -312,7 +312,7 @@ END SearchForAny ;
PROCEDURE ForeachNodeDo (t: SymbolTree; P: PerformOperation) ;
BEGIN
- SearchAndDo(t^.Left, P)
+ SearchAndDo (t^.Left, P)
END ForeachNodeDo ;
@@ -327,9 +327,9 @@ BEGIN
IF t#NIL
THEN
WITH t^ DO
- SearchAndDo(Right, P) ;
- P(KeySym) ;
- SearchAndDo(Left, P)
+ SearchAndDo (Right, P) ;
+ P (KeySym) ;
+ SearchAndDo (Left, P)
END
END
END SearchAndDo ;
diff --git a/gcc/m2/gm2-compiler/SymbolTable.mod b/gcc/m2/gm2-compiler/SymbolTable.mod
index f43a734..1ea5fee 100644
--- a/gcc/m2/gm2-compiler/SymbolTable.mod
+++ b/gcc/m2/gm2-compiler/SymbolTable.mod
@@ -9028,12 +9028,16 @@ VAR
PROCEDURE AddListify (sym: CARDINAL) ;
BEGIN
INC (ListifyWordCount) ;
- IF ListifyWordCount = ListifyTotal
+ (* printf ("AddListify: ListifyWordCount = %d, ListifyTotal = %d\n",
+ ListifyWordCount, ListifyTotal) ; *)
+ IF ListifyWordCount > 1
THEN
- ListifySentance := ConCat (ListifySentance, Mark (InitString (" and ")))
- ELSIF ListifyWordCount > 1
- THEN
- ListifySentance := ConCat (ListifySentance, Mark (InitString (", ")))
+ IF ListifyWordCount = ListifyTotal
+ THEN
+ ListifySentance := ConCat (ListifySentance, Mark (InitString (" and ")))
+ ELSE
+ ListifySentance := ConCat (ListifySentance, Mark (InitString (", ")))
+ END
END ;
ListifySentance := ConCat (ListifySentance,
Mark (InitStringCharStar (KeyToCharStar (GetSymName (sym)))))
diff --git a/gcc/m2/m2.flex b/gcc/m2/m2.flex
index 0f23a35..0e6b52c 100644
--- a/gcc/m2/m2.flex
+++ b/gcc/m2/m2.flex
@@ -163,7 +163,7 @@ extern void yylex (void);
^\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ BEGIN LINE0; }
\n\#.* { consumeLine(); /* printf("found: %s\n", currentLine->linebuf); */ BEGIN LINE0; }
<LINE0>\#[ \t]* { updatepos(); }
-<LINE0>[0-9]+[ \t]*\" { updatepos(); lineno=atoi(yytext)-1; BEGIN LINE1; }
+<LINE0>[0-9]+[ \t]*\" { updatepos(); lineno=atoi(yytext); BEGIN LINE1; }
<LINE0>\n { m2flex_M2Error("missing initial quote after #line directive"); resetpos(); BEGIN INITIAL; }
<LINE0>[^\n]
<LINE1>[^\"\n]+ { m2flex_M2Error("missing final quote after #line directive"); resetpos(); BEGIN INITIAL; }