aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-03-12 18:01:23 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-03-12 18:01:23 +0000
commitf792bce511e3b62be13ff2d6a6a24d8af533513f (patch)
tree43e2315a9bfe2eea6886b2527680947b7dca0b4f /gcc/java
parenta65c591c7daf3ea593223fe52c36eeb638ef6261 (diff)
downloadgcc-f792bce511e3b62be13ff2d6a6a24d8af533513f.zip
gcc-f792bce511e3b62be13ff2d6a6a24d8af533513f.tar.gz
gcc-f792bce511e3b62be13ff2d6a6a24d8af533513f.tar.bz2
re PR java/5848 (gcj "crashes" on syntax with complex cast)
* parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is a call_expr wrapped in a convert. Fixes PR java/5848. From-SVN: r50659
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/parse.y10
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 4867739..e8b67fc 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-03-12 Tom Tromey <tromey@redhat.com>
+
+ * parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
+ a call_expr wrapped in a convert. Fixes PR java/5848.
+
2002-03-12 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* jcf-write.c (write_classfile): Improve error strings.
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 925cb74..953d075 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -11276,11 +11276,17 @@ qualify_ambiguous_name (id)
else if (code == INTEGER_CST)
name = qual_wfl;
-
+
else if (code == CONVERT_EXPR &&
TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
name = TREE_OPERAND (qual_wfl, 0);
-
+
+ else if (code == CONVERT_EXPR
+ && TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == CALL_EXPR
+ && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (qual_wfl, 0), 0))
+ == EXPR_WITH_FILE_LOCATION))
+ name = TREE_OPERAND (TREE_OPERAND (qual_wfl, 0), 0);
+
else if ((code == ARRAY_REF || code == CALL_EXPR || code == MODIFY_EXPR) &&
TREE_CODE (TREE_OPERAND (qual_wfl, 0)) == EXPR_WITH_FILE_LOCATION)
name = EXPR_WFL_NODE (TREE_OPERAND (qual_wfl, 0));