[FIR] Add two kinds of Java origin to distinguish source and library declarations

This commit is contained in:
Dmitriy Novozhilov
2022-05-26 12:04:36 +03:00
committed by teamcity
parent 26df9d74e8
commit fb57e1ecd5
21 changed files with 84 additions and 47 deletions
@@ -510,7 +510,7 @@ fun FirFunction.getAsForbiddenNamedArgumentsTarget(session: FirSession): Forbidd
// (org.jetbrains.kotlin.resolve.OverridingUtil#selectMostSpecificMember), from which the `hasStableParameterNames` status is
// copied.
FirDeclarationOrigin.IntersectionOverride -> originalForIntersectionOverrideAttr?.getAsForbiddenNamedArgumentsTarget(session)
FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement -> ForbiddenNamedArgumentsTarget.NON_KOTLIN_FUNCTION
is FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement -> ForbiddenNamedArgumentsTarget.NON_KOTLIN_FUNCTION
FirDeclarationOrigin.SamConstructor -> null
FirDeclarationOrigin.SubstitutionOverride -> originalForSubstitutionOverrideAttr?.getAsForbiddenNamedArgumentsTarget(session)
// referenced function of a Kotlin function type
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.toSymbol
import org.jetbrains.kotlin.fir.visitors.transformSingle
@OptIn(AdapterForResolveProcessor::class)
class FirStatusResolveProcessor(
session: FirSession,
scopeSession: ScopeSession
@@ -392,9 +391,8 @@ abstract class AbstractFirStatusResolveTransformer(
}
}
@OptIn(ExperimentalStdlibApi::class)
private fun forceResolveStatusesOfClass(regularClass: FirRegularClass) {
if (regularClass.origin == FirDeclarationOrigin.Java || regularClass.origin == FirDeclarationOrigin.Precompiled) {
if (regularClass.origin is FirDeclarationOrigin.Java || regularClass.origin == FirDeclarationOrigin.Precompiled) {
/*
* If regular class has no corresponding file then it is platform class,
* so we need to resolve supertypes of this class because they could