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-Tag: prereleases/libstdc++-3.0.95~3031 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=312b7c9dd9f2cc098788d5218e856a83ac0c22ae;p=thirdparty%2Fgcc.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 949dd82bbf05..dd1be64de8e7 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 7a92d9d0caf8..28b2323ed994 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 55f597fe5ec4..f2354d4a76e6 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 000000000000..dc779ed894ab --- /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 +};