aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2004-09-25 19:11:07 +0000
committerTom Tromey <tromey@gcc.gnu.org>2004-09-25 19:11:07 +0000
commitc1f042f8b2eb63fedf2045bab0a449071993fdbd (patch)
treef268db91ac381fa9b9d52f8bc09329d800860032 /gcc/java
parent4b2582f0556dd99416042c355941ed08e75a975f (diff)
downloadgcc-c1f042f8b2eb63fedf2045bab0a449071993fdbd.zip
gcc-c1f042f8b2eb63fedf2045bab0a449071993fdbd.tar.gz
gcc-c1f042f8b2eb63fedf2045bab0a449071993fdbd.tar.bz2
re PR java/17500 (Anonymous inner class compile freakout)
PR java/17500: * parse.y (create_artificial_method): Use add_method_1. From-SVN: r88108
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/parse.y6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 60eadf1..4b579bc 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-25 Tom Tromey <tromey@redhat.com>
+
+ PR java/17500:
+ * parse.y (create_artificial_method): Use add_method_1.
+
2004-09-25 Kazu Hirata <kazu@cs.umass.edu>
* expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 8ac79ea..847a532 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -7468,7 +7468,11 @@ create_artificial_method (tree class, int flags, tree type,
mdecl = make_node (FUNCTION_TYPE);
TREE_TYPE (mdecl) = type;
TYPE_ARG_TYPES (mdecl) = args;
- mdecl = add_method (class, flags, name, build_java_signature (mdecl));
+ /* We used to compute the signature of MDECL here and then use
+ add_method(), but that failed because our caller might modify
+ the type of the returned method, which trashes the cache in
+ get_type_from_signature(). */
+ mdecl = add_method_1 (class, flags, name, mdecl);
java_parser_context_restore_global ();
DECL_ARTIFICIAL (mdecl) = 1;
return mdecl;