diff options
Diffstat (limited to 'java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data')
6 files changed, 295 insertions, 0 deletions
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/LeakingParametersData.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/LeakingParametersData.java new file mode 100644 index 000000000000..ff5887ff2dbb --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/LeakingParametersData.java @@ -0,0 +1,43 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import com.intellij.codeInspection.bytecodeAnalysis.ExpectLeaking; + +/** + * @author lambdamix + */ +public class LeakingParametersData { + int z; + + void test01(@ExpectLeaking Object o1, @ExpectLeaking Object o2, @ExpectLeaking Object o3) { + o1.toString(); + o2.toString(); + o3.toString(); + } + + void test02(@ExpectLeaking LeakingParametersData d) { + System.out.println(d.z); + } + + void test03(int i, @ExpectLeaking LeakingParametersData d) { + System.out.println(d.z); + } + + void test04(long i, @ExpectLeaking LeakingParametersData d) { + System.out.println(d.z); + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test01.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test01.java new file mode 100644 index 000000000000..1b90bb640b39 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test01.java @@ -0,0 +1,78 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import com.intellij.codeInspection.bytecodeAnalysis.ExpectContract; +import com.intellij.codeInspection.bytecodeAnalysis.ExpectNotNull; + +/** + * @author lambdamix + */ +public class Test01 { + static void f(@ExpectNotNull Object o1, @ExpectNotNull Object o2) { + if (o1 == null) throw new NullPointerException(); + else s(o2, o2); + } + + static void g(@ExpectNotNull Object o, boolean b) { + if (b) f(o, o); + else s(o, o); + } + + static void s(@ExpectNotNull Object o1, Object o2) { + t(o1); + v(o2); + } + + static void t(@ExpectNotNull Object o) { + o.toString(); + } + + static void v(Object o) { + + } + + @ExpectContract("null->null") + static String toString1(Object o) { + return o == null ? null : o.toString(); + } + + @ExpectContract("null->!null") + static String toString2(Object o) { + return o == null ? "null" : o.toString(); + } + + @ExpectNotNull + static String constantString() { + return "s"; + } + + @ExpectContract("!null->!null;null->null") + static String idString(String s) { + return s; + } + + @ExpectNotNull + public Test01 getThis() { + return this; + } + + @ExpectNotNull + protected Test01 createRoot() { + return new Test01(); + } + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test02.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test02.java new file mode 100644 index 000000000000..f794ff23009b --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test02.java @@ -0,0 +1,33 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import com.intellij.codeInspection.bytecodeAnalysis.ExpectNotNull; + +/** + * @author lambdamix + */ +public final class Test02 { + @ExpectNotNull + public String notNullString() { + return ""; + } + + @ExpectNotNull + public String notNullStringDelegate() { + return notNullString(); + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test03.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test03.java new file mode 100644 index 000000000000..97903933190e --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/Test03.java @@ -0,0 +1,34 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import com.intellij.codeInspection.bytecodeAnalysis.ExpectNotNull; + +/** + * @author lambdamix + */ +public class Test03 { + + public String toString1() { + return toString(); + } + + @Override + @ExpectNotNull + public String toString() { + return ""; + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestAnnotation.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestAnnotation.java new file mode 100644 index 000000000000..cfe55ff5cd28 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestAnnotation.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * @author lambdamix + */ +@Retention(RetentionPolicy.RUNTIME) +public @interface TestAnnotation { +} diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestConverterData.java b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestConverterData.java new file mode 100644 index 000000000000..254db418e55c --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/codeInspection/bytecodeAnalysis/data/TestConverterData.java @@ -0,0 +1,81 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.codeInspection.bytecodeAnalysis.data; + +import com.intellij.codeInspection.bytecodeAnalysis.BytecodeAnalysisConverter; +import com.intellij.codeInspection.bytecodeAnalysis.ExpectNoPsiKey; + +/** + * @author lambdamix + */ +public class TestConverterData { + + public static class StaticNestedClass { + public StaticNestedClass(Object o) { + + } + public StaticNestedClass[] test01(StaticNestedClass[] ns, StaticNestedClass... ellipsis) { + return ns; + } + } + + public class InnerClass { + // a reference to outer class should be inserted when translating PSI -> ASM + public InnerClass(Object o) {} + + public InnerClass[] Inner2test01(InnerClass[] tests, InnerClass... ellipsis) { + return tests; + } + } + + public static class GenericStaticNestedClass<A> { + public GenericStaticNestedClass(A a) { + + } + public GenericStaticNestedClass[] test01(GenericStaticNestedClass[] ns, GenericStaticNestedClass... ellipsis) { + return ns; + } + + public GenericStaticNestedClass<A>[] test02(GenericStaticNestedClass<A>[] ns, GenericStaticNestedClass<A>... ellipsis) { + return ns; + } + + public class GenericInnerClass<B> { + public GenericInnerClass(B b) {} + + public <C> GenericStaticNestedClass<A> test01(GenericInnerClass<C> c) { + return GenericStaticNestedClass.this; + } + } + } + + public TestConverterData(int x) {} + + // BytecodeAnalysisConverter class is not in the project path, so translation from PSI is impossible + @ExpectNoPsiKey + public BytecodeAnalysisConverter test01(BytecodeAnalysisConverter converter) { + return converter; + } + + @TestAnnotation + public TestConverterData[] test02(@TestAnnotation TestConverterData[] tests) throws Exception { + return tests; + } + + public boolean[] test03(boolean[] b) { + return b; + } +} |