summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>2003-04-30 17:51:41 +0000
committerlerdsuwa <lerdsuwa@138bc75d-0d04-0410-961f-82ee72b054a4>2003-04-30 17:51:41 +0000
commit72c1da2f21d852b946699b7c9e3458a5e8a97fa9 (patch)
tree2f279121cfbde3d0564d27b410583d858f3b0ed5
parent31c5440141e0700b9acf71f49f87c3ead2aefa25 (diff)
downloadppe42-gcc-72c1da2f21d852b946699b7c9e3458a5e8a97fa9.tar.gz
ppe42-gcc-72c1da2f21d852b946699b7c9e3458a5e8a97fa9.zip
PR c++/9432, c++/9528
* decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF. * g++.dg/lookup/using4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66298 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/lookup/using4.C15
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d6fd395505f..eb5b26ee42c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-30 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/9432, c++/9528
+ * decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF.
+
2003-04-30 Garbiel Dos Reis <gcc@integrable-solutions.net>
* decl.c (check_previous_goto_1): Adjust prototype.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index cf63b387e97..4f0337d40f0 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4236,6 +4236,14 @@ validate_nonmember_using_decl (tree decl, tree *scope, tree *name)
return NULL_TREE;
}
+ if (TREE_CODE (decl) == SCOPE_REF)
+ {
+ /* It's a nested name with template parameter dependent scope.
+ This can only be using-declaration for class member. */
+ error ("`%T' is not a namespace", TREE_OPERAND (decl, 0));
+ return NULL_TREE;
+ }
+
if (is_overloaded_fn (decl))
decl = get_first_fn (decl);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5a7ddceb97c..96ea0ab05d2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-30 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/9432, c++/9528
+ * g++.dg/lookup/using4.C: New test.
+
2003-04-29 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/noreturn-5.c: New file.
diff --git a/gcc/testsuite/g++.dg/lookup/using4.C b/gcc/testsuite/g++.dg/lookup/using4.C
new file mode 100644
index 00000000000..a6421c87598
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/using4.C
@@ -0,0 +1,15 @@
+// { dg-do compile }
+
+// Origin: Richard Guenther <rguenth@tat.physik.uni-tuebingen.de>
+
+// PR c++/9432: ICE in validate_nonmember_using_decl when decl is a
+// SCOPE_REF.
+
+template <class T> struct Foo;
+template <class T>
+struct Bar : public Foo<T> {
+ void foo()
+ {
+ using Foo<T>::i; // { dg-error "not a namespace" }
+ }
+};
OpenPOWER on IntegriCloud