diff options
Diffstat (limited to 'java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting')
16 files changed, 210 insertions, 0 deletions
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/CastObjectToIntJdk14.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/CastObjectToIntJdk14.java new file mode 100644 index 000000000000..4dc0dae7765d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/CastObjectToIntJdk14.java @@ -0,0 +1,7 @@ +class Test { + + Object getObj() {return null;} + { + int a = (int) getObj(); + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112117.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112117.java new file mode 100644 index 000000000000..57b1c73999d9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA112117.java @@ -0,0 +1,15 @@ +import java.io.Serializable; +import java.util.Set; + +class IdeaGenericsFail { + + public IdeaGenericsFail(Set<Klass<? extends Serializable>> map) { + } + + public static class Klass<T extends Serializable> { + } + + public static void main(final Set<Klass<?>> map) { + new IdeaGenericsFail(map); + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118533.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118533.java new file mode 100644 index 000000000000..56a140091dbe --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118533.java @@ -0,0 +1,11 @@ +abstract class Test { + + interface InputFormat<K, V> { + } + + @SuppressWarnings("unchecked") + private static Class<? extends InputFormat<?, ?>> getInputFormatClass(final Class<? extends InputFormat> aClass) + throws ClassNotFoundException { + return (Class<? extends InputFormat<?, ?>>) aClass; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118536.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118536.java new file mode 100644 index 000000000000..b747456247fe --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA118536.java @@ -0,0 +1,10 @@ +import java.util.Comparator; + +class MyTest { + void foo(final Ordering<Comparable> natural){ + compound(natural); + } + <U extends String> Ordering<U> compound(Comparator<? super U> secondaryComparator) { return null; } +} +abstract class Ordering <T> implements Comparator<T> {} + diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA119757.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA119757.java new file mode 100644 index 000000000000..d3e018e64c34 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA119757.java @@ -0,0 +1,16 @@ +import java.util.List; + +class Foo<T extends V,V> { + Foo(List<? extends T> l) { + } +} +class Bar { + void foo(Foo<String,String> foo) {} + + void bar(List<String> l) { + foo<error descr="'foo(Foo<java.lang.String,java.lang.String>)' in 'Bar' cannot be applied to '(Foo<java.lang.String,java.lang.Object>)'">(new Foo<>(l))</error>; + foo<error descr="'foo(Foo<java.lang.String,java.lang.String>)' in 'Bar' cannot be applied to '(Foo<java.lang.String,java.lang.Object>)'">(f(l))</error>; + } + + <T1 extends V1, V1> Foo<T1, V1> f(List<? extends T1> l) {return null;} +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125423.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125423.java new file mode 100644 index 000000000000..d2515eef82eb --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125423.java @@ -0,0 +1,15 @@ +class FooBar<T> { + void foo(final FooBar<?> fooBar){ + fooBar.supertype<error descr="'supertype(java.lang.Class<capture<?>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>; + } + + void foo1(final FooBar<? super T> fooBar){ + fooBar.supertype<error descr="'supertype(java.lang.Class<capture<? super T>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>; + } + + void foo2(final FooBar<? extends T> fooBar){ + fooBar.supertype<error descr="'supertype(java.lang.Class<? super capture<? extends T>>)' in 'FooBar' cannot be applied to '(java.lang.Class<java.lang.Iterable>)'">(Iterable.class)</error>; + } + + void supertype(Class<? super T> superclass) {} +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125744.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125744.java new file mode 100644 index 000000000000..38580705a3c4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125744.java @@ -0,0 +1,14 @@ +class A {} +interface B {} + +class MyTest { + public <M extends A & B> M getInvokedMember() { + return null; + } +} + +class Bar { + void f(MyTest myTest) { + B member = myTest.getInvokedMember(); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125800.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125800.java new file mode 100644 index 000000000000..1ec56b8a6c52 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125800.java @@ -0,0 +1,10 @@ +import java.util.List; + +abstract class Test { + abstract <T extends List<String> & Runnable> T list(); + + public void test() + { + for (String s : list()) {} + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125816.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125816.java new file mode 100644 index 000000000000..e17d850a9106 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA125816.java @@ -0,0 +1,8 @@ +public enum State { + STATE1 { + State s = <error descr="It is illegal to access static member 'STATE2' from enum constructor or instance initializer">STATE2</error>; + }, + STATE2 { + State s = <error descr="It is illegal to access static member 'STATE1' from enum constructor or instance initializer">STATE1</error>; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA24496.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA24496.java new file mode 100644 index 000000000000..454e43d33f08 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA24496.java @@ -0,0 +1,17 @@ +import java.util.List; +import java.util.ArrayList; + +class GenericsError { + + public <T> List<List<T>> method(List<T> list) { + List<List<T>> retVal = new ArrayList<List<T>>(); + retVal.add(list); + return retVal; + } + + public List<List<?>> otherMethod() { + List<?> list = null; + <error descr="Incompatible types. Found: 'java.util.List<java.util.List<capture<?>>>', required: 'java.util.List<java.util.List<?>>'">List<List<?>> result = method(list);</error> + return result; + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57290.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57290.java new file mode 100644 index 000000000000..1898d59e9316 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57290.java @@ -0,0 +1,11 @@ + +class A<T,S> { + class B{} +} + +class C { + void foo(A<?,?>.B x){ + bar<error descr="'bar(A<capture<?>,capture<?>>.B)' in 'C' cannot be applied to '(A<capture<?>,capture<?>>.B)'">(x)</error>; + } + <T> void bar(A<T,T>.B x){} +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57338.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57338.java new file mode 100644 index 000000000000..06e25b11f772 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57338.java @@ -0,0 +1,17 @@ +abstract class A { + abstract <T> void foo(); +} + +abstract class B extends A { + void foo() + { + this.<Integer>foo(); + } +} + +abstract class C { + void foo() + { + this.<error descr="Method 'foo()' does not have type parameters"><Integer></error>foo(); + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57388.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57388.java new file mode 100644 index 000000000000..9a5502a47700 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57388.java @@ -0,0 +1,7 @@ + +class B<T extends Cloneable> {} +class A<T> { + A<B<? extends Cloneable>> foo(A<B<?>> x){ + return x; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA58692.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA58692.java new file mode 100644 index 000000000000..6571375f3fdc --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA58692.java @@ -0,0 +1,20 @@ +class ExposeAnotherProblem { + + class OneClass<T> { + public T get(){ + return null; + } + } + + class AnotherClass<T> {} + + + static <T, R extends OneClass<T>> R method1(AnotherClass<T> param) { + return null; + } + + <E> E method2(AnotherClass<E> param){ + return method1(param).get(); + } + +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67578.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67578.java new file mode 100644 index 000000000000..d2e602c6fdb2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67578.java @@ -0,0 +1,8 @@ +class X<T> { } + +class A<T, S extends X<T>> {} + +class C { + void foo(A<?, X<?>> a){ <error descr="Inferred type 'X<?>' for type parameter 'S' is not within its bound; should extend 'X<capture<?>>'">bar(a)</error>; } + <T, S extends X<T>> void bar(A<T, S> a){ } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67600.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67600.java new file mode 100644 index 000000000000..6f0e625e21c2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA67600.java @@ -0,0 +1,24 @@ +abstract class A<T, S extends T> +{ + abstract S bar(); + void foo(A<Runnable[], ? extends Cloneable[]> a){ + <error descr="Incompatible types. Found: 'java.lang.Cloneable[]', required: 'java.lang.Runnable[]'">Runnable[] x = a.bar();</error> + } +} + +abstract class AB<T, S extends T> +{ + abstract S bar(); + void foo(AB<Runnable, ? extends Cloneable> a){ + Runnable x = a.bar(); + } +} + +abstract class AC<T, S> +{ + abstract S bar(); + void foo(AC<Runnable[], ? extends Cloneable[]> a){ + <error descr="Incompatible types. Found: 'java.lang.Cloneable[]', required: 'java.lang.Runnable[]'">Runnable[] x = a.bar();</error> + } +} + |