aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Millward <lee.millward@gmail.com>2006-07-15 14:44:48 +0000
committerLee Millward <lmillward@gcc.gnu.org>2006-07-15 14:44:48 +0000
commit662c2e83b15ffe993481b9af261462e9e4fa9095 (patch)
treea0274fdca5167ffa8a7e1a689a7b43d1afb7c127
parente3beea684a95dc4df2cfffa448fdbba1be62e274 (diff)
downloadgcc-662c2e83b15ffe993481b9af261462e9e4fa9095.zip
gcc-662c2e83b15ffe993481b9af261462e9e4fa9095.tar.gz
gcc-662c2e83b15ffe993481b9af261462e9e4fa9095.tar.bz2
re PR c++/28292 (ICE in acceptable_java_type)
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
-rw-r--r--gcc/cp/ChangeLog9
-rw-r--r--gcc/cp/decl2.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/other/error12.C9
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 69dc8cb..c60d003 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 3b4e7ce..f1a8a77 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -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;
}
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c145b16..863b4ab 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..253561e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/error12.C
@@ -0,0 +1,9 @@
+//PR c++/28292
+
+extern "Java"
+{
+ struct A
+ {
+ void foo(void; // { dg-error "before|incomplete type|invalid use" }
+ };
+}