aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2014-06-11 17:28:14 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2014-06-11 17:28:14 +0000
commitc7bb3484a24f6770e7633d38f3b1f7dcc46da6bb (patch)
treea13ca20c4488d616d38d1d94805c0aab49bae835 /gcc/cp
parent37251385bf1e4d1704f23a5ef0a99a77596b10f0 (diff)
downloadgcc-c7bb3484a24f6770e7633d38f3b1f7dcc46da6bb.zip
gcc-c7bb3484a24f6770e7633d38f3b1f7dcc46da6bb.tar.gz
gcc-c7bb3484a24f6770e7633d38f3b1f7dcc46da6bb.tar.bz2
re PR c++/60265 ([C++11] using-declaration of enumerator fails if fully qualified)
/cp 2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60265 * parser.c (cp_parser_using_declaration): Handle unscoped enums. * name-lookup.c (validate_nonmember_using_decl): Adjust error message. /testsuite 2014-06-11 Paolo Carlini <paolo.carlini@oracle.com> PR c++/60265 * g++.dg/cpp0x/using-enum-1.C: New. * g++.dg/cpp0x/using-enum-2.C: Likewise. From-SVN: r211479
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/name-lookup.c2
-rw-r--r--gcc/cp/parser.c2
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e330f73..8bd4a73 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,12 @@
2014-06-11 Paolo Carlini <paolo.carlini@oracle.com>
+ PR c++/60265
+ * parser.c (cp_parser_using_declaration): Handle unscoped enums.
+ * name-lookup.c (validate_nonmember_using_decl): Adjust error
+ message.
+
+2014-06-11 Paolo Carlini <paolo.carlini@oracle.com>
+
PR c++/19200
* parser.c (cp_parser_declarator): Add bool parameter.
(cp_parser_direct_declarator): Likewise, use it.
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 90f5108..75b46ac 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -2487,7 +2487,7 @@ validate_nonmember_using_decl (tree decl, tree scope, tree name)
member-declaration. */
if (TYPE_P (scope))
{
- error ("%qT is not a namespace", scope);
+ error ("%qT is not a namespace or unscoped enum", scope);
return NULL_TREE;
}
else if (scope == error_mark_node)
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 22d7ba6..4dff139 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -16022,6 +16022,8 @@ cp_parser_using_declaration (cp_parser* parser,
/*is_declaration=*/true);
if (!qscope)
qscope = global_namespace;
+ else if (UNSCOPED_ENUM_P (qscope))
+ qscope = CP_TYPE_CONTEXT (qscope);
if (access_declaration_p && cp_parser_error_occurred (parser))
/* Something has already gone wrong; there's no need to parse