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:
parent
409e35fadc
commit
45c76dbb43
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
17
libjava/testsuite/libjava.compile/rh174912.java
Normal file
17
libjava/testsuite/libjava.compile/rh174912.java
Normal 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) { }
|
||||
}
|
Loading…
Reference in New Issue
Block a user