From 732e25a3f01022207b5a82f4fe542a32ec367b47 Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Tue, 8 May 2018 12:44:12 +0300 Subject: [PATCH] KotlinElementActionsFactory: fix for getting names from dead pointers (EA-116215) --- .../KotlinElementActionsFactory.kt | 23 +++++++++++-------- .../KotlinElementActionsFactory.kt.173 | 23 +++++++++++-------- .../KotlinElementActionsFactory.kt.182 | 23 +++++++++++-------- 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt index 2e9764915cc..7ef1119b914 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt @@ -288,9 +288,10 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { modifierList = modifierBuilder.modifierList, withBody = true ) + val targetClassName = targetClass.name val addConstructorAction = object : CreateCallableFromUsageFix(targetKtClass, listOf(constructorInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '${targetClass.name}'" + override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '$targetClassName'" } val changePrimaryConstructorAction = run { @@ -382,19 +383,21 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { val parameterInfos = parameters.map { (suggestedNames, expectedTypes) -> ParameterInfo(expectedTypes.toKotlinTypeInfo(resolutionFacade), suggestedNames.names.toList()) } + val methodName = request.methodName val functionInfo = FunctionInfo( - request.methodName, - TypeInfo.Empty, - returnTypeInfo, - listOf(targetContainer), - parameterInfos, - isForCompanion = JvmModifier.STATIC in request.modifiers, - modifierList = modifierBuilder.modifierList, - preferEmptyBody = true + methodName, + TypeInfo.Empty, + returnTypeInfo, + listOf(targetContainer), + parameterInfos, + isForCompanion = JvmModifier.STATIC in request.modifiers, + modifierList = modifierBuilder.modifierList, + preferEmptyBody = true ) + val targetClassName = targetClass.name val action = object : CreateCallableFromUsageFix(targetContainer, listOf(functionInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add method '${request.methodName}' to '${targetClass.name}'" + override fun getText() = "Add method '$methodName' to '$targetClassName'" } return listOf(action) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.173 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.173 index de1b67fa2f3..1bd0c0df084 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.173 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.173 @@ -279,9 +279,10 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { modifierList = modifierBuilder.modifierList, withBody = true ) + val targetClassName = targetClass.name val addConstructorAction = object : CreateCallableFromUsageFix(targetKtClass, listOf(constructorInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '${targetClass.name}'" + override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '$targetClassName'" } val changePrimaryConstructorAction = run { @@ -372,19 +373,21 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { val parameterInfos = request.parameters.map { (suggestedNames, expectedTypes) -> ParameterInfo(expectedTypes.toKotlinTypeInfo(resolutionFacade), suggestedNames.names.toList()) } + val methodName = request.methodName val functionInfo = FunctionInfo( - request.methodName, - TypeInfo.Empty, - returnTypeInfo, - listOf(targetContainer), - parameterInfos, - isForCompanion = JvmModifier.STATIC in request.modifiers, - modifierList = modifierBuilder.modifierList, - preferEmptyBody = true + methodName, + TypeInfo.Empty, + returnTypeInfo, + listOf(targetContainer), + parameterInfos, + isForCompanion = JvmModifier.STATIC in request.modifiers, + modifierList = modifierBuilder.modifierList, + preferEmptyBody = true ) + val targetClassName = targetClass.name val action = object : CreateCallableFromUsageFix(targetContainer, listOf(functionInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add method '${request.methodName}' to '${targetClass.name}'" + override fun getText() = "Add method '$methodName' to '$targetClassName'" } return listOf(action) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182 index ad893eacc1d..0aa63ee29c7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182 @@ -295,9 +295,10 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { modifierList = modifierBuilder.modifierList, withBody = true ) + val targetClassName = targetClass.name val addConstructorAction = object : CreateCallableFromUsageFix(targetKtClass, listOf(constructorInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '${targetClass.name}'" + override fun getText() = "Add ${if (needPrimary) "primary" else "secondary"} constructor to '$targetClassName'" } val changePrimaryConstructorAction = run { @@ -394,19 +395,21 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { val parameterInfos = parameters.map { (suggestedNames, expectedTypes) -> ParameterInfo(expectedTypes.toKotlinTypeInfo(resolutionFacade), suggestedNames.names.toList()) } + val methodName = request.methodName val functionInfo = FunctionInfo( - request.methodName, - TypeInfo.Empty, - returnTypeInfo, - listOf(targetContainer), - parameterInfos, - isForCompanion = JvmModifier.STATIC in request.modifiers, - modifierList = modifierBuilder.modifierList, - preferEmptyBody = true + methodName, + TypeInfo.Empty, + returnTypeInfo, + listOf(targetContainer), + parameterInfos, + isForCompanion = JvmModifier.STATIC in request.modifiers, + modifierList = modifierBuilder.modifierList, + preferEmptyBody = true ) + val targetClassName = targetClass.name val action = object : CreateCallableFromUsageFix(targetContainer, listOf(functionInfo)) { override fun getFamilyName() = "Add method" - override fun getText() = "Add method '${request.methodName}' to '${targetClass.name}'" + override fun getText() = "Add method '$methodName' to '$targetClassName'" } return listOf(action) }