From 5aca50b4ca2086a9f67a4e709d23158d261d8409 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 1 Mar 2016 16:08:31 +0300 Subject: [PATCH] Enhanced constructor descriptor should not loose its source! #KT-11256 Fixed --- .../load/java/descriptors/JavaConstructorDescriptor.java | 2 +- .../references/JavaConstructorNotNullParameter.Data.java | 6 ++++++ .../resolve/references/JavaConstructorNotNullParameter.kt | 7 +++++++ .../kotlin/idea/resolve/ReferenceResolveTestGenerated.java | 6 ++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 idea/testData/resolve/references/JavaConstructorNotNullParameter.Data.java create mode 100644 idea/testData/resolve/references/JavaConstructorNotNullParameter.kt diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaConstructorDescriptor.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaConstructorDescriptor.java index b0137f53df3..f5db49cfd44 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaConstructorDescriptor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/JavaConstructorDescriptor.java @@ -118,7 +118,7 @@ public class JavaConstructorDescriptor extends ConstructorDescriptorImpl impleme @NotNull List enhancedValueParametersTypes, @NotNull KotlinType enhancedReturnType ) { - JavaConstructorDescriptor enhanced = createSubstitutedCopy(getContainingDeclaration(), /* original = */ null, getKind(), null, false); + JavaConstructorDescriptor enhanced = createSubstitutedCopy(getContainingDeclaration(), /* original = */ null, getKind(), null, true); // We do not use doSubstitute here as in JavaMethodDescriptor.enhance because type parameters of constructor belongs to class enhanced.initialize( enhancedReceiverType, diff --git a/idea/testData/resolve/references/JavaConstructorNotNullParameter.Data.java b/idea/testData/resolve/references/JavaConstructorNotNullParameter.Data.java new file mode 100644 index 00000000000..065f82f39ec --- /dev/null +++ b/idea/testData/resolve/references/JavaConstructorNotNullParameter.Data.java @@ -0,0 +1,6 @@ +import org.jetbrains.annotations.NotNull; + +public class JavaClass { + public JavaClass(@NotNull String s) { + } +} \ No newline at end of file diff --git a/idea/testData/resolve/references/JavaConstructorNotNullParameter.kt b/idea/testData/resolve/references/JavaConstructorNotNullParameter.kt new file mode 100644 index 00000000000..08c278cc629 --- /dev/null +++ b/idea/testData/resolve/references/JavaConstructorNotNullParameter.kt @@ -0,0 +1,7 @@ +class A { + fun foo() { + JavaClass() + } +} + +// REF: (in JavaClass).JavaClass(String) diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java index 989ab43b3ba..0f033dddc2d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/ReferenceResolveTestGenerated.java @@ -245,6 +245,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest doTest(fileName); } + @TestMetadata("JavaConstructorNotNullParameter.kt") + public void testJavaConstructorNotNullParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/resolve/references/JavaConstructorNotNullParameter.kt"); + doTest(fileName); + } + @TestMetadata("JavaEnumEntry.kt") public void testJavaEnumEntry() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/resolve/references/JavaEnumEntry.kt");