| 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 { |
| } |
| } |