From: Nathan Sidwell Date: Thu, 26 Jul 2001 08:15:43 +0000 (+0000) Subject: spew.c (yylex): Only copy the token's lineno, if it is non-zero. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=312b7c9dd9f2cc098788d5218e856a83ac0c22ae;p=gcc.git spew.c (yylex): Only copy the token's lineno, if it is non-zero. cp: * spew.c (yylex): Only copy the token's lineno, if it is non-zero. testsuite: * g++.old-deja/g++.other/lineno5.C: New test. From-SVN: r44391 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 949dd82bbf0..dd1be64de8e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2001-07-26 Nathan Sidwell + + * spew.c (yylex): Only copy the token's lineno, if it is + non-zero. + 2001-07-26 Nathan Sidwell PR c++/3624 diff --git a/gcc/cp/spew.c b/gcc/cp/spew.c index 7a92d9d0caf..28b2323ed99 100644 --- a/gcc/cp/spew.c +++ b/gcc/cp/spew.c @@ -833,8 +833,13 @@ yylex () got_object = NULL_TREE; yychar = yychr; - yylval = nth_token (0)->yylval; - lineno = nth_token (0)->lineno; + { + struct token *tok = nth_token (0); + + yylval = tok->yylval; + if (tok->lineno) + lineno = tok->lineno; + } #ifdef SPEW_DEBUG if (spew_debug) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 55f597fe5ec..f2354d4a76e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-07-26 Nathan Sidwell + + * g++.old-deja/g++.other/lineno5.C: New test. + 2001-07-26 Nathan Sidwell * g++.old-deja/g++.pt/crash68.C: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.other/lineno5.C b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C new file mode 100644 index 00000000000..dc779ed894a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/lineno5.C @@ -0,0 +1,19 @@ +// Build don't link: +// +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 25 Jul 2001 + +// Origin: johanb@DoCS.UU.SE +// Bug 3621. At the end of saved input, we'd set the lineno to +// zero. This would confusing things no end, if there was a subsequent +// error. + +namespace tmp { + typedef int B; + B b; +} + +class A { + public: + int kaka(tmp::B = b); // ERROR - no b in scope +};