parse.y (patch_new_array_init): Don't set length on array.

gcc/java:
	* parse.y (patch_new_array_init): Don't set length on array.
libjava:
	* testsuite/libjava.compile/rh174912.java: New file.

From-SVN: r108099
This commit is contained in:
Tom Tromey 2005-12-06 02:30:11 +00:00 committed by Tom Tromey
parent 409e35fadc
commit 45c76dbb43
4 changed files with 31 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2005-12-05 Tom Tromey <tromey@redhat.com>
* parse.y (patch_new_array_init): Don't set length on array.
2005-12-02 Richard Guenther <rguenther@suse.de>
* java-gimplify.c (java_gimplify_labeled_block_expr): Use

View File

@ -14857,8 +14857,12 @@ patch_new_array_init (tree type, tree node)
/* Create a new type. We can't reuse the one we have here by
patching its dimension because it originally is of dimension -1
hence reused by gcc. This would prevent triangular arrays. */
type = build_java_array_type (element_type, length);
hence reused by gcc. This would prevent triangular arrays.
Note that we don't pass the length here. If we do that then the
length will end up in the signature of this type, and hence in
the signature of the anonymous constructor -- but this is not a
valid java signature. */
type = build_java_array_type (element_type, -1);
TREE_TYPE (init) = TREE_TYPE (TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (type))));
TREE_TYPE (node) = promote_type (type);
TREE_CONSTANT (init) = all_constant;

View File

@ -1,3 +1,7 @@
2005-12-05 Tom Tromey <tromey@redhat.com>
* testsuite/libjava.compile/rh174912.java: New file.
2005-12-01 Geoffrey Keating <geoffk@apple.com>
* testsuite/lib/libjava.exp (test_libjava_from_javac): Support

View File

@ -0,0 +1,17 @@
// Derived from Red Hat bugzilla 174912
// https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=174912
// The bug is that the anonymous class constructor here will end up
// with a bogus '[3C' in its signature.
public class rh174912 {
public rh174912(char[][] args) { }
public Object m() {
return new rh174912(new char[][] { "hi".toCharArray(),
"bob".toCharArray(),
"and joe".toCharArray() }) {
};
}
public static void main(String[] args) { }
}