[FIR] Fix false positive EXPOSED_PARAMETER_TYPE on internal val in constructor of sealed class ^KT-51200 Fixed

This commit is contained in:
Ivan Kochurkin
2022-02-09 16:27:23 +03:00
committed by teamcity
parent 9c5c31bdcb
commit 19285d0569
4 changed files with 10 additions and 16 deletions
@@ -13,9 +13,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.effectiveVisibility
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
import org.jetbrains.kotlin.fir.declarations.utils.fromPrimaryConstructor
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
@@ -103,7 +101,11 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() {
}
private fun checkFunction(declaration: FirFunction, reporter: DiagnosticReporter, context: CheckerContext) {
val functionVisibility = (declaration as FirMemberDeclaration).effectiveVisibility
var functionVisibility = (declaration as FirMemberDeclaration).effectiveVisibility
if (declaration is FirConstructor && declaration.isFromSealedClass) {
functionVisibility = EffectiveVisibility.PrivateInClass
}
if (functionVisibility == EffectiveVisibility.Local) return
if (declaration !is FirConstructor && declaration !is FirPropertyAccessor) {
@@ -1,9 +0,0 @@
// ISSUE: KT-45033
// DIAGNOSTICS: -UNUSED_PARAMETER
internal class Bar
sealed class Foo(
<!EXPOSED_PARAMETER_TYPE!>internal val x: Bar<!>,
<!EXPOSED_PARAMETER_TYPE!>y: Bar<!>
)
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ISSUE: KT-45033
// DIAGNOSTICS: -UNUSED_PARAMETER
@@ -4,9 +4,9 @@
private class Bar
sealed class SealedFoo(
<!EXPOSED_PARAMETER_TYPE!>val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: Bar<!>,
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
val <!EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING!>x<!>: Bar,
private val y: Bar,
z: Bar
)
abstract class AbstractFoo(