blob: fbbe91649ddb1fe015618fb3daef0ff97e84c006 [file] [log] [blame]
import java.util.ArrayList;
import java.util.List;
class Test {
List<String> queue = new ArrayList<>();
ArrayList l = new ArrayList<>(8);
}
class HMCopy<K, V> {
private Entry[] table;
class Entry<K, V> {
Entry(int h, K k, V v, Entry<K, V> n) {
}
}
void addEntry(int hash, K key, V value, int bucketIndex) {
Entry<K, V> e = table[bucketIndex];
table[bucketIndex] = new Entry<>(hash, key, value, e);
}
}
class DD {
P1<P<String>> l = new L<String>() {
@Override
void f() {
}
};
P1<P<String>> l1 = new L<>();
P1<P<String>> foo() {
return new L<>();
}
String s = "";
}
class L<K> extends P1<P<K>> {
void f() {
}
}
class P1<P1T> extends P<P1T> {
}
class P<PT> {
}
class Test1 {
void bar() {
foo<error descr="'foo(F<F<java.lang.String>>)' in 'Test1' cannot be applied to '(FF<java.lang.Object>)'">(new FF<>())</error>;
}
void foo(F<F<String>> p) {}
}
class FF<X> extends F<X>{}
class F<T> {}
class MyTest {
static class Foo<X> {
Foo(X x) {}
}
static interface Base<Y> {}
static class A extends Exception implements Base<String> {}
static class B extends Exception implements Base<Integer> {}
void m() throws B {
try {
if (true) {
throw new A();
}
else {
throw new B();
}
} catch (A ex) {
Foo<? extends Base<String>> foo1 = new Foo<>(ex); // ok
<error descr="Incompatible types. Found: 'MyTest.Foo<MyTest.A>', required: 'MyTest.Foo<MyTest.Base<java.lang.String>>'">Foo<Base<String>> foo2 = new Foo<>(ex);</error> // should be error
}
}
}
class NonParameterized {
void foo() {
new NonParameterized<<error descr="Diamond operator is not applicable for non-parameterized types"></error>>();
}
}
interface I<T> {
T m();
}
class FI1 {
I<? extends String> i1 = new I<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {
@Override
public String m() {
return null;
}
};
I<?> i2 = new I<<error descr="Cannot use ''<>'' with anonymous inner classes"></error>>() {
@Override
public Object m() {
return null;
}
};
}
class Super<X,Y> {
private Super(Integer i, Y y, X x) {}
public Super(Number n, X x, Y y) {}
}
class TestMySuper {
Super<String,Integer> ssi1 = new Super<>(1, "", 2);
}
class TestLocal<X> {
class Member { }
static class Nested {}
void test() {
class Local {}
Member m = new Member<<error descr="Diamond operator is not applicable for non-parameterized types"></error>>();
Nested n = new Nested<<error descr="Diamond operator is not applicable for non-parameterized types"></error>>();
Local l = new Local<<error descr="Diamond operator is not applicable for non-parameterized types"></error>>();
}
}
class QualifiedTest {
java.util.Map<String, String> s = new java.util.HashMap<>();
}
class TZ {
}
class ParenthTest<T extends TZ> {
public ParenthTest(T x) {
}
public T z = null;
public int a() {
ParenthTest<T> x = (new ParenthTest<>(null)); //red code is here
return 1;
}
}
class TestWildcardInference {
interface A<T> {
}
class B<V> implements A<V> {
B(C<V> v) {
}
}
class C<E> {}
class U {
void foo() {
C<? extends Number> x = null;
A<? extends Number> y = new B<>(x);
}
}
}
class PredefinedErrorsOverRaw<T> {
<U> PredefinedErrorsOverRaw(T t) {
}
void test() {
PredefinedErrorsOverRaw mc = new <Boolean>PredefinedErrorsOverRaw<<error descr="Cannot use diamonds with explicit type parameters for constructor"></error>>("");
}
}
class Outer {
class Inner<T> {}
}
class Outer1 {}
class Outer2<K> {
class Inner2<T> {}
}
class Another {
public static void main(String[] args) {
Outer o = new Outer();
Outer.Inner<String> i = o.new Inner<>();
Outer.Inner<String> i1 = m().new Inner<>();
Outer.Inner<String> i2 = m1().new Inner<>();
Outer.Inner<String> i3 = m2().new <error descr="Cannot resolve symbol 'Inner'">Inner</error><>();
System.out.println(i);
<error descr="Incompatible types. Found: 'Outer2.Inner2<java.lang.String>', required: 'Outer2<java.lang.Integer>.Inner2<java.lang.String>'">Outer2<Integer>.Inner2<String> i5 = new Outer2<>().new Inner2<>();</error>
}
static Outer m() {return null;}
static <T extends Outer> T m1() {return null;}
static <T> T m2() {return null;}
}
class TypeParamsExtendsList {
{
new TypeWithGeneric<>();
}
private static class A {}
private static class TypeWithGeneric<T extends A> extends ArrayList<T> {
}
}