mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 03:13:40 +07:00
good code red: array access expr type should be treated as variable type (IDEA-67675)
This commit is contained in:
+18
-2
@@ -33,11 +33,11 @@ public class VarianceTesting {
|
||||
VarianceTesting z = x.field;
|
||||
VarianceTesting[] v = x.arrayField;
|
||||
VarianceTesting v1 = x.arrayField[0];
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.arrayField[0] = new VarianceTesting()</error>;
|
||||
x.arrayField[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.field = new VarianceTesting()</error>;
|
||||
VarianceTesting[] k = x.method();
|
||||
k[0] = new VarianceTesting();
|
||||
<error descr="Incompatible types. Found: 'VarianceTesting', required: 'capture<? extends VarianceTesting>'">x.method()[0] = new VarianceTesting()</error>;
|
||||
x.method()[0] = new VarianceTesting();
|
||||
<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>
|
||||
@@ -266,4 +266,20 @@ class GenericFailureExample {
|
||||
<T extends Comparable<T>> Comparator<T> bar(Class<T> type) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//IDEA-67675
|
||||
abstract class A67675<T>
|
||||
{
|
||||
abstract T foo();
|
||||
}
|
||||
|
||||
abstract class B67675<T> extends A67675<T[]> { }
|
||||
|
||||
class C67675<T extends B67675<?>>
|
||||
{
|
||||
void foo(T x)
|
||||
{
|
||||
x.foo()[0] = "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user