OSDN Git Service

cp:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jul 2003 09:41:52 +0000 (09:41 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jul 2003 09:41:52 +0000 (09:41 +0000)
PR c++/10219
* pt.c (type_unification_real): Don't unify exprs of error type.
* tree.c (error_type): Don't die on error_type.
testsuite:
PR c++/10219
* g++.dg/template/error1.C: New.

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

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/cp/tree.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/template/error1.C [new file with mode: 0644]

index c8bb893..9708304 100644 (file)
@@ -1,5 +1,9 @@
 2003-07-02  Nathan Sidwell  <nathan@codesourcery.com>
 
+       PR c++/10219
+       * pt.c (type_unification_real): Don't unify exprs of error type.
+       * tree.c (error_type): Don't die on error_type.
+
        PR c++/9779
        * decl2.c (arg_assoc_class): Don't die on NULL type.
        * typeck.c (type_unknown_p): Don't die on untyped expressions.
index 43fc5ab..607bdd1 100644 (file)
@@ -8830,6 +8830,8 @@ type_unification_real (tree tparms,
              continue;
            }
          arg = TREE_TYPE (arg);
+         if (arg == error_mark_node)
+           return 1;
        }
       
       {
index 385afca..6c6d9b9 100644 (file)
@@ -1747,8 +1747,11 @@ tree
 error_type (tree arg)
 {
   tree type = TREE_TYPE (arg);
+  
   if (TREE_CODE (type) == ARRAY_TYPE)
     ;
+  else if (TREE_CODE (type) == ERROR_MARK)
+    ;
   else if (real_lvalue_p (arg))
     type = build_reference_type (lvalue_type (arg));
   else if (IS_AGGR_TYPE (type))
index 1a4d547..7f3678c 100644 (file)
@@ -1,5 +1,8 @@
 2003-07-02  Nathan Sidwell  <nathan@codesourcery.com>
 
+       PR c++/10219
+       * g++.dg/template/error1.C: New.
+       
        PR c++/9779
        * g++.dg/template/dependent-expr1.C: New.
 
diff --git a/gcc/testsuite/g++.dg/template/error1.C b/gcc/testsuite/g++.dg/template/error1.C
new file mode 100644 (file)
index 0000000..c23e33c
--- /dev/null
@@ -0,0 +1,13 @@
+// { dg-do compile }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 30 Jun 2003 <nathan@codesourcery.com>
+
+// PR c++ 10219. ICE
+
+template <class T> void make_pair(T x);
+
+void foo(){
+  struct fps_chan_ID fps; // { dg-error "incomplete" "" }
+  make_pair(fps); // { dg-error "no matching function" "" }
+}