diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt index 16753dc047f..cf829faab71 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt @@ -33,12 +33,14 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.core.setType +import org.jetbrains.kotlin.idea.core.unquote import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.getResolutionScope import org.jetbrains.kotlin.idea.util.getResolvableApproximations import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.* +import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.typeUtil.makeNotNullable @@ -183,7 +185,18 @@ class SpecifyTypeExplicitlyIntention : SelfTargetingRangeIntention, defaultItem: KotlinType ) : ChooseValueExpression(items, defaultItem) { override fun getLookupString(element: KotlinType) = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_NO_ANNOTATIONS.renderType(element) - override fun getResult(element: KotlinType) = IdeDescriptorRenderers.SOURCE_CODE.renderType(element) + + override fun getResult(element: KotlinType): String { + val renderType = IdeDescriptorRenderers.SOURCE_CODE.renderType(element) + val descriptor = element.constructor.declarationDescriptor + if (descriptor?.name?.asString() == renderType) { + val className = (DescriptorToSourceUtils.descriptorToDeclaration(descriptor) as? KtClass)?.nameIdentifier?.text + if (className != null && className != className.unquote()) { + return className + } + } + return renderType + } } fun addTypeAnnotation(editor: Editor?, declaration: KtCallableDeclaration, exprType: KotlinType) { diff --git a/idea/testData/intentions/specifyTypeExplicitly/backticked.kt b/idea/testData/intentions/specifyTypeExplicitly/backticked.kt new file mode 100644 index 00000000000..66be7b9ab5f --- /dev/null +++ b/idea/testData/intentions/specifyTypeExplicitly/backticked.kt @@ -0,0 +1,2 @@ +class `1` +val x = `1`() \ No newline at end of file diff --git a/idea/testData/intentions/specifyTypeExplicitly/backticked.kt.after b/idea/testData/intentions/specifyTypeExplicitly/backticked.kt.after new file mode 100644 index 00000000000..158fdd3c91c --- /dev/null +++ b/idea/testData/intentions/specifyTypeExplicitly/backticked.kt.after @@ -0,0 +1,2 @@ +class `1` +val x: `1` = `1`() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 4d34d83eed0..6b9a6c3b4b9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -16216,6 +16216,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/specifyTypeExplicitly/anonymousObject.kt"); } + @TestMetadata("backticked.kt") + public void testBackticked() throws Exception { + runTest("idea/testData/intentions/specifyTypeExplicitly/backticked.kt"); + } + @TestMetadata("badCaretPosition.kt") public void testBadCaretPosition() throws Exception { runTest("idea/testData/intentions/specifyTypeExplicitly/badCaretPosition.kt");