diff options
Diffstat (limited to 'java/java-tests/testData')
20 files changed, 184 insertions, 7 deletions
diff --git a/java/java-tests/testData/codeInsight/completeStatement/Class.java b/java/java-tests/testData/codeInsight/completeStatement/Class.java new file mode 100644 index 000000000000..d3ccae6a574a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/Class.java @@ -0,0 +1 @@ +public class Test<caret>
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completeStatement/Class_after.java b/java/java-tests/testData/codeInsight/completeStatement/Class_after.java new file mode 100644 index 000000000000..f870e03b4672 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completeStatement/Class_after.java @@ -0,0 +1,3 @@ +public class Test { + <caret> +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/smartType/SameSignatureWithGenerics.java b/java/java-tests/testData/codeInsight/completion/smartType/SameSignatureWithGenerics.java new file mode 100644 index 000000000000..3e1ddfe5c55b --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/SameSignatureWithGenerics.java @@ -0,0 +1,8 @@ +class A<T> { + public A(T i, String z, String zz) {} +} +class B extends A<String> { + public B(String i, String zz, String z) { + super(<caret>); + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java index 94c279faa10e..1c3342a46009 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/AssignToFinal.java @@ -32,6 +32,16 @@ public class a21 { void f4() { if (DEBUG && (fi < 3 || fi >4)) return; } + + void f5(final int i) { + (<error descr="Cannot assign a value to final variable 'i'">i</error>) = 1; + } + void f6(final int i) { + (<error descr="Cannot assign a value to final variable 'i'">i</error>)++; + } + void f7(final int i) { + ++(<error descr="Cannot assign a value to final variable 'i'">i</error>); + } } class B extends a21 { public B() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FinalFieldInit.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FinalFieldInit.java index 17bd29a20846..ec01fd7af137 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FinalFieldInit.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FinalFieldInit.java @@ -219,5 +219,12 @@ public class X { } } } +class Y { + private final int mayBeFinal; + + Y() { + (mayBeFinal) = 1; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/SerializableStuff.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/SerializableStuff.java index 2eb209fb1f95..75ca72ab7c82 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/SerializableStuff.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/SerializableStuff.java @@ -59,4 +59,9 @@ class serializableSubclassOfAbstractNoSerializable extends abstractNoSerializabl public static void main(String[] args) { System.out.println(new serializableSubclassOfAbstractNoSerializable().toString()); } + static { + new a(); + new b(); + } + static final long serialVersionUID = 20130808044800000L; }
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA113225.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA113225.java new file mode 100644 index 000000000000..7b4bbaba7fa3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA113225.java @@ -0,0 +1,11 @@ +import java.io.Serializable; + +public class Test { + public <T extends Serializable> void foo(byte[] data) { + T foo = (T) data; + } + + public <T extends Serializable & Runnable> void bar(byte[] data) { + T bar = <error descr="Inconvertible types; cannot cast 'byte[]' to 'T'">(T) data</error>; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/AmbiguityRawGenerics.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/AmbiguityRawGenerics.java index 595787704437..2e4416c6e9cf 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/AmbiguityRawGenerics.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/AmbiguityRawGenerics.java @@ -22,6 +22,6 @@ class AmbiguityRawGenerics { <Z> void foo(I3<Z> s) { } void bar() { - foo<error descr="Ambiguous method call: both 'AmbiguityRawGenerics.foo(I)' and 'AmbiguityRawGenerics.foo(I1)' match">(()-> { throw new RuntimeException(); })</error>; + foo<error descr="Ambiguous method call: both 'AmbiguityRawGenerics.foo(I)' and 'AmbiguityRawGenerics.foo(I3<Object>)' match">(()-> { throw new RuntimeException(); })</error>; } }
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/ReturnTypeAmbiguity.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/ReturnTypeAmbiguity.java new file mode 100644 index 000000000000..8ee9852f366f --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/highlighting/ReturnTypeAmbiguity.java @@ -0,0 +1,45 @@ +class A { + private interface AsyncFunction<I, O> { + Promise<O> apply(I input); + } + + private interface Function<I, O> { + O apply(I input); + } + + private interface Promise<V> { + <T1> Promise<T1> then(Function<? super V, T1> function); + <T2> Promise<T2> then(AsyncFunction<? super V, T2> function); + } + + private static Promise<Integer> calculateLength(String word) { + return null; + } + + public static void main(Promise<String> helloWorld) { + helloWorld.then(A::calculateLength); + } +} + +class AAmbiguous { + private interface AsyncFunction<I, O> { + O apply(I input); + } + + private interface Function<I, O> { + O apply(I input); + } + + private interface Promise<V> { + <T1> Promise<T1> then(Function<? super V, T1> function); + <T2> Promise<T2> then(AsyncFunction<? super V, T2> function); + } + + private static Promise<Integer> calculateLength(String word) { + return null; + } + + public static void main(Promise<String> helloWorld) { + helloWorld.then<error descr="Ambiguous method call: both 'Promise.then(Function<? super String,Promise<Integer>>)' and 'Promise.then(AsyncFunction<? super String,Promise<Integer>>)' match">(AAmbiguous::calculateLength)</error>; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/methodRef/ReturnTypeSpecific.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/methodRef/ReturnTypeSpecific.java index 2a617de711f8..a86f8040ed5f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/methodRef/ReturnTypeSpecific.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/methodRef/ReturnTypeSpecific.java @@ -95,7 +95,7 @@ class MyTest2 { System.out.println(i); } - private static void m(I2 i) { + private static void <warning descr="Private method 'm(MyTest2.I2)' is never used">m</warning>(I2 i) { System.out.println(i); } @@ -104,6 +104,6 @@ class MyTest2 { } public static void main(String[] args) { - m(Foo::new); + m<error descr="Ambiguous method call: both 'MyTest2.m(I2)' and 'MyTest2.m(I3)' match">(Foo::new)</error>; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparableConflicts.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparableConflicts.java new file mode 100644 index 000000000000..0dac8f456767 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/afterComparableConflicts.java @@ -0,0 +1,7 @@ +// "Replace with lambda" "true" +class Test { + { + String o = ""; + Comparable<String> c = o1 -> 0; + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeComparableConflicts.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeComparableConflicts.java new file mode 100644 index 000000000000..f8ba6ced6af4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/anonymous2lambda/beforeComparableConflicts.java @@ -0,0 +1,12 @@ +// "Replace with lambda" "true" +class Test { + { + String o = ""; + Comparable<String> c = new Compa<caret>rable<String>() { + @Override + public int compareTo(String o) { + return 0; + } + }; + } +}
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before1.java index f4fb0184c518..b012f43a1c52 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before1.java @@ -3,7 +3,7 @@ public class Test { void foo() { int k = 0; int i = 0; - if (<caret>i == k) {} + if (i <caret>== k) {} if (i == k) {} if (i == k) {} if (i == k) {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before2.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before2.java index f41c6b8f1b43..e7d9398ae3e8 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before2.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/before2.java @@ -14,7 +14,7 @@ public class Test { void foo2() { int k = 0; int i = 0; - if (<caret>i == k) {} + if (i <caret>== k) {} if (i == k) {} if (i == k) {} if (i == k) {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertFalse.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertFalse.java index 26e29d389a12..8ddc67b7ac1e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertFalse.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertFalse.java @@ -3,6 +3,6 @@ public class Test { void foo2() { int k = 0; int i = 0; - assert <caret>i != k; + assert i <caret>!= k; } }
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertTrue.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertTrue.java index 204b0867fed2..98611528fce5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertTrue.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/fixAll/beforeAssertTrue.java @@ -3,7 +3,7 @@ public class Test { void foo2() { int k = 0; int i = 0; - assert <caret>i == k; + assert i <caret>== k; assert i == k; if (i == k) { System.out.println(); diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ContractInLoopNotTooComplex.java b/java/java-tests/testData/inspection/dataFlow/fixture/ContractInLoopNotTooComplex.java new file mode 100644 index 000000000000..96356dd21c09 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ContractInLoopNotTooComplex.java @@ -0,0 +1,16 @@ +import org.jetbrains.annotations.Contract; + +public class Foo { + + public void main(String[] args) { + for (int i = 0; i < 10; i++) { + assertTrue("str", true); + } + } + + @Contract("_, false->fail") + void assertTrue(String msg, boolean value) { + + } + +}
\ No newline at end of file diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ContractWithNullable.java b/java/java-tests/testData/inspection/dataFlow/fixture/ContractWithNullable.java new file mode 100644 index 000000000000..99cee251aa00 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ContractWithNullable.java @@ -0,0 +1,16 @@ +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Foo { + + public void main(@NotNull Object nn) { + foo(nn).hashCode(); + } + + @Contract("null->null;!null->!null") + @Nullable + Object foo(Object a) { return a; } + +} + diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java b/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java new file mode 100644 index 000000000000..9957eb710fa6 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ReportConstantReferencesAfterFinalFieldAccess.java @@ -0,0 +1,18 @@ +public class Foo { + private final boolean field = hashCode() == 2; + + public void main(boolean b) { + if (!b) { + System.out.println(<warning descr="Value 'b' is always 'false'">b</warning>); + + } + if (field) { + System.out.println(b); + } + if (b) { + System.out.println(<warning descr="Value 'b' is always 'true'">b</warning>); + } + } + +} + diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/UnconditionalForLoop.java b/java/java-tests/testData/inspection/dataFlow/fixture/UnconditionalForLoop.java new file mode 100644 index 000000000000..1f3a769530f9 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/UnconditionalForLoop.java @@ -0,0 +1,18 @@ +import java.util.HashMap; +class A { + private HashMap<String, Integer> mLoaderIds = new HashMap<String, Integer>(); + + public int getLoaderId(final String loaderName) { + Integer loaderId = null; + for (int i = 0; ; i++) { + if (!mLoaderIds.containsValue(i)) { + loaderId = i; + mLoaderIds.put(loaderName, loaderId); + break; + } + } + + + return loaderId; // here IDEA says that "unboxing may produce NPE". + } +}
\ No newline at end of file |