From 3d236b7171ebdeb8d6f79953d7713162c0b1d019 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Wed, 24 Mar 2021 09:28:05 +0100 Subject: [PATCH] Simplify reportOnElement Relates to #KT-38959 --- .../org/jetbrains/kotlin/resolve/DescriptorResolver.java | 3 +-- .../org/jetbrains/kotlin/resolve/calls/CallResolver.java | 3 +-- .../jetbrains/kotlin/resolve/calls/CallResolverUtil.kt | 9 ++++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java index d141dc9164b..c4cf228ea39 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java @@ -1330,8 +1330,7 @@ public class DescriptorResolver { } if (isStaticNestedClass(classDescriptor)) { - PsiElement onReport = (reportErrorsOn instanceof KtConstructorDelegationCall) - ? CallResolverUtilKt.reportOnElement((KtConstructorDelegationCall) reportErrorsOn) : reportErrorsOn; + PsiElement onReport = CallResolverUtilKt.reportOnElement(reportErrorsOn); trace.report(INACCESSIBLE_OUTER_CLASS_EXPRESSION.on(onReport, classDescriptor)); return false; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java index 4288246a604..483d856de33 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java @@ -522,8 +522,7 @@ public class CallResolver { @Nullable private PsiElement calcReportOn(@NotNull KtConstructorDelegationReferenceExpression calleeExpression) { PsiElement delegationCall = calleeExpression.getParent(); - return delegationCall instanceof KtConstructorDelegationCall - ? CallResolverUtilKt.reportOnElement((KtConstructorDelegationCall) delegationCall) : delegationCall; + return CallResolverUtilKt.reportOnElement(delegationCall); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolverUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolverUtil.kt index 780f799141a..cc3cf0c0c67 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolverUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolverUtil.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.resolve.calls.callResolverUtil import com.google.common.collect.Lists +import com.intellij.psi.PsiElement import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.builtins.isSuspendFunctionType @@ -322,6 +323,8 @@ fun createResolutionCandidatesForConstructors( } } -internal fun KtConstructorDelegationCall.reportOnElement() = if (this.isImplicit) { - this.getStrictParentOfType()!! -} else this +internal fun PsiElement.reportOnElement() = + (this as? KtConstructorDelegationCall) + ?.takeIf { isImplicit } + ?.let { getStrictParentOfType()!! } + ?: this