diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index ede8d6c7f56..dab097657a3 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.progress.CompilationCanceledStatus +import org.jetbrains.kotlin.synthetic.SAM_LOOKUP_NAME import java.io.File import java.util.* @@ -141,10 +142,10 @@ fun ChangesCollector.getDirtyData( dirtyClassesFqNames.addAll(fqNames) for (name in change.names) { - for (fqName in fqNames) { - dirtyLookupSymbols.add(LookupSymbol(name, fqName.asString())) - } + fqNames.mapTo(dirtyLookupSymbols) { LookupSymbol(name, it.asString()) } } + + fqNames.mapTo(dirtyLookupSymbols) { LookupSymbol(SAM_LOOKUP_NAME.asString(), it.asString()) } } } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticScopes.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticScopes.kt index c0ac565d8aa..f3e23c85db8 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticScopes.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/JavaSyntheticScopes.kt @@ -32,6 +32,9 @@ class JavaSyntheticScopes( ): SyntheticScopes { override val scopes = listOf( JavaSyntheticPropertiesScope(storageManager, lookupTracker), - SamAdapterFunctionsScope(storageManager, languageVersionSettings, samConventionResolver, deprecationResolver) + SamAdapterFunctionsScope( + storageManager, languageVersionSettings, samConventionResolver, deprecationResolver, + lookupTracker + ) ) } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SamAdapterFunctionsScope.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SamAdapterFunctionsScope.kt index 3729ba7b7cc..064f63c45dd 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SamAdapterFunctionsScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SamAdapterFunctionsScope.kt @@ -25,6 +25,8 @@ import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptorImpl import org.jetbrains.kotlin.descriptors.synthetic.SyntheticMemberDescriptor import org.jetbrains.kotlin.incremental.components.LookupLocation +import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.incremental.record import org.jetbrains.kotlin.load.java.components.SamConversionResolver import org.jetbrains.kotlin.load.java.descriptors.JavaClassConstructorDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor @@ -48,11 +50,14 @@ interface SamAdapterExtensionFunctionDescriptor : FunctionDescriptor, SyntheticM override val baseDescriptorForSynthetic: FunctionDescriptor } +val SAM_LOOKUP_NAME = Name.special("") + class SamAdapterFunctionsScope( storageManager: StorageManager, private val languageVersionSettings: LanguageVersionSettings, private val samResolver: SamConversionResolver, - private val deprecationResolver: DeprecationResolver + private val deprecationResolver: DeprecationResolver, + private val lookupTracker: LookupTracker ) : SyntheticScope { private val extensionForFunction = storageManager.createMemoizedFunctionWithNullableValues { function -> extensionForFunctionNotCached(function) @@ -94,6 +99,7 @@ class SamAdapterFunctionsScope( for (function in type.memberScope.getContributedFunctions(name, location)) { val extension = extensionForFunction(function.original)?.substituteForReceiverType(type) if (extension != null) { + recordSamLookupsForParameters(function, location) if (result == null) { result = SmartList() } @@ -108,6 +114,12 @@ class SamAdapterFunctionsScope( } } + private fun recordSamLookupsForParameters(function: FunctionDescriptor, location: LookupLocation) { + for (valueParameter in function.valueParameters) { + recordSamLookupsToClassifier(valueParameter.type.constructor.declarationDescriptor ?: continue, location) + } + } + private fun FunctionDescriptor.substituteForReceiverType(receiverType: KotlinType): FunctionDescriptor? { val containingClass = containingDeclaration as? ClassDescriptor ?: return null val correspondingSupertype = findCorrespondingSupertype(receiverType, containingClass.defaultType) ?: return null @@ -135,16 +147,25 @@ class SamAdapterFunctionsScope( override fun getSyntheticExtensionProperties(receiverTypes: Collection): Collection = emptyList() override fun getSyntheticStaticFunctions(scope: ResolutionScope, name: Name, location: LookupLocation): Collection { - return getSamFunctions(scope.getContributedFunctions(name, location)) + return getSamFunctions(scope.getContributedFunctions(name, location), location) } override fun getSyntheticConstructors(scope: ResolutionScope, name: Name, location: LookupLocation): Collection { val classifier = scope.getContributedClassifier(name, location) ?: return emptyList() + recordSamLookupsToClassifier(classifier, location) return getAllSamConstructors(classifier) } + private fun recordSamLookupsToClassifier(classifier: ClassifierDescriptor, location: LookupLocation) { + if (classifier !is JavaClassDescriptor || classifier.kind != ClassKind.INTERFACE) return + // TODO: We should also record SAM lookups even when the interface is not SAM + if (!SingleAbstractMethodUtils.isSamType(classifier.defaultType)) return + + lookupTracker.record(location, classifier, SAM_LOOKUP_NAME) + } + override fun getSyntheticStaticFunctions(scope: ResolutionScope): Collection { - return getSamFunctions(scope.getContributedDescriptors(DescriptorKindFilter.FUNCTIONS)) + return getSamFunctions(scope.getContributedDescriptors(DescriptorKindFilter.FUNCTIONS), location = null) } override fun getSyntheticConstructors(scope: ResolutionScope): Collection { @@ -172,12 +193,17 @@ class SamAdapterFunctionsScope( return samConstructorForJavaConstructor(constructor) } - private fun getSamFunctions(functions: Collection): List> { + private fun getSamFunctions( + functions: Collection, + location: LookupLocation? + ): List> { return functions.mapNotNull { function -> if (function !is JavaMethodDescriptor) return@mapNotNull null if (function.dispatchReceiverParameter != null) return@mapNotNull null // consider only statics if (!SingleAbstractMethodUtils.isSamAdapterNecessary(function)) return@mapNotNull null + location?.let { recordSamLookupsForParameters(function, it) } + samAdapterForStaticFunction(function) } } diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java index 8027798b08c..c77b06e157d 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunnerTestGenerated.java @@ -1230,11 +1230,23 @@ public class IncrementalJvmCompilerRunnerTestGenerated extends AbstractIncrement 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-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 5049812c42f..1a90efdc7cd 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/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-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java index 26d6d8f26d0..db0a1a81be4 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/JvmLookupTrackerTestGenerated.java +++ b/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-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/C.java b/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/C.java new file mode 100644 index 00000000000..1a2e3e0cfc4 --- /dev/null +++ b/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-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/SAMInterface.java b/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/bar/SAMInterface.java new file mode 100644 index 00000000000..a2c12526057 --- /dev/null +++ b/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-plugin/testData/incremental/lookupTracker/jvm/SAM/build.log b/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/build.log new file mode 100644 index 00000000000..452bd99c419 --- /dev/null +++ b/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-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt b/jps-plugin/testData/incremental/lookupTracker/jvm/SAM/usages.kt new file mode 100644 index 00000000000..97be8052d48 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/JavaClass.java b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/JavaClass.java new file mode 100644 index 00000000000..af51e2ff1f1 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java new file mode 100644 index 00000000000..beaca0eddc3 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java.new b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/SamInterface.java.new new file mode 100644 index 00000000000..0f3a85d741d --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/build.log b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/build.log new file mode 100644 index 00000000000..936fb35618d --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt new file mode 100644 index 00000000000..7810a873f02 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/notUsage.kt @@ -0,0 +1,3 @@ +fun notUsage() { + JavaClass().hashCode() +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt new file mode 100644 index 00000000000..a92386ab9e2 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithMember.kt @@ -0,0 +1,3 @@ +fun usageWithMember() { + JavaClass().foo { "" } +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt new file mode 100644 index 00000000000..ff97effc8a7 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodAddedSamAdapter/usageWithStatic.kt @@ -0,0 +1,3 @@ +fun usageWithStatic() { + JavaClass.bar { "" } +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/JavaClass.java b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/JavaClass.java new file mode 100644 index 00000000000..af51e2ff1f1 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java new file mode 100644 index 00000000000..beaca0eddc3 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new new file mode 100644 index 00000000000..1fdb59474eb --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/SamInterface.java.new @@ -0,0 +1,3 @@ +public interface SamInterface { + String run(); +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/build.log b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/build.log new file mode 100644 index 00000000000..f650ea3b887 --- /dev/null +++ b/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-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt new file mode 100644 index 00000000000..7810a873f02 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/notUsage.kt @@ -0,0 +1,3 @@ +fun notUsage() { + JavaClass().hashCode() +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt new file mode 100644 index 00000000000..a92386ab9e2 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithMember.kt @@ -0,0 +1,3 @@ +fun usageWithMember() { + JavaClass().foo { "" } +} diff --git a/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt new file mode 100644 index 00000000000..ff97effc8a7 --- /dev/null +++ b/jps-plugin/testData/incremental/withJava/javaUsedInKotlin/samConversions/methodSignatureChangedSamAdapter/usageWithStatic.kt @@ -0,0 +1,3 @@ +fun usageWithStatic() { + JavaClass.bar { "" } +}