blob: f848f66a7ae67bbe95b6793e376a3c08d83e39f1 [file] [log] [blame]
import java.lang.Object;
import java.util.*;
class C<T,U> {
C c1 = new C<error descr="Wrong number of type arguments: 1; required: 2"><Integer></error>();
C c2 = new C<error descr="Wrong number of type arguments: 3; required: 2"><Integer, Float, Object></error>();
Object o = new Object<error descr="Type 'java.lang.Object' does not have type parameters"><C></error>();
C c3 = new C();
C c4 = new C<Object, C>();
C<Integer, Float> c5 = new C<Integer, Float>();
}
class D<T extends C> {
{
new D<<error descr="Type parameter 'java.lang.Integer' is not within its bound; should extend 'C'">Integer</error>>();
new D<C>();
class CC extends C {};
new D<CC>();
new D<T>();
}
T field = new <error descr="Type parameter 'T' cannot be instantiated directly">T</error>();
T field2 = new <error descr="Type parameter 'T' cannot be instantiated directly">T</error>() { };
T[] array = new <error descr="Type parameter 'T' cannot be instantiated directly">T</error>[10];
}
class Primitives<T> {
Object a = new Primitives<<error descr="Type argument cannot be of primitive type">? extends int</error>>();
Object o = new Primitives<<error descr="Type argument cannot be of primitive type">int</error>>();
void f(Primitives<<error descr="Type argument cannot be of primitive type">boolean</error>> param) {
if (this instanceof Primitives<<error descr="Type argument cannot be of primitive type">double</error>>) {
return;
}
}
}
/////// calling super on generic bound class
class Generic<T> {
Generic(T t){}
}
class Bound extends Generic<String>{
public Bound(String s) {
super(s);
}
}
////
class Generic2<T1,T2> {
class A {}
class B {}
private <error descr="Incompatible types. Found: 'Generic2<java.lang.String,Generic2.B>', required: 'Generic2<java.lang.String,Generic2.A>'">Generic2<String, A> map = new Generic2<String,B>();</error>
{
<error descr="Incompatible types. Found: 'Generic2<java.lang.String,java.lang.String>', required: 'Generic2<java.lang.String,Generic2.A>'">map = new Generic2<String,String>()</error>;
map = new Generic2<String,A>();
}
}
class DummyList<T> {}
abstract class GenericTest3 implements DummyList<<error descr="No wildcard expected">? extends String</error>> {
DummyList<DummyList<? extends DummyList>> l;
<T> void foo () {}
void bar () {
this.<DummyList<? extends DummyList>>foo();
DummyList<DummyList<? super String>>[] l = <error descr="Generic array creation">new DummyList<DummyList<? super String>>[0]</error>;
DummyList<String>[] l1 = <error descr="Generic array creation">{}</error>;
}
public <T> T[] getComponents (Class<T> baseInterfaceClass) {
T[] ts = <error descr="Generic array creation">{}</error>;
return ts;
}
}
class mylist<T> {}
class myAList<T> extends mylist<T> {
{
mylist<String> l = <error descr="Inconvertible types; cannot cast 'myAList<java.lang.Integer>' to 'mylist<java.lang.String>'">(mylist<String>) new myAList<Integer>()</error>;
boolean b = <error descr="Operator '==' cannot be applied to 'myAList<java.lang.Integer>', 'myAList<java.lang.String>'">new myAList<Integer>() == new myAList<String>()</error>;
if (l instanceof <error descr="Illegal generic type for instanceof">myAList<String></error>);
Object o = new Object();
if (o instanceof <error descr="Class or array expected">T</error>);
}
Class<T> foo (Class<T> clazz) {
Class<String> clazz1 = (Class<String>)clazz; //Should be unchecked warning
return <error descr="Cannot select from a type variable">T</error>.class;
}
}
class testDup<T, <error descr="Duplicate type parameter: 'T'">T</error>> { // CAN IT BE HIGHLIGHTED? b
public <T, <error descr="Duplicate type parameter: 'T'">T</error>> void foo() { // CAN IT BE HIGHLIGHTED?
}
}
class aaaa {
{
<error descr="Incompatible types. Found: 'java.lang.Class<java.lang.String>', required: 'java.lang.Class<? super java.lang.Object>'">Class<? super Object> c = String.class;</error>
}
}
//IDEADEV-6103: this code is OK
class Foo {
mylist<Test> foo;
public Foo(mylist<Test> foo) {
this.foo = foo;
}
public Foo() {
this(new mylist<Test>());
}
private class Test {
}
}
//end of IDEADEV-6103
class IDontCompile {
Map<error descr="Cannot select static class 'java.util.Map.Entry' from parameterized type"><?, ?></error>.Entry map;
}
abstract class GenericTest99<E extends Enum<E>> {
GenericTest99<<error descr="Type parameter 'java.lang.Enum' is not within its bound; should extend 'java.lang.Enum<java.lang.Enum>'">Enum</error>> local;
}
class ClassLiteral<T> {
{
Object c1 = <error descr="Cannot select from a type variable">T</error>.class;
Object c2 = <error descr="Cannot select from a type variable">T[]</error>.class;
Object c3 = <error descr="Cannot select from parameterized type">List<String></error>.class;
Object c4 = <error descr="Cannot select from parameterized type">List<String>[]</error>.class;
Object c5 = List[].class;
Object c6 = List.class;
}
}
class Outer<E> {
final Inner[] i = <error descr="Generic array creation">new Inner[10]</error>;
class Inner {
}
}
class Outer1<E> {
final Inner[] i = new Inner[10];
static class Inner {
}
}