From 4a98f1dccc6b463b3eaea5fc70f07df23df97b51 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 11 May 2018 18:49:01 +0300 Subject: [PATCH] Misc: Follow-up fixes for 172/182 bunches --- .../CreateCallableFromCallActionFactory.kt.172 | 8 +++++++- .../kotlin/idea/refactoring/kotlinRefactoringUtil.kt.182 | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt.172 b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt.172 index c10e2a81807..f625a241e96 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt.172 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt.172 @@ -129,7 +129,13 @@ sealed class CreateCallableFromCallActionFactory( if (javaClass == null || !javaClass.canRefactor()) return null TypeInfo.StaticContextRequired(TypeInfo(javaClassifier.defaultType, Variance.IN_VARIANCE)) } - is ReceiverValue -> TypeInfo(receiver.type, Variance.IN_VARIANCE) + is ReceiverValue -> { + val originalType = receiver.type + val finalType = if (receiver is ExpressionReceiver) { + getDataFlowAwareTypes(receiver.expression, context, originalType).firstOrNull() ?: originalType + } else originalType + TypeInfo(finalType, Variance.IN_VARIANCE) + } else -> throw AssertionError("Unexpected receiver: $receiver") } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt.182 b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt.182 index 06c609e032d..d2e3c9dd9ac 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt.182 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt.182 @@ -456,7 +456,7 @@ fun PsiElement.canRefactor(): Boolean { this is KtElement || this is PsiMember && language == JavaLanguage.INSTANCE || this is PsiDirectory -> - ProjectRootsUtil.isInProjectSource(this) + ProjectRootsUtil.isInProjectSource(this) || ((containingFile as? KtFile)?.isScript() ?: false) else -> false }