From 203dd93a7ad2ca75e7ec50e0194a6add47cb690a Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 6 Jun 2013 21:19:02 +0400 Subject: [PATCH] Not loading SAM adapters from compiled Kotlin classes. --- .../resolve/java/resolver/JavaFunctionResolver.java | 4 +++- compiler/testData/loadKotlin/fun/NoSamAdapter.txt | 7 +++++++ compiler/testData/loadKotlin/fun/NoSamConstructor.txt | 5 +++++ compiler/testData/loadKotlin/fun/noSamAdapter.kt | 8 ++++++++ compiler/testData/loadKotlin/fun/noSamConstructor.kt | 5 +++++ .../jvm/compiler/LoadCompiledKotlinTestGenerated.java | 10 ++++++++++ .../LazyResolveNamespaceComparingTestGenerated.java | 10 ++++++++++ 7 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/loadKotlin/fun/NoSamAdapter.txt create mode 100644 compiler/testData/loadKotlin/fun/NoSamConstructor.txt create mode 100644 compiler/testData/loadKotlin/fun/noSamAdapter.kt create mode 100644 compiler/testData/loadKotlin/fun/noSamConstructor.kt diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java index b85f90e7b20..8372ed45dc2 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java @@ -280,7 +280,9 @@ public final class JavaFunctionResolver { if (function != null) { functionsFromCurrent.add(function); - ContainerUtil.addIfNotNull(functionsFromCurrent, resolveSamAdapter(function)); + if (!DescriptorResolverUtils.isKotlinClass(psiClass)) { + ContainerUtil.addIfNotNull(functionsFromCurrent, resolveSamAdapter(function)); + } } } diff --git a/compiler/testData/loadKotlin/fun/NoSamAdapter.txt b/compiler/testData/loadKotlin/fun/NoSamAdapter.txt new file mode 100644 index 00000000000..311635dec88 --- /dev/null +++ b/compiler/testData/loadKotlin/fun/NoSamAdapter.txt @@ -0,0 +1,7 @@ +package test + +internal fun foo(/*0*/ r: java.lang.Runnable): jet.Unit + +public trait TaskObject { + internal abstract fun foo(/*0*/ r: java.lang.Runnable): jet.Unit +} diff --git a/compiler/testData/loadKotlin/fun/NoSamConstructor.txt b/compiler/testData/loadKotlin/fun/NoSamConstructor.txt new file mode 100644 index 00000000000..8afb2805767 --- /dev/null +++ b/compiler/testData/loadKotlin/fun/NoSamConstructor.txt @@ -0,0 +1,5 @@ +package test + +public trait Runnable { + internal abstract fun run(): jet.Unit +} diff --git a/compiler/testData/loadKotlin/fun/noSamAdapter.kt b/compiler/testData/loadKotlin/fun/noSamAdapter.kt new file mode 100644 index 00000000000..56722ba6d48 --- /dev/null +++ b/compiler/testData/loadKotlin/fun/noSamAdapter.kt @@ -0,0 +1,8 @@ +package test + +public trait TaskObject { + fun foo(r: Runnable) +} + +fun foo(r: Runnable) { +} \ No newline at end of file diff --git a/compiler/testData/loadKotlin/fun/noSamConstructor.kt b/compiler/testData/loadKotlin/fun/noSamConstructor.kt new file mode 100644 index 00000000000..91cd7ae7e6d --- /dev/null +++ b/compiler/testData/loadKotlin/fun/noSamConstructor.kt @@ -0,0 +1,5 @@ +package test + +public trait Runnable { + fun run() +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java index 89e993dc3e8..595eeab747e 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java @@ -414,6 +414,16 @@ public class LoadCompiledKotlinTestGenerated extends AbstractLoadCompiledKotlinT JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadKotlin/fun"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("NoSamAdapter.kt") + public void testNoSamAdapter() throws Exception { + doTestWithAccessors("compiler/testData/loadKotlin/fun/NoSamAdapter.kt"); + } + + @TestMetadata("NoSamConstructor.kt") + public void testNoSamConstructor() throws Exception { + doTestWithAccessors("compiler/testData/loadKotlin/fun/NoSamConstructor.kt"); + } + @TestMetadata("PropagateDeepSubclass.kt") public void testPropagateDeepSubclass() throws Exception { doTestWithAccessors("compiler/testData/loadKotlin/fun/PropagateDeepSubclass.kt"); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java index b2bcdbb32bf..e26cdf37436 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -416,6 +416,16 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/loadKotlin/fun"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("NoSamAdapter.kt") + public void testNoSamAdapter() throws Exception { + doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/fun/NoSamAdapter.kt"); + } + + @TestMetadata("NoSamConstructor.kt") + public void testNoSamConstructor() throws Exception { + doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/fun/NoSamConstructor.kt"); + } + @TestMetadata("PropagateDeepSubclass.kt") public void testPropagateDeepSubclass() throws Exception { doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/fun/PropagateDeepSubclass.kt");