[FIR JS] Implement FirJsExportDeclarationChecker
This commit is contained in:
@@ -10,9 +10,11 @@ import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.ConeIntersectionType
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.toLookupTag
|
||||
|
||||
fun FirCallableSymbol<*>.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
|
||||
fir.dispatchReceiverClassTypeOrNull()
|
||||
@@ -41,6 +43,15 @@ fun FirRegularClass.containingClassForLocal(): ConeClassLikeLookupTag? =
|
||||
fun FirDanglingModifierList.containingClass(): ConeClassLikeLookupTag? =
|
||||
containingClassAttr
|
||||
|
||||
fun FirClassLikeSymbol<*>.getContainingClassLookupTag(): ConeClassLikeLookupTag? {
|
||||
return if (classId.isLocal) {
|
||||
(fir as? FirRegularClass)?.containingClassForLocal()
|
||||
} else {
|
||||
val ownerId = classId.outerClassId
|
||||
ownerId?.toLookupTag()
|
||||
}
|
||||
}
|
||||
|
||||
private object ContainingClassKey : FirDeclarationDataKey()
|
||||
var FirCallableDeclaration.containingClassForStaticMemberAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
|
||||
var FirRegularClass.containingClassForLocalAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
|
||||
|
||||
+2
-12
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.fir.declarations.comparators
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.nameOrSpecialName
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRefComparator
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
// Comparing different kinds of callable members by assigning distinct priorities to those members.
|
||||
@@ -28,16 +28,6 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
is FirBackingField -> 0
|
||||
}
|
||||
|
||||
private val FirMemberDeclaration.name: Name
|
||||
get() = when (this) {
|
||||
is FirCallableDeclaration ->
|
||||
this.symbol.callableId.callableName
|
||||
is FirClass ->
|
||||
this.classId.shortClassName
|
||||
is FirTypeAlias ->
|
||||
this.name
|
||||
}
|
||||
|
||||
override fun compare(a: FirMemberDeclaration, b: FirMemberDeclaration): Int {
|
||||
val priorityDiff = a.priority - b.priority
|
||||
if (priorityDiff != 0) {
|
||||
@@ -51,7 +41,7 @@ object FirMemberDeclarationComparator : Comparator<FirMemberDeclaration> {
|
||||
return 0
|
||||
}
|
||||
|
||||
return a.name.compareTo(b.name)
|
||||
return a.nameOrSpecialName.compareTo(b.nameOrSpecialName)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedTypeRef.coneTypeSafe()
|
||||
|
||||
@@ -45,3 +46,13 @@ val FirDeclaration.isNonLocal
|
||||
}
|
||||
|
||||
val FirCallableDeclaration.isExtension get() = receiverParameter != null
|
||||
|
||||
val FirMemberDeclaration.nameOrSpecialName: Name
|
||||
get() = when (this) {
|
||||
is FirCallableDeclaration ->
|
||||
this.symbol.callableId.callableName
|
||||
is FirClass ->
|
||||
this.classId.shortClassName
|
||||
is FirTypeAlias ->
|
||||
this.name
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user