diff options
author | Lee Millward <lee.millward@gmail.com> | 2006-07-15 14:44:48 +0000 |
---|---|---|
committer | Lee Millward <lmillward@gcc.gnu.org> | 2006-07-15 14:44:48 +0000 |
commit | 662c2e83b15ffe993481b9af261462e9e4fa9095 (patch) | |
tree | a0274fdca5167ffa8a7e1a689a7b43d1afb7c127 | |
parent | e3beea684a95dc4df2cfffa448fdbba1be62e274 (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/error12.C | 9 |
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" } + }; +} |