From 29390dab42f5033400f4b1f0c8a94b9300322e47 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 6 Sep 2018 16:17:48 +0300 Subject: [PATCH] Create actual: use analyzeWithContent to resolve annotations correctly So #KT-26626 Fixed --- .../idea/quickfix/expectactual/CreateActualFix.kt | 4 ++-- .../common/common.kt | 11 +++++++++++ .../common/common.kt.after | 11 +++++++++++ .../jvm/Ann.kt.after | 3 +++ .../quickfix/QuickFixMultiModuleTestGenerated.java | 5 +++++ 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt create mode 100644 idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt.after create mode 100644 idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/jvm/Ann.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt index 7e569d6a021..81ba16420b9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt @@ -34,7 +34,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo -import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent import org.jetbrains.kotlin.idea.core.* import org.jetbrains.kotlin.idea.quickfix.KotlinQuickFixAction import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactory @@ -277,7 +277,7 @@ internal fun KtPsiFactory.generateClassOrObjectByExpectedClass( primaryConstructor.delete() } - val context = expectedClass.analyze() + val context = expectedClass.analyzeWithContent() actualClass.superTypeListEntries.zip(expectedClass.superTypeListEntries).forEach { (actualEntry, expectedEntry) -> if (actualEntry !is KtSuperTypeEntry) return@forEach val superType = context[BindingContext.TYPE, expectedEntry.typeReference] diff --git a/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt new file mode 100644 index 00000000000..c6e22e9584b --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt @@ -0,0 +1,11 @@ +// "Create actual annotation class for module testModule_JVM (JVM)" "true" +// TOOL: org.jetbrains.kotlin.idea.inspections.OptionalExpectationInspection + +package kotlin + +annotation class ExperimentalMultiplatform +annotation class OptionalExpectation + +@ExperimentalMultiplatform +@OptionalExpectation +expect annotation class Ann \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt.after b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt.after new file mode 100644 index 00000000000..c6e22e9584b --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/common/common.kt.after @@ -0,0 +1,11 @@ +// "Create actual annotation class for module testModule_JVM (JVM)" "true" +// TOOL: org.jetbrains.kotlin.idea.inspections.OptionalExpectationInspection + +package kotlin + +annotation class ExperimentalMultiplatform +annotation class OptionalExpectation + +@ExperimentalMultiplatform +@OptionalExpectation +expect annotation class Ann \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/jvm/Ann.kt.after b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/jvm/Ann.kt.after new file mode 100644 index 00000000000..18d25d26b36 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/jvm/Ann.kt.after @@ -0,0 +1,3 @@ +package kotlin + +actual annotation class Ann \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index 9c4bfea9fd1..4a6a49bbd55 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -79,6 +79,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/annotationOptionalExpectation/"); } + @TestMetadata("annotationOptionalExpectationNoDir") + public void testAnnotationOptionalExpectationNoDir() throws Exception { + runTest("idea/testData/multiModuleQuickFix/annotationOptionalExpectationNoDir/"); + } + @TestMetadata("class") public void testClass() throws Exception { runTest("idea/testData/multiModuleQuickFix/class/");