diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeAlias/CreateTypeAliasFromTypeReferenceActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeAlias/CreateTypeAliasFromTypeReferenceActionFactory.kt index 8c5e4dd8d5a..c01b1480cc4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeAlias/CreateTypeAliasFromTypeReferenceActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeAlias/CreateTypeAliasFromTypeReferenceActionFactory.kt @@ -24,6 +24,9 @@ import org.jetbrains.kotlin.idea.quickfix.IntentionActionPriority import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactoryWithDelegate import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.CreateClassFromTypeReferenceActionFactory import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.getTypeConstraintInfo +import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtFunction import org.jetbrains.kotlin.psi.KtUserType import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch import org.jetbrains.kotlin.types.typeUtil.containsError @@ -35,6 +38,7 @@ object CreateTypeAliasFromTypeReferenceActionFactory : KotlinSingleIntentionActi if (element.getParentOfTypeAndBranch(true) { qualifier } != null) return null val classInfo = CreateClassFromTypeReferenceActionFactory.extractFixData(element, diagnostic) ?: return null + if (classInfo.targetParent is KtDeclaration) return null val expectedType = getTypeConstraintInfo(element)?.upperBound if (expectedType != null && expectedType.containsError()) return null diff --git a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt index 1f797c6b342..03017afda32 100644 --- a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt +++ b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt @@ -1,5 +1,11 @@ -// "Create type alias 'A'" "true" -// ERROR: Unresolved reference: Dummy +// "Create type alias 'A'" "false" +// ACTION: Convert to block body +// ACTION: Create annotation 'A' +// ACTION: Create class 'A' +// ACTION: Create enum 'A' +// ACTION: Create interface 'A' +// ACTION: Remove explicit type specification +// ERROR: Unresolved reference: A package p class T { diff --git a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt.after b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt.after deleted file mode 100644 index 74e7730d5f0..00000000000 --- a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiver.kt.after +++ /dev/null @@ -1,10 +0,0 @@ -// "Create type alias 'A'" "true" -// ERROR: Unresolved reference: Dummy -package p - -class T { - typealias A = Dummy - -} - -fun foo(): T.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt index ebd2b9b83d3..4e3c8b32ccf 100644 --- a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt +++ b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt @@ -1,5 +1,11 @@ -// "Create type alias 'A'" "true" -// ERROR: Unresolved reference: Dummy +// "Create type alias 'A'" "false" +// ACTION: Convert to block body +// ACTION: Create annotation 'A' +// ACTION: Create class 'A' +// ACTION: Create enum 'A' +// ACTION: Create interface 'A' +// ACTION: Remove explicit type specification +// ERROR: Unresolved reference: A package p class T diff --git a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt.after b/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt.after deleted file mode 100644 index 2cee657b8b0..00000000000 --- a/idea/testData/quickfix/createFromUsage/createTypeAlias/typeReference/userTypeReceiverNoBody.kt.after +++ /dev/null @@ -1,9 +0,0 @@ -// "Create type alias 'A'" "true" -// ERROR: Unresolved reference: Dummy -package p - -class T { - typealias A = Dummy -} - -fun foo(): T.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/qualifiedType.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/qualifiedType.kt index 1467f47bd95..80b0dec9b84 100644 --- a/idea/testData/quickfix/createFromUsage/createTypeParameter/qualifiedType.kt +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/qualifiedType.kt @@ -3,7 +3,6 @@ // ACTION: Create class 'X' // ACTION: Create enum 'X' // ACTION: Create interface 'X' -// ACTION: Create type alias 'X' // ERROR: Unresolved reference: X class A diff --git a/idea/testData/quickfix/renameUnresolvedReference/typeRef.kt b/idea/testData/quickfix/renameUnresolvedReference/typeRef.kt index 9695158c4b8..420b2e10dfc 100644 --- a/idea/testData/quickfix/renameUnresolvedReference/typeRef.kt +++ b/idea/testData/quickfix/renameUnresolvedReference/typeRef.kt @@ -3,7 +3,6 @@ // ACTION: Create class 'X' // ACTION: Create enum 'X' // ACTION: Create interface 'X' -// ACTION: Create type alias 'X' // ERROR: Unresolved reference: X // ERROR: Unresolved reference: X class A {