Create actual: use analyzeWithContent to resolve annotations correctly

So #KT-26626 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-09-06 16:17:48 +03:00
parent 26469b3365
commit 29390dab42
5 changed files with 32 additions and 2 deletions
@@ -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]
@@ -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 <caret>Ann
@@ -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 <caret>Ann
@@ -0,0 +1,3 @@
package kotlin
actual annotation class Ann
@@ -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/");