OSDN Git Service

cp/
authorgdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Mar 2002 01:24:18 +0000 (01:24 +0000)
committergdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Mar 2002 01:24:18 +0000 (01:24 +0000)
        PR C++/3656
        * semantics.c (finish_base_specifier): Handle erronous base
        classes.

testsuite/
        * g++.dg/inherit/template-as-base.C: New test.

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

gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/inherit/template-as-base.C [new file with mode: 0644]

index 01a5f67..42c2e9b 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-21  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
+
+       PR C++/3656
+       * semantics.c (finish_base_specifier): Handle erronous base
+       classes. 
+
 2002-03-22  Zack Weinberg  <zack@codesourcery.com>
 
        * error.c: Always use REAL_VALUE_TO_DECIMAL; don't test
index 14ecf05..29e49fa 100644 (file)
@@ -2026,7 +2026,12 @@ finish_base_specifier (access_specifier, base_class)
 {
   tree result;
 
-  if (! is_aggr_type (base_class, 1))
+  if (base_class == error_mark_node)
+    {
+      error ("invalid base-class specification");
+      result = NULL_TREE;
+    }
+  else if (! is_aggr_type (base_class, 1))
     result = NULL_TREE;
   else
     {
index a180bc9..866c486 100644 (file)
@@ -1,3 +1,7 @@
+2002-03-22  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
+
+       * g++.dg/inherit/template-as-base.C: New test.
+
 2002-03-22  Jakub Jelinek  <jakub@redhat.com>
 
        * g++.old-deja/g++.other/dwarf2-1.C: Move...
diff --git a/gcc/testsuite/g++.dg/inherit/template-as-base.C b/gcc/testsuite/g++.dg/inherit/template-as-base.C
new file mode 100644 (file)
index 0000000..51f8c3b
--- /dev/null
@@ -0,0 +1,9 @@
+// Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
+// Distilled from PR C++/3656
+
+namespace N
+{
+    template<typename> struct X { };
+}
+
+struct A : N::X { };