diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 5049812c42f..1a90efdc7cd 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -1071,11 +1071,23 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("methodAddedSamAdapter") + public void testMethodAddedSamAdapter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/"); + doTest(fileName); + } + @TestMetadata("methodSignatureChanged") public void testMethodSignatureChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChanged/"); doTest(fileName); } + + @TestMetadata("methodSignatureChangedSamAdapter") + public void testMethodSignatureChangedSamAdapter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/"); + doTest(fileName); + } } } diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java index 26d6d8f26d0..db0a1a81be4 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java @@ -72,6 +72,12 @@ public class JvmLookupTrackerTestGenerated extends AbstractJvmLookupTrackerTest doTest(fileName); } + @TestMetadata("SAM") + public void testSAM() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/jvm/SAM/"); + doTest(fileName); + } + @TestMetadata("simple") public void testSimple() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/lookupTracker/jvm/simple/"); diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/C.java b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/C.java new file mode 100644 index 00000000000..1a2e3e0cfc4 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/C.java @@ -0,0 +1,6 @@ +package bar; + +public class C { + public void foo(SAMInterface x) {} + public static void bar(SAMInterface x) {} +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/SAMInterface.java b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/SAMInterface.java new file mode 100644 index 00000000000..a2c12526057 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/SAMInterface.java @@ -0,0 +1,5 @@ +package bar; + +public interface SAMInterface { + void apply(String x); +} diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/build.log b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/build.log new file mode 100644 index 00000000000..452bd99c419 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/build.log @@ -0,0 +1,12 @@ +==== INITIAL BUILD ==== +Compiling files: + src/usages.kt +Exit code: COMPILATION_ERROR + None of the following functions can be called with the arguments supplied: +public final fun foo(x: ((x: String!) -> Unit)!): Unit defined in bar.C +public open fun foo(x: SAMInterface!): Unit defined in bar.C + None of the following functions can be called with the arguments supplied: +public final fun bar(x: ((x: String!) -> Unit)!): Unit defined in bar.C +public open fun bar(x: SAMInterface!): Unit defined in bar.C + No value passed for parameter 'function' + diff --git a/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt new file mode 100644 index 00000000000..97be8052d48 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt @@ -0,0 +1,14 @@ +package foo +/*p:bar(C)*/import bar.C +/*p:bar(SAMInterface)*/import bar.SAMInterface + +/*p:foo*/fun foo(c: /*p:bar*/C) /*p:bar(SAMInterface)*/{ + /*p:bar(C)*/c./*c:bar.C c:bar.SAMInterface() c:bar.C(getFoo) c:bar.C(getFOO) p:foo p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.comparisons p:java.lang p:kotlin.jvm*/foo() + /*p:bar(C)*/c./*c:bar.C c:bar.SAMInterface()*/foo /*p:kotlin(Function1) p:kotlin(String)*/{ } + + /*p:bar p:foo p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.comparisons p:java.lang p:kotlin.jvm*/C./*c:bar.C c:bar.SAMInterface()*/bar() + /*p:bar p:foo p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.comparisons p:java.lang p:kotlin.jvm*/C./*c:bar.C c:bar.SAMInterface()*/bar /*p:kotlin(Function1) p:kotlin(String)*/{} + + /*p:bar c:bar.SAMInterface() p:foo p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.ranges p:kotlin.sequences p:kotlin.text p:kotlin.io p:kotlin.comparisons p:java.lang p:kotlin.jvm*/SAMInterface() + /*p:bar c:bar.SAMInterface()*/SAMInterface /*p:kotlin(Function1) p:kotlin(String)*/{} +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/JavaClass.java b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/JavaClass.java new file mode 100644 index 00000000000..af51e2ff1f1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/JavaClass.java @@ -0,0 +1,4 @@ +public class JavaClass { + public void foo(SamInterface s) {} + public static void bar(SamInterface s) {} +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java new file mode 100644 index 00000000000..beaca0eddc3 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java @@ -0,0 +1,3 @@ +public interface SamInterface { + Object run(); +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java.new b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java.new new file mode 100644 index 00000000000..0f3a85d741d --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java.new @@ -0,0 +1,4 @@ +public interface SamInterface { + Object run(); + Object walk(); +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/build.log b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/build.log new file mode 100644 index 00000000000..936fb35618d --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/build.log @@ -0,0 +1,26 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/SamInterface.class +End of files +Exit code: NOTHING_DONE +------------------------------------------ +Compiling files: + src/SamInterface.java +End of files +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/UsageWithMemberKt$usageWithMember$1.class + out/production/module/UsageWithMemberKt.class + out/production/module/UsageWithStaticKt$usageWithStatic$1.class + out/production/module/UsageWithStaticKt.class +End of files +Compiling files: + src/usageWithMember.kt + src/usageWithStatic.kt +End of files +Exit code: ABORT +------------------------------------------ +COMPILATION FAILED +Type mismatch: inferred type is () -> String but SamInterface! was expected +Type mismatch: inferred type is () -> String but SamInterface! was expected diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt new file mode 100644 index 00000000000..7810a873f02 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt @@ -0,0 +1,3 @@ +fun notUsage() { + JavaClass().hashCode() +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt new file mode 100644 index 00000000000..a92386ab9e2 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt @@ -0,0 +1,3 @@ +fun usageWithMember() { + JavaClass().foo { "" } +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt new file mode 100644 index 00000000000..ff97effc8a7 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt @@ -0,0 +1,3 @@ +fun usageWithStatic() { + JavaClass.bar { "" } +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/JavaClass.java b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/JavaClass.java new file mode 100644 index 00000000000..af51e2ff1f1 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/JavaClass.java @@ -0,0 +1,4 @@ +public class JavaClass { + public void foo(SamInterface s) {} + public static void bar(SamInterface s) {} +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java new file mode 100644 index 00000000000..beaca0eddc3 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java @@ -0,0 +1,3 @@ +public interface SamInterface { + Object run(); +} \ No newline at end of file diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new new file mode 100644 index 00000000000..1fdb59474eb --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new @@ -0,0 +1,3 @@ +public interface SamInterface { + String run(); +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/build.log b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/build.log new file mode 100644 index 00000000000..f650ea3b887 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/build.log @@ -0,0 +1,23 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/SamInterface.class +End of files +Exit code: NOTHING_DONE +------------------------------------------ +Compiling files: + src/SamInterface.java +End of files +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/UsageWithMemberKt$usageWithMember$1.class + out/production/module/UsageWithMemberKt.class + out/production/module/UsageWithStaticKt$usageWithStatic$1.class + out/production/module/UsageWithStaticKt.class +End of files +Compiling files: + src/usageWithMember.kt + src/usageWithStatic.kt +End of files +Exit code: OK +------------------------------------------ diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt new file mode 100644 index 00000000000..7810a873f02 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt @@ -0,0 +1,3 @@ +fun notUsage() { + JavaClass().hashCode() +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt new file mode 100644 index 00000000000..a92386ab9e2 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt @@ -0,0 +1,3 @@ +fun usageWithMember() { + JavaClass().foo { "" } +} diff --git a/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt new file mode 100644 index 00000000000..ff97effc8a7 --- /dev/null +++ b/jps/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt @@ -0,0 +1,3 @@ +fun usageWithStatic() { + JavaClass.bar { "" } +}