mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
spec: no capture conversion applicable for array type; capture conversion must be applied for array access expression type; javac: no capture conversion is applicable for array access expressions with write access (IDEA-157295)
This commit is contained in:
@@ -815,10 +815,6 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type instanceof PsiArrayType) {
|
||||
return captureToplevelWildcards(((PsiArrayType)type).getComponentType(), context).createArrayType();
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -22,6 +22,7 @@ import com.intellij.psi.impl.source.Constants;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.tree.ChildRoleBase;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PsiArrayAccessExpressionImpl extends ExpressionPsiElement implements PsiArrayAccessExpression, Constants {
|
||||
@@ -46,7 +47,9 @@ public class PsiArrayAccessExpressionImpl extends ExpressionPsiElement implement
|
||||
public PsiType getType() {
|
||||
PsiType arrayType = getArrayExpression().getType();
|
||||
if (!(arrayType instanceof PsiArrayType)) return null;
|
||||
return ((PsiArrayType)arrayType).getComponentType();
|
||||
final PsiType componentType = ((PsiArrayType)arrayType).getComponentType();
|
||||
if (PsiUtil.isAccessedForWriting(this)) return componentType;
|
||||
return PsiUtil.captureToplevelWildcards(componentType, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.*;
|
||||
|
||||
class Test {
|
||||
private void foo() {
|
||||
List<Class<?>> parameterTypes = Arrays.asList(getParameterTypes());
|
||||
}
|
||||
|
||||
private Class<?>[] getParameterTypes() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -613,4 +613,8 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
public void testTopLevelCaptureConversion() throws Exception {
|
||||
doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
|
||||
}
|
||||
|
||||
public void testNoCaptureConversionForArrayType() throws Exception {
|
||||
doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user