[FIR] Ignore fake functions in FirExposedVisibilityDeclarationChecker ^KT-51229 Fixed
This commit is contained in:
+5
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||||
@@ -101,8 +102,11 @@ object FirExposedVisibilityDeclarationChecker : FirBasicDeclarationChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkFunction(declaration: FirFunction, reporter: DiagnosticReporter, context: CheckerContext) {
|
private fun checkFunction(declaration: FirFunction, reporter: DiagnosticReporter, context: CheckerContext) {
|
||||||
var functionVisibility = (declaration as FirMemberDeclaration).effectiveVisibility
|
if (declaration.source?.kind is KtFakeSourceElementKind) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var functionVisibility = (declaration as FirMemberDeclaration).effectiveVisibility
|
||||||
if (declaration is FirConstructor && declaration.isFromSealedClass) {
|
if (declaration is FirConstructor && declaration.isFromSealedClass) {
|
||||||
functionVisibility = EffectiveVisibility.PrivateInClass
|
functionVisibility = EffectiveVisibility.PrivateInClass
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// ISSUE: KT-45043
|
// ISSUE: KT-45043, KT-51229
|
||||||
// DIAGNOSTICS: -UNUSED_PARAMETER
|
// DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
|
|
||||||
private class Bar
|
private class Bar
|
||||||
@@ -14,3 +14,11 @@ abstract class AbstractFoo(
|
|||||||
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
|
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
|
||||||
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
|
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
internal sealed class A {
|
||||||
|
protected abstract val b: B?
|
||||||
|
protected data class B(val s: String)
|
||||||
|
internal data class C private constructor(override val b: B?) : A() {
|
||||||
|
constructor() : this(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// ISSUE: KT-45043
|
// ISSUE: KT-45043, KT-51229
|
||||||
// DIAGNOSTICS: -UNUSED_PARAMETER
|
// DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
|
|
||||||
private class Bar
|
private class Bar
|
||||||
@@ -14,3 +14,11 @@ abstract class AbstractFoo(
|
|||||||
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
|
<!EXPOSED_PARAMETER_TYPE!>private val y: Bar<!>,
|
||||||
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
|
<!EXPOSED_PARAMETER_TYPE!>z: Bar<!>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
internal sealed class A {
|
||||||
|
protected abstract val b: B?
|
||||||
|
protected data class B(val s: String)
|
||||||
|
internal data class C private constructor(override val b: B?) : A() {
|
||||||
|
constructor() : this(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,34 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
|
internal sealed class A {
|
||||||
|
protected constructor A()
|
||||||
|
protected abstract val b: A.B?
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
|
||||||
|
protected final data class B {
|
||||||
|
public constructor B(/*0*/ s: kotlin.String)
|
||||||
|
public final val s: kotlin.String
|
||||||
|
public final operator /*synthesized*/ fun component1(): kotlin.String
|
||||||
|
public final /*synthesized*/ fun copy(/*0*/ s: kotlin.String = ...): A.B
|
||||||
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
internal final data class C : A {
|
||||||
|
public constructor C()
|
||||||
|
private constructor C(/*0*/ b: A.B?)
|
||||||
|
protected open override /*1*/ val b: A.B?
|
||||||
|
protected final operator /*synthesized*/ fun component1(): A.B?
|
||||||
|
public final /*synthesized*/ fun copy(/*0*/ b: A.B? = ...): A.C
|
||||||
|
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public abstract class AbstractFoo {
|
public abstract class AbstractFoo {
|
||||||
public constructor AbstractFoo(/*0*/ x: Bar, /*1*/ y: Bar, /*2*/ z: Bar)
|
public constructor AbstractFoo(/*0*/ x: Bar, /*1*/ y: Bar, /*2*/ z: Bar)
|
||||||
public final val x: Bar
|
public final val x: Bar
|
||||||
|
|||||||
Reference in New Issue
Block a user