From b446079db02a7cd2477f38ad3f418d1f1f7abf0b Mon Sep 17 00:00:00 2001 From: mmitchel Date: Tue, 20 Jul 2004 17:58:43 +0000 Subject: [PATCH] PR c++/16637 * parser.c (cp_parser_simple_type_specifier): Do not record usage of globally-qualified names. PR c++/16637 * g++.dg/parse/lookup4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84965 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 7 +++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/parse/lookup4.C | 7 +++++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/parse/lookup4.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c05d91ffb72..b4ebd70c931 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-07-20 Mark Mitchell + + PR c++/16637 + * parser.c (cp_parser_simple_type_specifier): Do not record usage + of globally-qualified names. + 2004-07-20 Kriang Lerdsuwanakij PR c++/16175 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c60158cc446..2cd9f510e9a 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -9459,6 +9459,7 @@ cp_parser_simple_type_specifier (cp_parser* parser, if (!(flags & CP_PARSER_FLAGS_NO_USER_DEFINED_TYPES)) { bool qualified_p; + bool global_p; /* Don't gobble tokens or issue error messages if this is an optional type-specifier. */ @@ -9466,8 +9467,9 @@ cp_parser_simple_type_specifier (cp_parser* parser, cp_parser_parse_tentatively (parser); /* Look for the optional `::' operator. */ - cp_parser_global_scope_opt (parser, - /*current_scope_valid_p=*/false); + global_p + = cp_parser_global_scope_opt (parser, + /*current_scope_valid_p=*/false); /* Look for the nested-name specifier. */ qualified_p = (cp_parser_nested_name_specifier_opt (parser, @@ -9499,6 +9501,7 @@ cp_parser_simple_type_specifier (cp_parser* parser, type = cp_parser_type_name (parser); /* Keep track of all name-lookups performed in class scopes. */ if (type + && !global_p && !qualified_p && TREE_CODE (type) == TYPE_DECL && TREE_CODE (DECL_NAME (type)) == IDENTIFIER_NODE) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 64de9d5c8b0..c47e7b7287b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-07-20 Mark Mitchell + + PR c++/16637 + * g++.dg/parse/lookup4.C: New test. + 2004-07-20 Kriang Lerdsuwanakij PR c++/16175 diff --git a/gcc/testsuite/g++.dg/parse/lookup4.C b/gcc/testsuite/g++.dg/parse/lookup4.C new file mode 100644 index 00000000000..01e5662ad96 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/lookup4.C @@ -0,0 +1,7 @@ +// PR c++/16637 + +typedef int I; + +struct S { + ::I I; +}; -- 2.11.0