From e3d5affe5c0532b76a785a57cb218a18332ae9b4 Mon Sep 17 00:00:00 2001 From: Andrei Klunnyi Date: Tue, 21 Feb 2023 15:04:32 +0100 Subject: [PATCH] KT-56221 Gradle KTS: overloaded assignment is not supported ``` java.docsDir = file("src/docs") ``` is a `KtBinaryExpression`. Decision on the assignment validity involves `AbstractAssignPluginResolutionAltererExtension.hasSpecialAnnotation()`. The function requires a parent declaration, which in case of a script is `KtScriptInitializer`. ^KT-56221 fixed --- .../jetbrains/kotlin/cfg/cfgContainingDeclarationUtils.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/cfg/cfgContainingDeclarationUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/cfg/cfgContainingDeclarationUtils.kt index 49a8412feff..2248219c118 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/cfg/cfgContainingDeclarationUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/cfg/cfgContainingDeclarationUtils.kt @@ -18,9 +18,10 @@ val KtElement.containingDeclarationForPseudocode: KtDeclaration? get() = getParentOfType(this, KtDeclarationWithBody::class.java, KtClassOrObject::class.java, KtScript::class.java) ?: getNonStrictParentOfType() -// Should return KtDeclarationWithBody, KtClassOrObject, or KtClassInitializer +// Should return KtDeclarationWithBody, KtClassOrObject, KtClassInitializer or KtScriptInitializer fun KtElement.getElementParentDeclaration(): KtDeclaration? = - getParentOfType(this, KtDeclarationWithBody::class.java, KtClassOrObject::class.java, KtClassInitializer::class.java) + getParentOfType(this, KtDeclarationWithBody::class.java, KtClassOrObject::class.java, KtClassInitializer::class.java, + KtScriptInitializer::class.java) fun KtDeclaration?.getDeclarationDescriptorIncludingConstructors(context: BindingContext): DeclarationDescriptor? { val descriptor = context.get(DECLARATION_TO_DESCRIPTOR, (this as? KtClassInitializer)?.containingDeclaration ?: this)