From 4c9af37526bc2e39508e7b630ba532fb4550a303 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 27 Aug 2015 18:47:25 +0300 Subject: [PATCH] Can't navigate to SAM adapter function declaration (KT-8918) #KT-8918 Fixed --- .../load/java/descriptors/JavaMethodDescriptor.java | 2 +- .../resolve/references/ReferenceToSam.Data.java | 11 +++++++++++ idea/testData/resolve/references/ReferenceToSam.kt | 6 ++++++ .../idea/resolve/ReferenceResolveTestGenerated.java | 6 ++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 idea/testData/resolve/references/ReferenceToSam.Data.java create mode 100644 idea/testData/resolve/references/ReferenceToSam.kt diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaMethodDescriptor.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaMethodDescriptor.java index f6bd6ee7333..eb1929aa019 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaMethodDescriptor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaMethodDescriptor.java @@ -102,7 +102,7 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement getAnnotations(), getName(), kind, - SourceElement.NO_SOURCE + original != null ? original.getSource() : SourceElement.NO_SOURCE ); result.setParameterNamesStatus(hasStableParameterNames(), hasSynthesizedParameterNames()); return result; diff --git a/idea/testData/resolve/references/ReferenceToSam.Data.java b/idea/testData/resolve/references/ReferenceToSam.Data.java new file mode 100644 index 00000000000..212f2cf0ca8 --- /dev/null +++ b/idea/testData/resolve/references/ReferenceToSam.Data.java @@ -0,0 +1,11 @@ + + +public class JavaTest { + public interface SAMInterface { + void onEvent(int event); + } + + public static class SomeJavaClass { + public void setListener(SAMInterface listener) {} + } +} diff --git a/idea/testData/resolve/references/ReferenceToSam.kt b/idea/testData/resolve/references/ReferenceToSam.kt new file mode 100644 index 00000000000..b70bbf853b6 --- /dev/null +++ b/idea/testData/resolve/references/ReferenceToSam.kt @@ -0,0 +1,6 @@ +fun some() { + val jClass = JavaTest.SomeJavaClass() + jClass.setListener {} +} + +// REF: (in JavaTest.SomeJavaClass).setListener(SAMInterface) diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java index b13875e0924..bac26bca246 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java @@ -317,6 +317,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest doTest(fileName); } + @TestMetadata("ReferenceToSam.kt") + public void testReferenceToSam() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/ReferenceToSam.kt"); + doTest(fileName); + } + @TestMetadata("ResolveClass.kt") public void testResolveClass() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/resolve/references/ResolveClass.kt");