From 066b4a1cc8da79e2ff195d3f154de68577a76c14 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 2 Dec 1998 10:12:20 +0000 Subject: [PATCH] decl2.c (validate_nonmember_using_decl): Complain about using declarations for class members. * decl2.c (validate_nonmember_using_decl): Complain about using declarations for class members. From-SVN: r24060 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl2.c | 10 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using11.C | 9 +++++++++ 3 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using11.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3cfe7012719..336e694d876 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1998-12-02 Mark Mitchell + + * decl2.c (validate_nonmember_using_decl): Complain about using + declarations for class members. + 1998-11-29 Jason Merrill * typeck2.c (process_init_constructor): Use same_type_p. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index e57a6af1ee0..cf9df28ba0c 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4690,6 +4690,16 @@ validate_nonmember_using_decl (decl, scope, name) { *scope = TREE_OPERAND (decl, 0); *name = TREE_OPERAND (decl, 1); + + /* [namespace.udecl] + + A using-declaration for a class member shall be a + member-declaration. */ + if (TREE_CODE (*scope) != NAMESPACE_DECL) + { + cp_error ("`%D' is not a namespace", *scope); + return NULL_TREE; + } } else if (TREE_CODE (decl) == IDENTIFIER_NODE || TREE_CODE (decl) == TYPE_DECL diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using11.C b/gcc/testsuite/g++.old-deja/g++.ns/using11.C new file mode 100644 index 00000000000..23943f22a1a --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.ns/using11.C @@ -0,0 +1,9 @@ +// Build don't link: + +class joey { +public: + typedef int SVec; +}; + +using joey::SVec; // ERROR - joey is not a namespace + -- 2.30.2