[FIR] Fix false positive NON_INTERNAL_PUBLISHED_API on constructor val

#KT-48234 Fixed
This commit is contained in:
Andrey Zinovyev
2021-08-12 15:20:43 +03:00
committed by TeamCityServer
parent 68f14fdd87
commit a17a61341b
3 changed files with 27 additions and 0 deletions
@@ -13,12 +13,14 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn
import org.jetbrains.kotlin.fir.declarations.FirAnnotatedDeclaration
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName
import org.jetbrains.kotlin.fir.declarations.utils.visibility
object FirPublishedApiChecker : FirAnnotatedDeclarationChecker() {
override fun check(declaration: FirAnnotatedDeclaration, context: CheckerContext, reporter: DiagnosticReporter) {
if (declaration !is FirMemberDeclaration) return
if (declaration is FirValueParameter) return
if (declaration.visibility == Visibilities.Internal) return
val annotation = declaration.getAnnotationByFqName(StandardNames.FqNames.publishedApi) ?: return
reporter.reportOn(annotation.source, FirErrors.NON_INTERNAL_PUBLISHED_API, context)
+8
View File
@@ -70,3 +70,11 @@ class D <!NON_INTERNAL_PUBLISHED_API!>@kotlin.PublishedApi<!> constructor() {
@kotlin.PublishedApi
internal constructor(a: String, b: String, c: String): this()
}
class InConstructor(
<!NON_INTERNAL_PUBLISHED_API!>@PublishedApi<!> val extensionPoint: Any
)
class FalsePositiveInConstructor(
@PublishedApi internal val extensionPoint: Any
)
+17
View File
@@ -52,3 +52,20 @@ public final class E {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class FalsePositiveInConstructor {
public constructor FalsePositiveInConstructor(/*0*/ extensionPoint: kotlin.Any)
@kotlin.PublishedApi internal final val extensionPoint: kotlin.Any
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
}
public final class InConstructor {
public constructor InConstructor(/*0*/ extensionPoint: kotlin.Any)
@kotlin.PublishedApi public final val extensionPoint: kotlin.Any
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
}