From 1fdc607898649ecd57bea4273d32efc5eab8669a Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Fri, 15 Sep 2023 15:19:06 +0200 Subject: [PATCH] [K2] Fix EXPECTED_DECLARATION_WITH_BODY not reporting on property accessors We don't want any `expect` function to have body. So we're sure no new false-positive reports are introduced because of removal of `isTopLevelOrInsideClass` condition. ^KT-59899 Fixed --- .../checkers/declaration/FirExpectConsistencyChecker.kt | 6 +++--- .../tests/modifiers/openInExpectInterface.fir.kt | 2 +- .../headerClass/headerClassWithFunctionBody.fir.kt | 4 ++-- .../multiplatform/headerClass/memberPropertyKinds.fir.kt | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectConsistencyChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectConsistencyChecker.kt index cfafdf2b31b..7bfbda68d24 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectConsistencyChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirExpectConsistencyChecker.kt @@ -46,7 +46,7 @@ object FirExpectConsistencyChecker : FirBasicDeclarationChecker() { reporter.reportOn(source, FirErrors.EXPECTED_PRIVATE_DECLARATION, context) } - if (isProhibitedDeclarationWithBody(declaration, isTopLevelOrInsideClass)) { + if (isProhibitedDeclarationWithBody(declaration)) { reporter.reportOn(source, FirErrors.EXPECTED_DECLARATION_WITH_BODY, context) } } @@ -68,7 +68,7 @@ object FirExpectConsistencyChecker : FirBasicDeclarationChecker() { return isTopLevelOrInsideClass && declaration !is FirConstructor && Visibilities.isPrivate(declaration.visibility) } - private fun isProhibitedDeclarationWithBody(declaration: FirMemberDeclaration, isTopLevelOrInsideClass: Boolean): Boolean { - return isTopLevelOrInsideClass && declaration is FirFunction && declaration.hasBody + private fun isProhibitedDeclarationWithBody(declaration: FirMemberDeclaration): Boolean { + return declaration is FirFunction && declaration.hasBody } } diff --git a/compiler/testData/diagnostics/tests/modifiers/openInExpectInterface.fir.kt b/compiler/testData/diagnostics/tests/modifiers/openInExpectInterface.fir.kt index 42d08cf9b9c..eda8a04e8c3 100644 --- a/compiler/testData/diagnostics/tests/modifiers/openInExpectInterface.fir.kt +++ b/compiler/testData/diagnostics/tests/modifiers/openInExpectInterface.fir.kt @@ -13,7 +13,7 @@ expect interface My { open val a: Int open val b: String - open val c: String get() = "" + open val c: String get() = "" open abstract val e: Int val f: Int diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassWithFunctionBody.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassWithFunctionBody.fir.kt index 3f11a23db9c..3c1dd101393 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassWithFunctionBody.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/headerClassWithFunctionBody.fir.kt @@ -18,8 +18,8 @@ val prop: String = "no" var getSet: String - get() = "no" - set(value) {} + get() = "no" + set(value) {} fun functionWithBody(x: Int): Int { return x + 1 diff --git a/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.fir.kt index ab50ab3bba6..e091de9a449 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/headerClass/memberPropertyKinds.fir.kt @@ -17,10 +17,10 @@ var backingFieldVar: String = "no" val customAccessorVal: String - get() = "no" + get() = "no" var customAccessorVar: String - get() = "no" - set(value) {} + get() = "no" + set(value) {} lateinit var lateinitVar: String