OSDN Git Service

PR c++/11149
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Jul 2003 17:36:00 +0000 (17:36 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 1 Jul 2003 17:36:00 +0000 (17:36 +0000)
* call.c (resolve_scoped_fn_name): Check that the qualifying scope
is a class type.

PR c++/11149
* g++.dg/lookup/scoped6.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68782 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lookup/scoped6.C [new file with mode: 0644]

index 5487d33..e9180bf 100644 (file)
@@ -1,3 +1,9 @@
+2003-07-01  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/11149
+       * call.c (resolve_scoped_fn_name): Check that the qualifying scope
+       is a class type.
+
 2003-07-01  Giovanni Bajo  <giovannibajo@libero.it>
        
         PR c++/8046
index d92a24e..0f4d360 100644 (file)
@@ -2765,6 +2765,8 @@ resolve_scoped_fn_name (tree scope, tree name)
   
   if (TREE_CODE (scope) == NAMESPACE_DECL)
     fn = lookup_namespace_name (scope, name);
+  else if (!CLASS_TYPE_P (scope))
+    error ("`%T' is not a class type", scope);
   else
     {
       if (!TYPE_BEING_DEFINED (scope)
index 95e4e01..86cabcb 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-01  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/11149
+       * g++.dg/lookup/scoped6.C: New test.
+
 2003-07-01  Giovanni Bajo  <giovannibajo@libero.it>
 
         PR c++/8046
diff --git a/gcc/testsuite/g++.dg/lookup/scoped6.C b/gcc/testsuite/g++.dg/lookup/scoped6.C
new file mode 100644 (file)
index 0000000..d9566a7
--- /dev/null
@@ -0,0 +1,17 @@
+template <typename X>
+class Foo {
+  int i;
+public:
+  Foo() {
+    X::explode(); // { dg-error "" }
+  }
+};
+
+class Bar {
+  Foo<int> foo_;
+public:
+  Bar() {}  // { dg-error "instantiated" }
+};
+
+template class Foo<int>;
+