Skip to content

Commit e326c3f

Browse files
mickaelistriadatho7561
authored andcommitted
Improve getting level for arrays
1 parent 710553f commit e326c3f

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/core/search/matching/DOMPatternLocator.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
*******************************************************************************/
1111
package org.eclipse.jdt.internal.core.search.matching;
1212

13+
import java.util.Arrays;
14+
1315
import org.eclipse.core.runtime.CoreException;
1416
import org.eclipse.jdt.core.compiler.CharOperation;
1517
import org.eclipse.jdt.core.dom.ASTNode;
@@ -152,13 +154,16 @@ protected String getQualifiedSourceName(ITypeBinding binding) {
152154
return binding.getName();
153155
}
154156
protected int resolveLevelForType(char[] simpleNamePattern, char[] qualificationPattern, ITypeBinding binding) {
155-
return resolveLevelForTypeFQN(simpleNamePattern, qualificationPattern, binding, null);
157+
return
158+
binding == null && simpleNamePattern == null && qualificationPattern == null ? ACCURATE_MATCH :
159+
binding != null && binding.isArray() && new String(simpleNamePattern).endsWith("[]") ? resolveLevelForType(Arrays.copyOf(simpleNamePattern, simpleNamePattern.length - 2), qualificationPattern, binding.getComponentType()) :
160+
resolveLevelForTypeFQN(simpleNamePattern, qualificationPattern, binding, null);
156161
}
157162

158163
protected int resolveLevelForTypeFQN(char[] simpleNamePattern, char[] qualificationPattern, ITypeBinding binding, IImportDiscovery discovery) {
159164
int level = 0;
160165
if (qualificationPattern == null && simpleNamePattern != null) {
161-
level = resolveLevelForTypeSourceName(simpleNamePattern, binding.getErasure().getName().toCharArray(), binding);
166+
level = resolveLevelForTypeSourceName(simpleNamePattern, (binding.isArray() ? binding : binding.getErasure()).getName().toCharArray(), binding);
162167
}
163168
if (level == ACCURATE_MATCH || level == ERASURE_MATCH) {
164169
return level;

0 commit comments

Comments
 (0)