mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
array access: don't open captured wildcards
This commit is contained in:
@@ -20,8 +20,8 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.Constants;
|
||||
import com.intellij.psi.impl.source.tree.ChildRole;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.ChildRoleBase;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PsiArrayAccessExpressionImpl extends ExpressionPsiElement implements PsiArrayAccessExpression, Constants {
|
||||
@@ -46,7 +46,7 @@ public class PsiArrayAccessExpressionImpl extends ExpressionPsiElement implement
|
||||
public PsiType getType() {
|
||||
PsiType arrayType = getArrayExpression().getType();
|
||||
if (!(arrayType instanceof PsiArrayType)) return null;
|
||||
return GenericsUtil.getVariableTypeByExpressionType(((PsiArrayType)arrayType).getComponentType(), false);
|
||||
return ((PsiArrayType)arrayType).getComponentType();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,11 +33,11 @@ class VarianceTesting {
|
||||
VarianceTesting z = x.field;
|
||||
VarianceTesting[] v = x.arrayField;
|
||||
VarianceTesting v1 = x.arrayField[0];
|
||||
x.arrayField[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.arrayField[0] = new VarianceTesting()</error>;
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.field = new VarianceTesting()</error>;
|
||||
VarianceTesting[] k = x.method();
|
||||
k[0] = new VarianceTesting();
|
||||
x.method()[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.method()[0] = new VarianceTesting()</error>;
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting[]', required: 'capture<? extends VarianceTesting>[]'">x.arrayField = new VarianceTesting[10]</error>;
|
||||
l1.addAll<error descr="'addAll(java.util.Collection<? extends capture<? extends VarianceTesting>>)' in 'java.util.List' cannot be applied to '(java.util.ArrayList<VarianceTesting>)'">(new ArrayList<VarianceTesting>())</error>;
|
||||
<error descr="Incompatible types. Found: 'java.util.ArrayList<java.lang.String>', required: 'java.util.List<? extends VarianceTesting>'">List<? extends VarianceTesting> l2 = new ArrayList<String>();</error>
|
||||
@@ -280,6 +280,6 @@ class C67675<T extends B67675<?>>
|
||||
{
|
||||
void foo(T x)
|
||||
{
|
||||
x.foo()[0] = "";
|
||||
<error descr="Incompatible types. Found: 'java.lang.String', required: 'capture<?>'">x.foo()[0] = ""</error>;
|
||||
}
|
||||
}
|
||||
@@ -33,11 +33,11 @@ class VarianceTesting {
|
||||
VarianceTesting z = x.field;
|
||||
VarianceTesting[] v = x.arrayField;
|
||||
VarianceTesting v1 = x.arrayField[0];
|
||||
x.arrayField[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.arrayField[0] = new VarianceTesting()</error>;
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.field = new VarianceTesting()</error>;
|
||||
VarianceTesting[] k = x.method();
|
||||
k[0] = new VarianceTesting();
|
||||
x.method()[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.method()[0] = new VarianceTesting()</error>;
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting[]', required: 'capture<? extends VarianceTesting>[]'">x.arrayField = new VarianceTesting[10]</error>;
|
||||
l1.addAll<error descr="'addAll(java.util.Collection<? extends capture<? extends VarianceTesting>>)' in 'java.util.List' cannot be applied to '(java.util.ArrayList<VarianceTesting>)'">(new ArrayList<VarianceTesting>())</error>;
|
||||
<error descr="Incompatible types. Found: 'java.util.ArrayList<java.lang.String>', required: 'java.util.List<? extends VarianceTesting>'">List<? extends VarianceTesting> l2 = new ArrayList<String>();</error>
|
||||
@@ -280,6 +280,6 @@ class C67675<T extends B67675<?>>
|
||||
{
|
||||
void foo(T x)
|
||||
{
|
||||
x.foo()[0] = "";
|
||||
<error descr="Incompatible types. Found: 'java.lang.String', required: 'capture<?>'">x.foo()[0] = ""</error>;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user