From a33c8409398f87c353000e12a9cdc39b0b9c73a8 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 21 Jan 2016 11:59:09 +0300 Subject: [PATCH] Fix Kotlin build after fixing when-related type checking issues. Filed: KT-10752, KT-10755. --- .../kotlin/idea/references/KotlinReferenceContributor.kt | 9 ++++++--- .../createFromUsage/callableBuilder/CallableBuilder.kt | 7 ++++--- .../createFromUsage/createClass/createClassUtils.kt | 2 +- .../extractionEngine/extractableAnalysisUtil.kt | 2 +- .../kotlin/js/inline/context/FunctionContext.kt | 7 ++++--- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt index ccae65e5175..f0fc216a224 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt @@ -35,9 +35,12 @@ class KotlinReferenceContributor() : PsiReferenceContributor() { if (it.getReferencedNameElementType() != KtTokens.IDENTIFIER) return@registerMultiProvider emptyArray() when (it.readWriteAccess(useResolveForReadWrite = false)) { - ReferenceAccess.READ -> arrayOf(SyntheticPropertyAccessorReference.Getter(it)) - ReferenceAccess.WRITE -> arrayOf(SyntheticPropertyAccessorReference.Setter(it)) - ReferenceAccess.READ_WRITE -> arrayOf(SyntheticPropertyAccessorReference.Getter(it), SyntheticPropertyAccessorReference.Setter(it)) + ReferenceAccess.READ -> + arrayOf(SyntheticPropertyAccessorReference.Getter(it)) + ReferenceAccess.WRITE -> + arrayOf(SyntheticPropertyAccessorReference.Setter(it)) + ReferenceAccess.READ_WRITE -> + arrayOf(SyntheticPropertyAccessorReference.Getter(it), SyntheticPropertyAccessorReference.Setter(it)) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index 0ffb438986a..f0a42057d7e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -455,19 +455,20 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { "private " else "" - val declaration : KtNamedDeclaration = when (callableInfo.kind) { + val declaration: KtNamedDeclaration = when (callableInfo.kind) { CallableKind.FUNCTION, CallableKind.SECONDARY_CONSTRUCTOR -> { val body = when { containingElement is KtClass && containingElement.isInterface() && !config.isExtension -> "" else -> "{}" } + @Suppress("USELESS_CAST") // KT-10755 if (callableInfo is FunctionInfo) { val operatorModifier = if (callableInfo.isOperator) "operator " else "" val infixModifier = if (callableInfo.isInfix) "infix " else "" - psiFactory.createFunction("$modifiers$infixModifier${operatorModifier}fun<> $header $body") + psiFactory.createFunction("$modifiers$infixModifier${operatorModifier}fun<> $header $body") as KtNamedDeclaration } else { - psiFactory.createSecondaryConstructor("${modifiers}constructor$paramList $body") + psiFactory.createSecondaryConstructor("${modifiers}constructor$paramList $body") as KtNamedDeclaration } } CallableKind.CLASS_WITH_PRIMARY_CONSTRUCTOR -> { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/createClassUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/createClassUtils.kt index 0cb3b524c6a..1edd5868ffd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/createClassUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/createClassUtils.kt @@ -61,7 +61,7 @@ internal fun getTargetParentByQualifier( if (qualifierDescriptor.fqName != file.packageFqName) { JavaPsiFacade.getInstance(project).findPackage(qualifierDescriptor.fqName.asString()) } - else file // KT-9972 + else file as PsiElement // KT-9972 else -> null } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt index cb3ed673320..7bfa2b20d47 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt @@ -351,7 +351,7 @@ private fun ExtractionData.analyzeControlFlow( + outDeclarations.map { it.renderForMessage(bindingContext)!! }).sorted() return controlFlow to ErrorMessage.MULTIPLE_OUTPUT.addAdditionalInfo(outValuesStr) } - OutputValueBoxer::AsList + { outputValues -> OutputValueBoxer.AsList(outputValues) } // KT-8596 } else -> controlFlow.boxerFactory diff --git a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/context/FunctionContext.kt b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/context/FunctionContext.kt index dbe16b2faec..dd9455077e1 100644 --- a/js/js.inliner/src/org/jetbrains/kotlin/js/inline/context/FunctionContext.kt +++ b/js/js.inliner/src/org/jetbrains/kotlin/js/inline/context/FunctionContext.kt @@ -112,7 +112,7 @@ abstract class FunctionContext( if (descriptor != null && descriptor in functionReader) return functionReader[descriptor] /** remove ending `()` */ - var callQualifier = call.qualifier + var callQualifier: JsNode = call.qualifier /** remove ending `.call()` */ if (isCallInvocation(call)) { @@ -120,12 +120,13 @@ abstract class FunctionContext( } /** in case 4, 5 get ref (reduce 4, 5 to 2, 3 accordingly) */ + @Suppress("USELESS_CAST") // NB do not remove 'as JsNode' below until KT-10752 is fixed if (callQualifier is JsNameRef) { val staticRef = callQualifier.name?.staticRef callQualifier = when (staticRef) { - is JsNameRef -> staticRef - is JsInvocation -> staticRef + is JsNameRef -> staticRef as JsNode + is JsInvocation -> staticRef as JsNode is JsFunction, null -> callQualifier else -> throw AssertionError("Unexpected static reference type ${staticRef.javaClass}") }