Skip to content

Commit 76e9b8c

Browse files
mickaelistriadatho7561
authored andcommitted
Fix JavacTypeBinding.getErasure() for arrays
1 parent 52a86d8 commit 76e9b8c

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/javac/dom/JavacErrorTypeBinding.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@
1010
*******************************************************************************/
1111
package org.eclipse.jdt.internal.javac.dom;
1212

13-
import org.eclipse.jdt.core.dom.ITypeBinding;
1413
import org.eclipse.jdt.core.dom.JavacBindingResolver;
1514

15+
import com.sun.tools.javac.code.Type;
1616
import com.sun.tools.javac.code.Symbol.ClassSymbol;
1717
import com.sun.tools.javac.code.Symbol.TypeSymbol;
18-
import com.sun.tools.javac.code.Type;
1918

2019
/**
2120
* Represents a binding for a type that javac struggles to recover,
@@ -73,7 +72,7 @@ private String getKeyImpl() {
7372
}
7473

7574
@Override
76-
public ITypeBinding getErasure() {
75+
public JavacTypeBinding getErasure() {
7776
return this.resolver.bindings.getTypeBinding(this.types.erasure(this.originatingSymbol.type));
7877
}
7978

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/javac/dom/JavacTypeBinding.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,7 @@ public int getRank() {
744744
}
745745

746746
@Override
747-
public ITypeBinding getComponentType() {
747+
public JavacTypeBinding getComponentType() {
748748
if (this.type instanceof ArrayType arrayType) {
749749
return this.resolver.bindings.getTypeBinding(arrayType.elemtype);
750750
}
@@ -933,7 +933,12 @@ public ITypeBinding getElementType() {
933933
}
934934

935935
@Override
936-
public ITypeBinding getErasure() {
936+
public JavacTypeBinding getErasure() {
937+
if (isArray()) {
938+
JavacTypeBinding component = getComponentType().getErasure();
939+
ArrayType arrayType = this.types.makeArrayType(component.type);
940+
return this.resolver.bindings.getTypeBinding(arrayType, false);
941+
}
937942
if (isParameterizedType()) {
938943
// generic binding
939944
return this.resolver.bindings.getTypeBinding(this.type, true);

0 commit comments

Comments
 (0)