re PR c++/28292 (ICE in acceptable_java_type)
authorLee Millward <lee.millward@gmail.com>
Sat, 15 Jul 2006 14:44:48 +0000 (14:44 +0000)
committerLee Millward <lmillward@gcc.gnu.org>
Sat, 15 Jul 2006 14:44:48 +0000 (14:44 +0000)
PR c++/28292
* decl2.c (acceptable_java_type): Robustify. Use
proper Boolean return type instead of return 1.
(check_java_method): Don't issue error about
type not being an acceptable Java parameter if
it's error_mark_node.

* g++.dg/other/error12.C: New test.

From-SVN: r115474

gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/error12.C [new file with mode: 0644]

index 69dc8cbc57fe3516550a5025043db5f014453f3c..c60d003a840892adff29764922084875b75cb05c 100644 (file)
@@ -1,3 +1,12 @@
+2006-07-15  Lee Millward  <lee.millward@gmail.com>
+
+       PR c++/28292
+       * decl2.c (acceptable_java_type): Robustify. Use
+       proper Boolean return type instead of return 1.
+       (check_java_method): Don't issue error about
+       type not being an acceptable Java parameter if 
+       it's error_mark_node.
+       
 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28249
index 3b4e7ce02fbd35dd80a14024a795250de4a8dcd8..f1a8a77431cda8c76f5e69c8355bb4cc751478de 100644 (file)
@@ -469,8 +469,11 @@ check_member_template (tree tmpl)
 static bool
 acceptable_java_type (tree type)
 {
+  if (type == error_mark_node)
+    return false;
+
   if (TREE_CODE (type) == VOID_TYPE || TYPE_FOR_JAVA (type))
-    return 1;
+    return true;
   if (TREE_CODE (type) == POINTER_TYPE || TREE_CODE (type) == REFERENCE_TYPE)
     {
       type = TREE_TYPE (type);
@@ -526,8 +529,9 @@ check_java_method (tree method)
       tree type = TREE_VALUE (arg_types);
       if (!acceptable_java_type (type))
        {
-         error ("Java method %qD has non-Java parameter type %qT",
-                method, type);
+          if (type != error_mark_node)
+           error ("Java method %qD has non-Java parameter type %qT",
+                  method, type);
          jerr = true;
        }
     }
index c145b16318bdb0020b0bda3b876b073b329cd539..863b4ab78545dc3d6c602919ad790872bbd5d526 100644 (file)
@@ -1,3 +1,8 @@
+2006-07-15  Lee Millward  <lee.millward@gmail.com>
+
+       PR c++/28292
+       * g++.dg/other/error12.C: New test.
+       
 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28249
diff --git a/gcc/testsuite/g++.dg/other/error12.C b/gcc/testsuite/g++.dg/other/error12.C
new file mode 100644 (file)
index 0000000..253561e
--- /dev/null
@@ -0,0 +1,9 @@
+//PR c++/28292
+
+extern "Java"
+{
+  struct A
+  {
+    void foo(void; // { dg-error "before|incomplete type|invalid use" }
+  };
+}