[FIR] Introduce memberDeclarationNameOrNull

This commit is contained in:
Nikolay Lunyak
2024-01-11 14:29:38 +02:00
committed by Space Team
parent eded51a0f5
commit 52d712e110
3 changed files with 13 additions and 17 deletions
@@ -8,10 +8,8 @@ package org.jetbrains.kotlin.fir.analysis.js.checkers
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.*
internal data class FirJsStableName(
@@ -40,7 +38,6 @@ internal data class FirJsStableName(
}
}
@OptIn(SymbolInternals::class)
fun createStableNameOrNull(symbol: FirBasedSymbol<*>, session: FirSession): FirJsStableName? {
val jsName = symbol.getJsName(session)
if (jsName != null) {
@@ -70,7 +67,7 @@ internal data class FirJsStableName(
// - FirJsStableName.shouldClashBeCaughtByCommonFrontendCheck().
hasPublicName(symbol, session)
) {
val name = (symbol.fir as? FirMemberDeclaration)?.nameOrSpecialName?.identifierOrNullIfSpecial
val name = symbol.memberDeclarationNameOrNull?.identifierOrNullIfSpecial
if (name != null) {
return FirJsStableName(name, symbol, !hasStableNameInJavaScript, symbol.isPresentInGeneratedCode(session))
}
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExpectedTypeConstrai
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeLambdaArgumentConstraintPosition
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
@@ -318,11 +317,11 @@ private fun mapInapplicableCandidateError(
is TypeVariableAsExplicitReceiver -> {
val typeParameter = rootCause.typeParameter
@OptIn(SymbolInternals::class)
FirErrors.BUILDER_INFERENCE_STUB_RECEIVER.createOn(
rootCause.explicitReceiver.source,
typeParameter.symbol.name,
(typeParameter.symbol.containingDeclarationSymbol.fir as FirMemberDeclaration).nameOrSpecialName
typeParameter.symbol.containingDeclarationSymbol.memberDeclarationNameOrNull
?: error("containingDeclarationSymbol must have been a member declaration")
)
}
@@ -541,8 +540,8 @@ private fun ConstraintSystemError.toDiagnostic(
FirErrors.BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION.createOn(
anonymous.source ?: source,
typeParameterSymbol.name,
@OptIn(SymbolInternals::class)
(typeParameterSymbol.containingDeclarationSymbol.fir as FirMemberDeclaration).nameOrSpecialName
typeParameterSymbol.containingDeclarationSymbol.memberDeclarationNameOrNull
?: error("containingDeclarationSymbol must have been a member declaration")
)
}
@@ -6,8 +6,8 @@
package org.jetbrains.kotlin.fir.declarations.utils
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.coneTypeSafe
import org.jetbrains.kotlin.fir.types.isNullableAny
@@ -49,14 +49,14 @@ val FirDeclaration.isNonLocal
val FirCallableDeclaration.isExtension get() = receiverParameter != null
val FirBasedSymbol<*>.memberDeclarationNameOrNull: Name?
// Accessing `fir` is ok, because `nameOrSpecialName` only accesses names
get() = (fir as? FirMemberDeclaration)?.nameOrSpecialName
val FirMemberDeclaration.nameOrSpecialName: Name
get() = when (this) {
is FirCallableDeclaration ->
this.symbol.callableId.callableName
is FirClass ->
this.classId.shortClassName
is FirTypeAlias ->
this.name
is FirCallableDeclaration -> symbol.callableId.callableName
is FirClassLikeDeclaration -> classId.shortClassName
}
val FirNamedFunctionSymbol.isMethodOfAny: Boolean