From 3c8855c152fd8d7091f0a757e40ec28f8cd8bff7 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Fri, 26 Jan 2024 16:14:24 +0100 Subject: [PATCH] [LightTree] Fix positioning of VAR_TYPE_MISMATCH_ON_OVERRIDE in LT The problem is that `override var b: String` in constructor has token type `VALUE_PARAMETER`, thus was not considered as declaration. ^KT-62704 --- .../LightTreePositioningStrategies.kt | 2 +- .../abstract-classes/p-2/neg/1.3.fir.kt | 77 ------------------- .../abstract-classes/p-2/neg/1.3.kt | 2 +- 3 files changed, 2 insertions(+), 79 deletions(-) delete mode 100644 compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.fir.kt diff --git a/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/LightTreePositioningStrategies.kt b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/LightTreePositioningStrategies.kt index d866c69c86b..cd981f2e588 100644 --- a/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/LightTreePositioningStrategies.kt +++ b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/LightTreePositioningStrategies.kt @@ -141,7 +141,7 @@ object LightTreePositioningStrategies { val (returnTypeRef, nameIdentifierOrPlaceHolder) = when { node.tokenType == KtNodeTypes.PROPERTY_ACCESSOR -> tree.typeReference(node) to tree.accessorNamePlaceholder(node) - node.isDeclaration -> + node.isDeclaration || node.tokenType == KtNodeTypes.VALUE_PARAMETER -> tree.typeReference(node) to tree.nameIdentifier(node) else -> null to null diff --git a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.fir.kt b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.fir.kt deleted file mode 100644 index 3574f435796..00000000000 --- a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.fir.kt +++ /dev/null @@ -1,77 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION -// SKIP_TXT -// COMPARE_WITH_LIGHT_TREE - -/* - * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE) - * - * SPEC VERSION: 0.1-213 - * MAIN LINK: declarations, classifier-declaration, class-declaration, abstract-classes -> paragraph 2 -> sentence 1 - * NUMBER: 3 - * DESCRIPTION: attempt to implement abstract members with invalid types - */ - -// FILE: TestCase1.kt -// TESTCASE NUMBER: 1 -package testPackCase1 -abstract class Base { - abstract val a: CharSequence - abstract var b: CharSequence - - abstract fun foo(): CharSequence -} - -class Case1 : Base() { - override fun foo(): Any - { - return "" - } - - override val a: Any? - get() = TODO() - override var b: String - get() = TODO() - set(value) - {} -} - -// FILE: TestCase2.kt -// TESTCASE NUMBER: 2 -package testPackCase2 -abstract class Base { - abstract val a: CharSequence - abstract var b: CharSequence - - abstract fun foo(): CharSequence -} - -class Case2(override val a: String, override var b: String) : Base() { - override fun foo(): CharSequence? { - return "" - } -} - -// FILE: TestCase3.kt -// TESTCASE NUMBER: 3 -package testPackCase3 -abstract class Base { - abstract val a: CharSequence - abstract var b: CharSequence - - abstract fun foo(): CharSequence -} - - -class Case3 { - class ImplBase1 : MainClass.Base1() {} -} - -class MainClass { - abstract class Base1() { - abstract val a: CharSequence - abstract var b: CharSequence - - abstract fun foo(): CharSequence - } - -} diff --git a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt index 3e1e164573f..34a81496282 100644 --- a/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt +++ b/compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.3.kt @@ -1,6 +1,6 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION // SKIP_TXT -// COMPARE_WITH_LIGHT_TREE /* * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)