FIR rename: FirType -> FirTypeRef and related
This commit is contained in:
committed by
Mikhail Glukhikh
parent
1c76a612f9
commit
5afb0a6f4a
@@ -25,10 +25,10 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjection
|
import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
import org.jetbrains.kotlin.load.java.JavaClassFinder
|
||||||
import org.jetbrains.kotlin.load.java.structure.*
|
import org.jetbrains.kotlin.load.java.structure.*
|
||||||
@@ -49,7 +49,7 @@ class JavaSymbolProvider(
|
|||||||
private fun JavaAnnotation.toFirAnnotationCall(): FirAnnotationCall {
|
private fun JavaAnnotation.toFirAnnotationCall(): FirAnnotationCall {
|
||||||
return FirAnnotationCallImpl(
|
return FirAnnotationCallImpl(
|
||||||
session, psi = null, useSiteTarget = null,
|
session, psi = null, useSiteTarget = null,
|
||||||
annotationType = FirResolvedTypeImpl(
|
annotationTypeRef = FirResolvedTypeRefImpl(
|
||||||
session = session,
|
session = session,
|
||||||
psi = null,
|
psi = null,
|
||||||
type = ConeClassTypeImpl(FirClassSymbol(classId!!), emptyArray()),
|
type = ConeClassTypeImpl(FirClassSymbol(classId!!), emptyArray()),
|
||||||
@@ -86,7 +86,7 @@ class JavaSymbolProvider(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun JavaClassifierType.toFirResolvedType(): FirResolvedType {
|
private fun JavaClassifierType.toFirResolvedTypeRef(): FirResolvedTypeRef {
|
||||||
val coneType = when (val classifier = classifier) {
|
val coneType = when (val classifier = classifier) {
|
||||||
is JavaClass -> {
|
is JavaClass -> {
|
||||||
val symbol = session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(classifier.classId!!) as ConeClassSymbol
|
val symbol = session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(classifier.classId!!) as ConeClassSymbol
|
||||||
@@ -100,15 +100,15 @@ class JavaSymbolProvider(
|
|||||||
}
|
}
|
||||||
else -> ConeClassErrorType(reason = "Unexpected classifier: $classifier")
|
else -> ConeClassErrorType(reason = "Unexpected classifier: $classifier")
|
||||||
}
|
}
|
||||||
return FirResolvedTypeImpl(
|
return FirResolvedTypeRefImpl(
|
||||||
session, psi = null, type = coneType,
|
session, psi = null, type = coneType,
|
||||||
isMarkedNullable = false, annotations = annotations.map { it.toFirAnnotationCall() }
|
isMarkedNullable = false, annotations = annotations.map { it.toFirAnnotationCall() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun JavaType.toFirResolvedType(): FirResolvedType {
|
private fun JavaType.toFirResolvedTypeRef(): FirResolvedTypeRef {
|
||||||
if (this is JavaClassifierType) return toFirResolvedType()
|
if (this is JavaClassifierType) return toFirResolvedTypeRef()
|
||||||
return FirResolvedTypeImpl(
|
return FirResolvedTypeRefImpl(
|
||||||
session, psi = null, type = ConeClassErrorType("Unexpected JavaType: $this"),
|
session, psi = null, type = ConeClassErrorType("Unexpected JavaType: $this"),
|
||||||
isMarkedNullable = false, annotations = emptyList()
|
isMarkedNullable = false, annotations = emptyList()
|
||||||
)
|
)
|
||||||
@@ -116,7 +116,7 @@ class JavaSymbolProvider(
|
|||||||
|
|
||||||
private fun JavaType.toConeProjection(): ConeKotlinTypeProjection {
|
private fun JavaType.toConeProjection(): ConeKotlinTypeProjection {
|
||||||
if (this is JavaClassifierType) {
|
if (this is JavaClassifierType) {
|
||||||
return toFirResolvedType().type
|
return toFirResolvedTypeRef().type
|
||||||
}
|
}
|
||||||
return ConeClassErrorType("Unexpected type argument: $this")
|
return ConeClassErrorType("Unexpected type argument: $this")
|
||||||
}
|
}
|
||||||
@@ -154,7 +154,7 @@ class JavaSymbolProvider(
|
|||||||
isExpect = false, isActual = false, isOverride = false,
|
isExpect = false, isActual = false, isOverride = false,
|
||||||
isOperator = true, isInfix = false, isInline = false,
|
isOperator = true, isInfix = false, isInline = false,
|
||||||
isTailRec = false, isExternal = false, isSuspend = false,
|
isTailRec = false, isExternal = false, isSuspend = false,
|
||||||
receiverType = null, returnType = javaMethod.returnType.toFirResolvedType()
|
receiverTypeRef = null, returnTypeRef = javaMethod.returnType.toFirResolvedTypeRef()
|
||||||
).apply {
|
).apply {
|
||||||
for (typeParameter in javaMethod.typeParameters) {
|
for (typeParameter in javaMethod.typeParameters) {
|
||||||
typeParameters += createTypeParameterSymbol(typeParameter.name).fir
|
typeParameters += createTypeParameterSymbol(typeParameter.name).fir
|
||||||
@@ -163,7 +163,7 @@ class JavaSymbolProvider(
|
|||||||
for (valueParameter in javaMethod.valueParameters) {
|
for (valueParameter in javaMethod.valueParameters) {
|
||||||
valueParameters += FirValueParameterImpl(
|
valueParameters += FirValueParameterImpl(
|
||||||
session, null, valueParameter.name ?: Name.special("<anonymous Java parameter>"),
|
session, null, valueParameter.name ?: Name.special("<anonymous Java parameter>"),
|
||||||
returnType = valueParameter.type.toFirResolvedType(),
|
returnTypeRef = valueParameter.type.toFirResolvedTypeRef(),
|
||||||
defaultValue = null, isCrossinline = false, isNoinline = false,
|
defaultValue = null, isCrossinline = false, isNoinline = false,
|
||||||
isVararg = valueParameter.isVararg
|
isVararg = valueParameter.isVararg
|
||||||
)
|
)
|
||||||
@@ -209,7 +209,7 @@ class JavaSymbolProvider(
|
|||||||
}
|
}
|
||||||
addAnnotationsFrom(javaClass)
|
addAnnotationsFrom(javaClass)
|
||||||
for (supertype in javaClass.supertypes) {
|
for (supertype in javaClass.supertypes) {
|
||||||
superTypes += supertype.toFirResolvedType()
|
superTypeRefs += supertype.toFirResolvedTypeRef()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ import org.jetbrains.kotlin.fir.expressions.impl.*
|
|||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
|
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -263,7 +263,7 @@ internal fun generateDestructuringBlock(
|
|||||||
multiDeclaration: KtDestructuringDeclaration,
|
multiDeclaration: KtDestructuringDeclaration,
|
||||||
container: FirNamedDeclaration,
|
container: FirNamedDeclaration,
|
||||||
extractAnnotationsTo: KtAnnotated.(FirAbstractAnnotatedElement) -> Unit,
|
extractAnnotationsTo: KtAnnotated.(FirAbstractAnnotatedElement) -> Unit,
|
||||||
toFirOrImplicitType: KtTypeReference?.() -> FirType
|
toFirOrImplicitTypeRef: KtTypeReference?.() -> FirTypeRef
|
||||||
): FirExpression {
|
): FirExpression {
|
||||||
return FirBlockImpl(session, multiDeclaration).apply {
|
return FirBlockImpl(session, multiDeclaration).apply {
|
||||||
if (container is FirVariable) {
|
if (container is FirVariable) {
|
||||||
@@ -273,7 +273,7 @@ internal fun generateDestructuringBlock(
|
|||||||
for ((index, entry) in multiDeclaration.entries.withIndex()) {
|
for ((index, entry) in multiDeclaration.entries.withIndex()) {
|
||||||
statements += FirVariableImpl(
|
statements += FirVariableImpl(
|
||||||
session, entry, entry.nameAsSafeName,
|
session, entry, entry.nameAsSafeName,
|
||||||
entry.typeReference.toFirOrImplicitType(), isVar,
|
entry.typeReference.toFirOrImplicitTypeRef(), isVar,
|
||||||
FirComponentCallImpl(session, entry, index + 1).apply {
|
FirComponentCallImpl(session, entry, index + 1).apply {
|
||||||
arguments += generateAccessExpression(session, entry, container.name)
|
arguments += generateAccessExpression(session, entry, container.name)
|
||||||
}
|
}
|
||||||
@@ -286,7 +286,7 @@ internal fun generateDestructuringBlock(
|
|||||||
|
|
||||||
internal fun generateTemporaryVariable(
|
internal fun generateTemporaryVariable(
|
||||||
session: FirSession, psi: PsiElement?, name: Name, initializer: FirExpression
|
session: FirSession, psi: PsiElement?, name: Name, initializer: FirExpression
|
||||||
): FirVariable = FirVariableImpl(session, psi, name, FirImplicitTypeImpl(session, psi), false, initializer)
|
): FirVariable = FirVariableImpl(session, psi, name, FirImplicitTypeRefImpl(session, psi), false, initializer)
|
||||||
|
|
||||||
internal fun generateTemporaryVariable(
|
internal fun generateTemporaryVariable(
|
||||||
session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression
|
session: FirSession, psi: PsiElement?, specialName: String, initializer: FirExpression
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
|
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.impl.*
|
import org.jetbrains.kotlin.fir.types.impl.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
@@ -41,11 +41,11 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
|
|||||||
|
|
||||||
class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
||||||
|
|
||||||
private val implicitUnitType = FirImplicitUnitType(session, null)
|
private val implicitUnitType = FirImplicitUnitTypeRef(session, null)
|
||||||
|
|
||||||
private val implicitAnyType = FirImplicitAnyType(session, null)
|
private val implicitAnyType = FirImplicitAnyTypeRef(session, null)
|
||||||
|
|
||||||
private val implicitEnumType = FirImplicitEnumType(session, null)
|
private val implicitEnumType = FirImplicitEnumTypeRef(session, null)
|
||||||
|
|
||||||
fun buildFirFile(file: KtFile): FirFile {
|
fun buildFirFile(file: KtFile): FirFile {
|
||||||
return file.accept(Visitor(), Unit) as FirFile
|
return file.accept(Visitor(), Unit) as FirFile
|
||||||
@@ -80,14 +80,14 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
private inline fun <reified R : FirElement> KtElement.convert(): R =
|
private inline fun <reified R : FirElement> KtElement.convert(): R =
|
||||||
this.accept(this@Visitor, Unit) as R
|
this.accept(this@Visitor, Unit) as R
|
||||||
|
|
||||||
private fun KtTypeReference?.toFirOrImplicitType(): FirType =
|
private fun KtTypeReference?.toFirOrImplicitType(): FirTypeRef =
|
||||||
convertSafe() ?: FirImplicitTypeImpl(session, this)
|
convertSafe() ?: FirImplicitTypeRefImpl(session, this)
|
||||||
|
|
||||||
private fun KtTypeReference?.toFirOrUnitType(): FirType =
|
private fun KtTypeReference?.toFirOrUnitType(): FirTypeRef =
|
||||||
convertSafe() ?: implicitUnitType
|
convertSafe() ?: implicitUnitType
|
||||||
|
|
||||||
private fun KtTypeReference?.toFirOrErrorType(): FirType =
|
private fun KtTypeReference?.toFirOrErrorType(): FirTypeRef =
|
||||||
convertSafe() ?: FirErrorTypeImpl(session, this, if (this == null) "Incomplete code" else "Conversion failed")
|
convertSafe() ?: FirErrorTypeRefImpl(session, this, if (this == null) "Incomplete code" else "Conversion failed")
|
||||||
|
|
||||||
// Here we accept lambda as receiver to prevent expression calculation in stub mode
|
// Here we accept lambda as receiver to prevent expression calculation in stub mode
|
||||||
private fun (() -> KtExpression?).toFirExpression(errorReason: String): FirExpression =
|
private fun (() -> KtExpression?).toFirExpression(errorReason: String): FirExpression =
|
||||||
@@ -190,14 +190,14 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
|
|
||||||
private fun KtPropertyAccessor?.toFirPropertyAccessor(
|
private fun KtPropertyAccessor?.toFirPropertyAccessor(
|
||||||
property: KtProperty,
|
property: KtProperty,
|
||||||
propertyType: FirType,
|
propertyTypeRef: FirTypeRef,
|
||||||
isGetter: Boolean
|
isGetter: Boolean
|
||||||
): FirPropertyAccessor {
|
): FirPropertyAccessor {
|
||||||
if (this == null) {
|
if (this == null) {
|
||||||
return if (isGetter) {
|
return if (isGetter) {
|
||||||
FirDefaultPropertyGetter(session, property, propertyType, property.visibility)
|
FirDefaultPropertyGetter(session, property, propertyTypeRef, property.visibility)
|
||||||
} else {
|
} else {
|
||||||
FirDefaultPropertySetter(session, property, propertyType, property.visibility)
|
FirDefaultPropertySetter(session, property, propertyTypeRef, property.visibility)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val firAccessor = FirPropertyAccessorImpl(
|
val firAccessor = FirPropertyAccessorImpl(
|
||||||
@@ -206,30 +206,30 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
isGetter,
|
isGetter,
|
||||||
visibility,
|
visibility,
|
||||||
if (isGetter) {
|
if (isGetter) {
|
||||||
returnTypeReference?.convertSafe() ?: propertyType
|
returnTypeReference?.convertSafe() ?: propertyTypeRef
|
||||||
} else {
|
} else {
|
||||||
returnTypeReference.toFirOrUnitType()
|
returnTypeReference.toFirOrUnitType()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
firFunctions += firAccessor
|
firFunctions += firAccessor
|
||||||
extractAnnotationsTo(firAccessor)
|
extractAnnotationsTo(firAccessor)
|
||||||
extractValueParametersTo(firAccessor, propertyType)
|
extractValueParametersTo(firAccessor, propertyTypeRef)
|
||||||
if (!isGetter && firAccessor.valueParameters.isEmpty()) {
|
if (!isGetter && firAccessor.valueParameters.isEmpty()) {
|
||||||
firAccessor.valueParameters += FirDefaultSetterValueParameter(session, this, propertyType)
|
firAccessor.valueParameters += FirDefaultSetterValueParameter(session, this, propertyTypeRef)
|
||||||
}
|
}
|
||||||
firAccessor.body = this.buildFirBody()
|
firAccessor.body = this.buildFirBody()
|
||||||
firFunctions.removeLast()
|
firFunctions.removeLast()
|
||||||
return firAccessor
|
return firAccessor
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtParameter.toFirValueParameter(defaultType: FirType? = null): FirValueParameter {
|
private fun KtParameter.toFirValueParameter(defaultTypeRef: FirTypeRef? = null): FirValueParameter {
|
||||||
val firValueParameter = FirValueParameterImpl(
|
val firValueParameter = FirValueParameterImpl(
|
||||||
session,
|
session,
|
||||||
this,
|
this,
|
||||||
nameAsSafeName,
|
nameAsSafeName,
|
||||||
when {
|
when {
|
||||||
typeReference != null -> typeReference.toFirOrErrorType()
|
typeReference != null -> typeReference.toFirOrErrorType()
|
||||||
defaultType != null -> defaultType
|
defaultTypeRef != null -> defaultTypeRef
|
||||||
else -> null.toFirOrErrorType()
|
else -> null.toFirOrErrorType()
|
||||||
},
|
},
|
||||||
if (hasDefaultValue()) {
|
if (hasDefaultValue()) {
|
||||||
@@ -258,8 +258,8 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
isOverride = hasModifier(KtTokens.OVERRIDE_KEYWORD),
|
isOverride = hasModifier(KtTokens.OVERRIDE_KEYWORD),
|
||||||
isConst = false,
|
isConst = false,
|
||||||
isLateInit = false,
|
isLateInit = false,
|
||||||
receiverType = null,
|
receiverTypeRef = null,
|
||||||
returnType = type,
|
returnTypeRef = type,
|
||||||
isVar = isMutable,
|
isVar = isMutable,
|
||||||
initializer = null,
|
initializer = null,
|
||||||
getter = FirDefaultPropertyGetter(session, this, type, visibility),
|
getter = FirDefaultPropertyGetter(session, this, type, visibility),
|
||||||
@@ -284,10 +284,10 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
|
|
||||||
private fun KtDeclarationWithBody.extractValueParametersTo(
|
private fun KtDeclarationWithBody.extractValueParametersTo(
|
||||||
container: FirFunction,
|
container: FirFunction,
|
||||||
defaultType: FirType? = null
|
defaultTypeRef: FirTypeRef? = null
|
||||||
) {
|
) {
|
||||||
for (valueParameter in valueParameters) {
|
for (valueParameter in valueParameters) {
|
||||||
(container.valueParameters as MutableList<FirValueParameter>) += valueParameter.toFirValueParameter(defaultType)
|
(container.valueParameters as MutableList<FirValueParameter>) += valueParameter.toFirValueParameter(defaultTypeRef)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,58 +298,58 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtClassOrObject.extractSuperTypeListEntriesTo(
|
private fun KtClassOrObject.extractSuperTypeListEntriesTo(
|
||||||
container: FirModifiableClass, delegatedSelfType: FirType
|
container: FirModifiableClass, delegatedSelfTypeRef: FirTypeRef
|
||||||
): FirType? {
|
): FirTypeRef? {
|
||||||
var superTypeCallEntry: KtSuperTypeCallEntry? = null
|
var superTypeCallEntry: KtSuperTypeCallEntry? = null
|
||||||
var delegatedSuperType: FirType? = null
|
var delegatedSuperTypeRef: FirTypeRef? = null
|
||||||
for (superTypeListEntry in superTypeListEntries) {
|
for (superTypeListEntry in superTypeListEntries) {
|
||||||
when (superTypeListEntry) {
|
when (superTypeListEntry) {
|
||||||
is KtSuperTypeEntry -> {
|
is KtSuperTypeEntry -> {
|
||||||
container.superTypes += superTypeListEntry.typeReference.toFirOrErrorType()
|
container.superTypeRefs += superTypeListEntry.typeReference.toFirOrErrorType()
|
||||||
}
|
}
|
||||||
is KtSuperTypeCallEntry -> {
|
is KtSuperTypeCallEntry -> {
|
||||||
delegatedSuperType = superTypeListEntry.calleeExpression.typeReference.toFirOrErrorType()
|
delegatedSuperTypeRef = superTypeListEntry.calleeExpression.typeReference.toFirOrErrorType()
|
||||||
container.superTypes += delegatedSuperType
|
container.superTypeRefs += delegatedSuperTypeRef
|
||||||
superTypeCallEntry = superTypeListEntry
|
superTypeCallEntry = superTypeListEntry
|
||||||
}
|
}
|
||||||
is KtDelegatedSuperTypeEntry -> {
|
is KtDelegatedSuperTypeEntry -> {
|
||||||
val type = superTypeListEntry.typeReference.toFirOrErrorType()
|
val type = superTypeListEntry.typeReference.toFirOrErrorType()
|
||||||
container.superTypes += FirDelegatedTypeImpl(
|
container.superTypeRefs += FirDelegatedTypeRefImpl(
|
||||||
type,
|
type,
|
||||||
{ superTypeListEntry.delegateExpression }.toFirExpression("Should have delegate")
|
{ superTypeListEntry.delegateExpression }.toFirExpression("Should have delegate")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this is KtClass && this.isInterface()) return delegatedSuperType
|
if (this is KtClass && this.isInterface()) return delegatedSuperTypeRef
|
||||||
|
|
||||||
fun isEnum() = this is KtClass && this.isEnum()
|
fun isEnum() = this is KtClass && this.isEnum()
|
||||||
// TODO: in case we have no primary constructor,
|
// TODO: in case we have no primary constructor,
|
||||||
// it may be not possible to determine delegated super type right here
|
// it may be not possible to determine delegated super type right here
|
||||||
delegatedSuperType = delegatedSuperType ?: (if (isEnum()) implicitEnumType else implicitAnyType)
|
delegatedSuperTypeRef = delegatedSuperTypeRef ?: (if (isEnum()) implicitEnumType else implicitAnyType)
|
||||||
if (!this.hasPrimaryConstructor()) return delegatedSuperType
|
if (!this.hasPrimaryConstructor()) return delegatedSuperTypeRef
|
||||||
|
|
||||||
val firPrimaryConstructor = primaryConstructor.toFirConstructor(
|
val firPrimaryConstructor = primaryConstructor.toFirConstructor(
|
||||||
superTypeCallEntry,
|
superTypeCallEntry,
|
||||||
delegatedSuperType,
|
delegatedSuperTypeRef,
|
||||||
delegatedSelfType,
|
delegatedSelfTypeRef,
|
||||||
owner = this
|
owner = this
|
||||||
)
|
)
|
||||||
container.declarations += firPrimaryConstructor
|
container.declarations += firPrimaryConstructor
|
||||||
return delegatedSuperType
|
return delegatedSuperTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtPrimaryConstructor?.toFirConstructor(
|
private fun KtPrimaryConstructor?.toFirConstructor(
|
||||||
superTypeCallEntry: KtSuperTypeCallEntry?,
|
superTypeCallEntry: KtSuperTypeCallEntry?,
|
||||||
delegatedSuperType: FirType,
|
delegatedSuperTypeRef: FirTypeRef,
|
||||||
delegatedSelfType: FirType,
|
delegatedSelfTypeRef: FirTypeRef,
|
||||||
owner: KtClassOrObject
|
owner: KtClassOrObject
|
||||||
): FirConstructor {
|
): FirConstructor {
|
||||||
val constructorCallee = superTypeCallEntry?.calleeExpression
|
val constructorCallee = superTypeCallEntry?.calleeExpression
|
||||||
val firDelegatedCall = FirDelegatedConstructorCallImpl(
|
val firDelegatedCall = FirDelegatedConstructorCallImpl(
|
||||||
session,
|
session,
|
||||||
constructorCallee ?: (this ?: owner),
|
constructorCallee ?: (this ?: owner),
|
||||||
delegatedSuperType,
|
delegatedSuperTypeRef,
|
||||||
isThis = false
|
isThis = false
|
||||||
).apply {
|
).apply {
|
||||||
if (!stubMode) {
|
if (!stubMode) {
|
||||||
@@ -363,7 +363,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
this?.visibility ?: Visibilities.UNKNOWN,
|
this?.visibility ?: Visibilities.UNKNOWN,
|
||||||
this?.hasExpectModifier() ?: false,
|
this?.hasExpectModifier() ?: false,
|
||||||
this?.hasActualModifier() ?: false,
|
this?.hasActualModifier() ?: false,
|
||||||
delegatedSelfType,
|
delegatedSelfTypeRef,
|
||||||
firDelegatedCall
|
firDelegatedCall
|
||||||
)
|
)
|
||||||
this?.extractAnnotationsTo(firConstructor)
|
this?.extractAnnotationsTo(firConstructor)
|
||||||
@@ -394,8 +394,8 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
return firFile
|
return firFile
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtClassOrObject.toDelegatedSelfType(): FirType =
|
private fun KtClassOrObject.toDelegatedSelfType(): FirTypeRef =
|
||||||
FirUserTypeImpl(session, this, isNullable = false).apply {
|
FirUserTypeRefImpl(session, this, isNullable = false).apply {
|
||||||
qualifier.add(FirQualifierPartImpl(nameAsSafeName))
|
qualifier.add(FirQualifierPartImpl(nameAsSafeName))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
} else {
|
} else {
|
||||||
typeReference.toFirOrImplicitType()
|
typeReference.toFirOrImplicitType()
|
||||||
}
|
}
|
||||||
val receiverType = function.receiverTypeReference.convertSafe<FirType>()
|
val receiverType = function.receiverTypeReference.convertSafe<FirTypeRef>()
|
||||||
val firFunction = if (function.name == null) {
|
val firFunction = if (function.name == null) {
|
||||||
FirAnonymousFunctionImpl(session, function, returnType, receiverType)
|
FirAnonymousFunctionImpl(session, function, returnType, receiverType)
|
||||||
} else {
|
} else {
|
||||||
@@ -587,8 +587,8 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
|
|
||||||
override fun visitLambdaExpression(expression: KtLambdaExpression, data: Unit): FirElement {
|
override fun visitLambdaExpression(expression: KtLambdaExpression, data: Unit): FirElement {
|
||||||
val literal = expression.functionLiteral
|
val literal = expression.functionLiteral
|
||||||
val returnType = FirImplicitTypeImpl(session, literal)
|
val returnType = FirImplicitTypeRefImpl(session, literal)
|
||||||
val receiverType = FirImplicitTypeImpl(session, literal)
|
val receiverType = FirImplicitTypeRefImpl(session, literal)
|
||||||
return FirAnonymousFunctionImpl(session, literal, returnType, receiverType).apply {
|
return FirAnonymousFunctionImpl(session, literal, returnType, receiverType).apply {
|
||||||
firFunctions += this
|
firFunctions += this
|
||||||
var destructuringBlock: FirExpression? = null
|
var destructuringBlock: FirExpression? = null
|
||||||
@@ -597,7 +597,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
valueParameters += if (multiDeclaration != null) {
|
valueParameters += if (multiDeclaration != null) {
|
||||||
val multiParameter = FirValueParameterImpl(
|
val multiParameter = FirValueParameterImpl(
|
||||||
session, valueParameter, Name.special("<destruct>"),
|
session, valueParameter, Name.special("<destruct>"),
|
||||||
FirImplicitTypeImpl(session, multiDeclaration),
|
FirImplicitTypeRefImpl(session, multiDeclaration),
|
||||||
defaultValue = null, isCrossinline = false, isNoinline = false, isVararg = false
|
defaultValue = null, isCrossinline = false, isNoinline = false, isVararg = false
|
||||||
)
|
)
|
||||||
destructuringBlock = generateDestructuringBlock(
|
destructuringBlock = generateDestructuringBlock(
|
||||||
@@ -624,8 +624,8 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtSecondaryConstructor.toFirConstructor(
|
private fun KtSecondaryConstructor.toFirConstructor(
|
||||||
delegatedSuperType: FirType?,
|
delegatedSuperTypeRef: FirTypeRef?,
|
||||||
delegatedSelfType: FirType,
|
delegatedSelfTypeRef: FirTypeRef,
|
||||||
hasPrimaryConstructor: Boolean
|
hasPrimaryConstructor: Boolean
|
||||||
): FirConstructor {
|
): FirConstructor {
|
||||||
val firConstructor = FirConstructorImpl(
|
val firConstructor = FirConstructorImpl(
|
||||||
@@ -635,8 +635,8 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
visibility,
|
visibility,
|
||||||
hasExpectModifier(),
|
hasExpectModifier(),
|
||||||
hasActualModifier(),
|
hasActualModifier(),
|
||||||
delegatedSelfType,
|
delegatedSelfTypeRef,
|
||||||
getDelegationCall().convert(delegatedSuperType, delegatedSelfType, hasPrimaryConstructor)
|
getDelegationCall().convert(delegatedSuperTypeRef, delegatedSelfTypeRef, hasPrimaryConstructor)
|
||||||
)
|
)
|
||||||
firFunctions += firConstructor
|
firFunctions += firConstructor
|
||||||
extractAnnotationsTo(firConstructor)
|
extractAnnotationsTo(firConstructor)
|
||||||
@@ -647,14 +647,14 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtConstructorDelegationCall.convert(
|
private fun KtConstructorDelegationCall.convert(
|
||||||
delegatedSuperType: FirType?,
|
delegatedSuperTypeRef: FirTypeRef?,
|
||||||
delegatedSelfType: FirType,
|
delegatedSelfTypeRef: FirTypeRef,
|
||||||
hasPrimaryConstructor: Boolean
|
hasPrimaryConstructor: Boolean
|
||||||
): FirDelegatedConstructorCall {
|
): FirDelegatedConstructorCall {
|
||||||
val isThis = isCallToThis || (isImplicit && hasPrimaryConstructor)
|
val isThis = isCallToThis || (isImplicit && hasPrimaryConstructor)
|
||||||
val delegatedType = when {
|
val delegatedType = when {
|
||||||
isThis -> delegatedSelfType
|
isThis -> delegatedSelfTypeRef
|
||||||
else -> delegatedSuperType ?: FirErrorTypeImpl(session, this, "No super type")
|
else -> delegatedSuperTypeRef ?: FirErrorTypeRefImpl(session, this, "No super type")
|
||||||
}
|
}
|
||||||
return FirDelegatedConstructorCallImpl(
|
return FirDelegatedConstructorCallImpl(
|
||||||
session,
|
session,
|
||||||
@@ -732,11 +732,11 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
|
|
||||||
val unwrappedElement = typeElement.unwrapNullable()
|
val unwrappedElement = typeElement.unwrapNullable()
|
||||||
val firType = when (unwrappedElement) {
|
val firType = when (unwrappedElement) {
|
||||||
is KtDynamicType -> FirDynamicTypeImpl(session, typeReference, isNullable)
|
is KtDynamicType -> FirDynamicTypeRefImpl(session, typeReference, isNullable)
|
||||||
is KtUserType -> {
|
is KtUserType -> {
|
||||||
var referenceExpression = unwrappedElement.referenceExpression
|
var referenceExpression = unwrappedElement.referenceExpression
|
||||||
if (referenceExpression != null) {
|
if (referenceExpression != null) {
|
||||||
val userType = FirUserTypeImpl(
|
val userType = FirUserTypeRefImpl(
|
||||||
session, typeReference, isNullable
|
session, typeReference, isNullable
|
||||||
)
|
)
|
||||||
var qualifier: KtUserType? = unwrappedElement
|
var qualifier: KtUserType? = unwrappedElement
|
||||||
@@ -755,11 +755,11 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
|
|
||||||
userType
|
userType
|
||||||
} else {
|
} else {
|
||||||
FirErrorTypeImpl(session, typeReference, "Incomplete user type")
|
FirErrorTypeRefImpl(session, typeReference, "Incomplete user type")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is KtFunctionType -> {
|
is KtFunctionType -> {
|
||||||
val functionType = FirFunctionTypeImpl(
|
val functionType = FirFunctionTypeRefImpl(
|
||||||
session,
|
session,
|
||||||
typeReference,
|
typeReference,
|
||||||
isNullable,
|
isNullable,
|
||||||
@@ -772,7 +772,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
}
|
}
|
||||||
functionType
|
functionType
|
||||||
}
|
}
|
||||||
null -> FirErrorTypeImpl(session, typeReference, "Unwrapped type is null")
|
null -> FirErrorTypeRefImpl(session, typeReference, "Unwrapped type is null")
|
||||||
else -> throw AssertionError("Unexpected type element: ${unwrappedElement.text}")
|
else -> throw AssertionError("Unexpected type element: ${unwrappedElement.text}")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -806,7 +806,7 @@ class RawFirBuilder(val session: FirSession, val stubMode: Boolean) {
|
|||||||
parameter.extractAnnotationsTo(firTypeParameter)
|
parameter.extractAnnotationsTo(firTypeParameter)
|
||||||
val extendsBound = parameter.extendsBound
|
val extendsBound = parameter.extendsBound
|
||||||
if (extendsBound != null) {
|
if (extendsBound != null) {
|
||||||
firTypeParameter.bounds += extendsBound.convert<FirType>()
|
firTypeParameter.bounds += extendsBound.convert<FirTypeRef>()
|
||||||
}
|
}
|
||||||
val owner = parameter.getStrictParentOfType<KtTypeParameterListOwner>() ?: return firTypeParameter
|
val owner = parameter.getStrictParentOfType<KtTypeParameterListOwner>() ?: return firTypeParameter
|
||||||
for (typeConstraint in owner.typeConstraints) {
|
for (typeConstraint in owner.typeConstraints) {
|
||||||
|
|||||||
+3
-3
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.FirRenderer
|
|||||||
import org.jetbrains.kotlin.fir.FirSessionBase
|
import org.jetbrains.kotlin.fir.FirSessionBase
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
@@ -126,7 +126,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
|||||||
override fun visitElement(element: FirElement) {
|
override fun visitElement(element: FirElement) {
|
||||||
// NB: types are reused sometimes (e.g. in accessors)
|
// NB: types are reused sometimes (e.g. in accessors)
|
||||||
if (!result.add(element)) {
|
if (!result.add(element)) {
|
||||||
if (element !is FirType) {
|
if (element !is FirTypeRef) {
|
||||||
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
||||||
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
|||||||
|
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Unit): CompositeTransformResult<E> {
|
override fun <E : FirElement> transformElement(element: E, data: Unit): CompositeTransformResult<E> {
|
||||||
if (!result.add(element)) {
|
if (!result.add(element)) {
|
||||||
if (element !is FirType) {
|
if (element !is FirTypeRef) {
|
||||||
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
val elementDump = StringBuilder().also { element.accept(FirRenderer(it)) }.toString()
|
||||||
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
throw AssertionError("FirElement ${element.javaClass} is visited twice: $elementDump")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,18 +10,18 @@ import org.jetbrains.kotlin.fir.scopes.FirPosition
|
|||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirUserType
|
import org.jetbrains.kotlin.fir.types.FirUserTypeRef
|
||||||
|
|
||||||
interface FirTypeResolver {
|
interface FirTypeResolver {
|
||||||
|
|
||||||
fun resolveType(type: FirType, scope: FirScope, position: FirPosition): ConeKotlinType
|
fun resolveType(typeRef: FirTypeRef, scope: FirScope, position: FirPosition): ConeKotlinType
|
||||||
fun resolveToSymbol(type: FirType, scope: FirScope, position: FirPosition): ConeSymbol?
|
fun resolveToSymbol(typeRef: FirTypeRef, scope: FirScope, position: FirPosition): ConeSymbol?
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getInstance(session: FirSession): FirTypeResolver = session.service()
|
fun getInstance(session: FirSession): FirTypeResolver = session.service()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resolveUserType(type: FirUserType, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType
|
fun resolveUserType(typeRef: FirUserTypeRef, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType
|
||||||
}
|
}
|
||||||
+3
-3
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.symbols.*
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FictitiousFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FictitiousFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.builtins.BuiltInsBinaryVersion
|
import org.jetbrains.kotlin.metadata.builtins.BuiltInsBinaryVersion
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||||
@@ -112,9 +112,9 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
|
|||||||
typeDeserializer.classLikeType(supertypeProto)
|
typeDeserializer.classLikeType(supertypeProto)
|
||||||
}// TODO: + c.components.additionalClassPartsProvider.getSupertypes(this@DeserializedClassDescriptor)
|
}// TODO: + c.components.additionalClassPartsProvider.getSupertypes(this@DeserializedClassDescriptor)
|
||||||
|
|
||||||
superTypesDeserialized.mapNotNullTo(superTypes) {
|
superTypesDeserialized.mapNotNullTo(superTypeRefs) {
|
||||||
if (it == null) return@mapNotNullTo null
|
if (it == null) return@mapNotNullTo null
|
||||||
FirResolvedTypeImpl(session, null, it, false, emptyList())
|
FirResolvedTypeRefImpl(session, null, it, false, emptyList())
|
||||||
}
|
}
|
||||||
// TODO: declarations (probably should be done later)
|
// TODO: declarations (probably should be done later)
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-31
@@ -26,7 +26,7 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
when (it) {
|
when (it) {
|
||||||
is FirStarProjection -> StarProjection
|
is FirStarProjection -> StarProjection
|
||||||
is FirTypeProjectionWithVariance -> {
|
is FirTypeProjectionWithVariance -> {
|
||||||
val type = (it.type as FirResolvedType).type
|
val type = (it.typeRef as FirResolvedTypeRef).type
|
||||||
when (it.variance) {
|
when (it.variance) {
|
||||||
Variance.INVARIANT -> type
|
Variance.INVARIANT -> type
|
||||||
Variance.IN_VARIANCE -> ConeKotlinTypeProjectionIn(type)
|
Variance.IN_VARIANCE -> ConeKotlinTypeProjectionIn(type)
|
||||||
@@ -63,28 +63,28 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
private val implicitBuiltinTypeSymbols = mutableMapOf<NameInSession, ConeSymbol>()
|
private val implicitBuiltinTypeSymbols = mutableMapOf<NameInSession, ConeSymbol>()
|
||||||
|
|
||||||
override fun resolveToSymbol(
|
override fun resolveToSymbol(
|
||||||
type: FirType,
|
typeRef: FirTypeRef,
|
||||||
scope: FirScope,
|
scope: FirScope,
|
||||||
position: FirPosition
|
position: FirPosition
|
||||||
): ConeSymbol? {
|
): ConeSymbol? {
|
||||||
return when (type) {
|
return when (typeRef) {
|
||||||
is FirResolvedType -> type.coneTypeSafe<ConeSymbolBasedType>()?.symbol
|
is FirResolvedTypeRef -> typeRef.coneTypeSafe<ConeSymbolBasedType>()?.symbol
|
||||||
is FirUserType -> {
|
is FirUserTypeRef -> {
|
||||||
|
|
||||||
val qualifierResolver = FirQualifierResolver.getInstance(type.session)
|
val qualifierResolver = FirQualifierResolver.getInstance(typeRef.session)
|
||||||
|
|
||||||
var resolvedSymbol: ConeSymbol? = null
|
var resolvedSymbol: ConeSymbol? = null
|
||||||
scope.processClassifiersByName(type.qualifier.first().name, position) { symbol ->
|
scope.processClassifiersByName(typeRef.qualifier.first().name, position) { symbol ->
|
||||||
resolvedSymbol = when (symbol) {
|
resolvedSymbol = when (symbol) {
|
||||||
is ConeClassLikeSymbol -> {
|
is ConeClassLikeSymbol -> {
|
||||||
if (type.qualifier.size == 1) {
|
if (typeRef.qualifier.size == 1) {
|
||||||
symbol
|
symbol
|
||||||
} else {
|
} else {
|
||||||
qualifierResolver.resolveSymbolWithPrefix(type.qualifier, symbol.classId)
|
qualifierResolver.resolveSymbolWithPrefix(typeRef.qualifier, symbol.classId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is ConeTypeParameterSymbol -> {
|
is ConeTypeParameterSymbol -> {
|
||||||
assert(type.qualifier.size == 1)
|
assert(typeRef.qualifier.size == 1)
|
||||||
symbol
|
symbol
|
||||||
}
|
}
|
||||||
else -> error("!")
|
else -> error("!")
|
||||||
@@ -93,13 +93,13 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Imports
|
// TODO: Imports
|
||||||
resolvedSymbol ?: qualifierResolver.resolveSymbol(type.qualifier)
|
resolvedSymbol ?: qualifierResolver.resolveSymbol(typeRef.qualifier)
|
||||||
}
|
}
|
||||||
is FirImplicitBuiltinType -> {
|
is FirImplicitBuiltinTypeRef -> {
|
||||||
val nameInSession = NameInSession(type.session, type.name)
|
val nameInSession = NameInSession(typeRef.session, typeRef.name)
|
||||||
implicitBuiltinTypeSymbols[nameInSession] ?: run {
|
implicitBuiltinTypeSymbols[nameInSession] ?: run {
|
||||||
var resolvedSymbol: ConeSymbol? = null
|
var resolvedSymbol: ConeSymbol? = null
|
||||||
scope.processClassifiersByName(type.name, position) {
|
scope.processClassifiersByName(typeRef.name, position) {
|
||||||
resolvedSymbol = (it as ConeClassLikeSymbol)
|
resolvedSymbol = (it as ConeClassLikeSymbol)
|
||||||
resolvedSymbol == null
|
resolvedSymbol == null
|
||||||
}
|
}
|
||||||
@@ -111,36 +111,36 @@ class FirTypeResolverImpl : FirTypeResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveUserType(type: FirUserType, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType {
|
override fun resolveUserType(typeRef: FirUserTypeRef, symbol: ConeSymbol?, scope: FirScope): ConeKotlinType {
|
||||||
symbol ?: return ConeKotlinErrorType("Symbol not found")
|
symbol ?: return ConeKotlinErrorType("Symbol not found")
|
||||||
return symbol.toConeKotlinType(type.qualifier) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
return symbol.toConeKotlinType(typeRef.qualifier) ?: ConeKotlinErrorType("Failed to resolve qualified type")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resolveType(
|
override fun resolveType(
|
||||||
type: FirType,
|
typeRef: FirTypeRef,
|
||||||
scope: FirScope,
|
scope: FirScope,
|
||||||
position: FirPosition
|
position: FirPosition
|
||||||
): ConeKotlinType {
|
): ConeKotlinType {
|
||||||
return when (type) {
|
return when (typeRef) {
|
||||||
is FirResolvedType -> type.type
|
is FirResolvedTypeRef -> typeRef.type
|
||||||
is FirUserType -> {
|
is FirUserTypeRef -> {
|
||||||
resolveUserType(type, resolveToSymbol(type, scope, position), scope)
|
resolveUserType(typeRef, resolveToSymbol(typeRef, scope, position), scope)
|
||||||
}
|
}
|
||||||
is FirErrorType -> {
|
is FirErrorTypeRef -> {
|
||||||
ConeKotlinErrorType(type.reason)
|
ConeKotlinErrorType(typeRef.reason)
|
||||||
}
|
}
|
||||||
is FirFunctionType -> {
|
is FirFunctionTypeRef -> {
|
||||||
ConeFunctionTypeImpl(
|
ConeFunctionTypeImpl(
|
||||||
(type.receiverType as FirResolvedType?)?.type,
|
(typeRef.receiverTypeRef as FirResolvedTypeRef?)?.type,
|
||||||
type.valueParameters.map { it.returnType.coneTypeUnsafe<ConeKotlinType>() },
|
typeRef.valueParameters.map { it.returnTypeRef.coneTypeUnsafe<ConeKotlinType>() },
|
||||||
type.returnType.coneTypeUnsafe()
|
typeRef.returnTypeRef.coneTypeUnsafe()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is FirImplicitBuiltinType -> {
|
is FirImplicitBuiltinTypeRef -> {
|
||||||
resolveToSymbol(type, scope, position)!!.toConeKotlinType(emptyList())!!
|
resolveToSymbol(typeRef, scope, position)!!.toConeKotlinType(emptyList())!!
|
||||||
}
|
}
|
||||||
is FirDynamicType, is FirImplicitType, is FirDelegatedType -> {
|
is FirDynamicTypeRef, is FirImplicitTypeRef, is FirDelegatedTypeRef -> {
|
||||||
ConeKotlinErrorType("Not supported: ${type::class.simpleName}")
|
ConeKotlinErrorType("Not supported: ${typeRef::class.simpleName}")
|
||||||
}
|
}
|
||||||
else -> error("!")
|
else -> error("!")
|
||||||
}
|
}
|
||||||
|
|||||||
+35
-35
@@ -19,9 +19,9 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedFunctionTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirResolvedFunctionTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.compose
|
import org.jetbrains.kotlin.fir.visitors.compose
|
||||||
@@ -109,39 +109,39 @@ open class FirTypeResolveTransformer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||||
val typeResolver = FirTypeResolver.getInstance(type.session)
|
val typeResolver = FirTypeResolver.getInstance(typeRef.session)
|
||||||
type.transformChildren(this, null)
|
typeRef.transformChildren(this, null)
|
||||||
return transformType(type, typeResolver.resolveType(type, towerScope, position = FirPosition.OTHER))
|
return transformType(typeRef, typeResolver.resolveType(typeRef, towerScope, position = FirPosition.OTHER))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformFunctionType(functionType: FirFunctionType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||||
val typeResolver = FirTypeResolver.getInstance(functionType.session)
|
val typeResolver = FirTypeResolver.getInstance(functionTypeRef.session)
|
||||||
functionType.transformChildren(this, data)
|
functionTypeRef.transformChildren(this, data)
|
||||||
return FirResolvedFunctionTypeImpl(
|
return FirResolvedFunctionTypeRefImpl(
|
||||||
functionType.psi,
|
functionTypeRef.psi,
|
||||||
functionType.session,
|
functionTypeRef.session,
|
||||||
functionType.isMarkedNullable,
|
functionTypeRef.isMarkedNullable,
|
||||||
functionType.annotations as MutableList<FirAnnotationCall>,
|
functionTypeRef.annotations as MutableList<FirAnnotationCall>,
|
||||||
functionType.receiverType,
|
functionTypeRef.receiverTypeRef,
|
||||||
functionType.valueParameters as MutableList<FirValueParameter>,
|
functionTypeRef.valueParameters as MutableList<FirValueParameter>,
|
||||||
functionType.returnType,
|
functionTypeRef.returnTypeRef,
|
||||||
typeResolver.resolveType(functionType, towerScope, FirPosition.OTHER)
|
typeResolver.resolveType(functionTypeRef, towerScope, FirPosition.OTHER)
|
||||||
).compose()
|
).compose()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun transformType(type: FirType, resolvedType: ConeKotlinType): CompositeTransformResult<FirType> {
|
private fun transformType(typeRef: FirTypeRef, resolvedType: ConeKotlinType): CompositeTransformResult<FirTypeRef> {
|
||||||
return FirResolvedTypeImpl(
|
return FirResolvedTypeRefImpl(
|
||||||
type.session,
|
typeRef.session,
|
||||||
type.psi,
|
typeRef.psi,
|
||||||
resolvedType,
|
resolvedType,
|
||||||
false,
|
false,
|
||||||
type.annotations
|
typeRef.annotations
|
||||||
).compose()
|
).compose()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformResolvedType(resolvedType: FirResolvedType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||||
return resolvedType.compose()
|
return resolvedTypeRef.compose()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
override fun transformValueParameter(valueParameter: FirValueParameter, data: Nothing?): CompositeTransformResult<FirDeclaration> {
|
||||||
@@ -180,10 +180,10 @@ open class FirTypeResolveTransformer(
|
|||||||
|
|
||||||
if (symbol is ConeTypeAliasSymbol) {
|
if (symbol is ConeTypeAliasSymbol) {
|
||||||
val fir = symbol.fir as FirTypeAlias
|
val fir = symbol.fir as FirTypeAlias
|
||||||
if (fir.expandedType is FirResolvedType) return
|
if (fir.expandedTypeRef is FirResolvedTypeRef) return
|
||||||
} else if (symbol is ConeClassSymbol) {
|
} else if (symbol is ConeClassSymbol) {
|
||||||
val fir = symbol.fir as FirClass
|
val fir = symbol.fir as FirClass
|
||||||
if (fir.superTypes.all { it is FirResolvedType }) return
|
if (fir.superTypeRefs.all { it is FirResolvedTypeRef }) return
|
||||||
}
|
}
|
||||||
val firProvider = FirProvider.getInstance(symbol.fir.session)
|
val firProvider = FirProvider.getInstance(symbol.fir.session)
|
||||||
val classes = generateSequence(classId) { it.outerClassId }.toList().asReversed()
|
val classes = generateSequence(classId) { it.outerClassId }.toList().asReversed()
|
||||||
@@ -209,24 +209,24 @@ open class FirTypeResolveTransformer(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformType(type: FirType, data: Nothing?): CompositeTransformResult<FirType> {
|
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||||
val typeResolver = FirTypeResolver.getInstance(type.session)
|
val typeResolver = FirTypeResolver.getInstance(typeRef.session)
|
||||||
val symbol = typeResolver.resolveToSymbol(type, towerScope, position = FirPosition.SUPER_TYPE_OR_EXPANSION)
|
val symbol = typeResolver.resolveToSymbol(typeRef, towerScope, position = FirPosition.SUPER_TYPE_OR_EXPANSION)
|
||||||
val myTransformer = this@FirTypeResolveTransformer
|
val myTransformer = this@FirTypeResolveTransformer
|
||||||
|
|
||||||
if (symbol != null) {
|
if (symbol != null) {
|
||||||
if (symbol is AbstractFirBasedSymbol<*> && symbol.fir in traversedClassifiers) {
|
if (symbol is AbstractFirBasedSymbol<*> && symbol.fir in traversedClassifiers) {
|
||||||
return FirErrorTypeImpl(type.session, type.psi, "Recursion detected: ${type.render()}").compose()
|
return FirErrorTypeRefImpl(typeRef.session, typeRef.psi, "Recursion detected: ${typeRef.render()}").compose()
|
||||||
} else {
|
} else {
|
||||||
walkSymbols(symbol)
|
walkSymbols(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type !is FirUserType) return type.transform(myTransformer, data)
|
if (typeRef !is FirUserTypeRef) return typeRef.transform(myTransformer, data)
|
||||||
|
|
||||||
|
|
||||||
type.transformChildren(myTransformer, null)
|
typeRef.transformChildren(myTransformer, null)
|
||||||
return myTransformer.transformType(type, typeResolver.resolveUserType(type, symbol, towerScope))
|
return myTransformer.transformType(typeRef, typeResolver.resolveUserType(typeRef, symbol, towerScope))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+10
-10
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
|||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirClassSubstitutionScope(
|
class FirClassSubstitutionScope(
|
||||||
@@ -97,14 +97,14 @@ class FirClassSubstitutionScope(
|
|||||||
name: Name
|
name: Name
|
||||||
): FirFunctionSymbol {
|
): FirFunctionSymbol {
|
||||||
val member = (original as FirBasedSymbol<*>).fir as? FirNamedFunction ?: error("Can't fake override for $original")
|
val member = (original as FirBasedSymbol<*>).fir as? FirNamedFunction ?: error("Can't fake override for $original")
|
||||||
val receiverType = member.receiverType?.coneTypeUnsafe()
|
val receiverType = member.receiverTypeRef?.coneTypeUnsafe()
|
||||||
val newReceiverType = receiverType?.substitute()
|
val newReceiverType = receiverType?.substitute()
|
||||||
|
|
||||||
val returnType = member.returnType.coneTypeUnsafe()
|
val returnType = member.returnTypeRef.coneTypeUnsafe()
|
||||||
val newReturnType = returnType.substitute()
|
val newReturnType = returnType.substitute()
|
||||||
|
|
||||||
val newParameterTypes = member.valueParameters.map {
|
val newParameterTypes = member.valueParameters.map {
|
||||||
it.returnType.coneTypeUnsafe().substitute()
|
it.returnTypeRef.coneTypeUnsafe().substitute()
|
||||||
}
|
}
|
||||||
|
|
||||||
val symbol = FirFunctionSymbol(original.callableId, true)
|
val symbol = FirFunctionSymbol(original.callableId, true)
|
||||||
@@ -116,15 +116,15 @@ class FirClassSubstitutionScope(
|
|||||||
psi,
|
psi,
|
||||||
symbol,
|
symbol,
|
||||||
name,
|
name,
|
||||||
member.receiverType?.withReplacedConeType(newReceiverType),
|
member.receiverTypeRef?.withReplacedConeType(newReceiverType),
|
||||||
member.returnType.withReplacedConeType(newReturnType)
|
member.returnTypeRef.withReplacedConeType(newReturnType)
|
||||||
).apply {
|
).apply {
|
||||||
status = member.status as FirDeclarationStatusImpl
|
status = member.status as FirDeclarationStatusImpl
|
||||||
valueParameters += member.valueParameters.zip(newParameterTypes) { valueParameter, newType ->
|
valueParameters += member.valueParameters.zip(newParameterTypes) { valueParameter, newType ->
|
||||||
with(valueParameter) {
|
with(valueParameter) {
|
||||||
FirValueParameterImpl(
|
FirValueParameterImpl(
|
||||||
session, psi,
|
session, psi,
|
||||||
name, this.returnType.withReplacedConeType(newType),
|
name, this.returnTypeRef.withReplacedConeType(newType),
|
||||||
defaultValue, isCrossinline, isNoinline, isVararg
|
defaultValue, isCrossinline, isNoinline, isVararg
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -136,11 +136,11 @@ class FirClassSubstitutionScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun FirType.withReplacedConeType(newType: ConeKotlinType?): FirResolvedType {
|
fun FirTypeRef.withReplacedConeType(newType: ConeKotlinType?): FirResolvedTypeRef {
|
||||||
require(this is FirResolvedType)
|
require(this is FirResolvedTypeRef)
|
||||||
if (newType == null) return this
|
if (newType == null) return this
|
||||||
|
|
||||||
return FirResolvedTypeImpl(
|
return FirResolvedTypeRefImpl(
|
||||||
session, psi, newType,
|
session, psi, newType,
|
||||||
isMarkedNullable,
|
isMarkedNullable,
|
||||||
annotations
|
annotations
|
||||||
|
|||||||
+11
-11
@@ -20,8 +20,8 @@ import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
import org.jetbrains.kotlin.utils.addToStdlib.cast
|
||||||
|
|
||||||
@@ -40,8 +40,8 @@ class FirClassUseSiteScope(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isSubtypeOf(subType: FirType, superType: FirType) =
|
private fun isSubtypeOf(subType: FirTypeRef, superType: FirTypeRef) =
|
||||||
isSubtypeOf(subType.cast<FirResolvedType>().type, superType.cast<FirResolvedType>().type)
|
isSubtypeOf(subType.cast<FirResolvedTypeRef>().type, superType.cast<FirResolvedTypeRef>().type)
|
||||||
|
|
||||||
@Suppress("UNUSED_PARAMETER")
|
@Suppress("UNUSED_PARAMETER")
|
||||||
private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType): Boolean {
|
private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType): Boolean {
|
||||||
@@ -49,22 +49,22 @@ class FirClassUseSiteScope(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isEqualTypes(a: FirType, b: FirType) = isEqualTypes(a.cast<FirResolvedType>().type, b.cast<FirResolvedType>().type)
|
private fun isEqualTypes(a: FirTypeRef, b: FirTypeRef) = isEqualTypes(a.cast<FirResolvedTypeRef>().type, b.cast<FirResolvedTypeRef>().type)
|
||||||
|
|
||||||
private fun isOverriddenFunCheck(member: FirNamedFunction, self: FirNamedFunction): Boolean {
|
private fun isOverriddenFunCheck(member: FirNamedFunction, self: FirNamedFunction): Boolean {
|
||||||
return member.valueParameters.size == self.valueParameters.size &&
|
return member.valueParameters.size == self.valueParameters.size &&
|
||||||
member.valueParameters.zip(self.valueParameters).all { (memberParam, selfParam) ->
|
member.valueParameters.zip(self.valueParameters).all { (memberParam, selfParam) ->
|
||||||
isEqualTypes(memberParam.returnType, selfParam.returnType)
|
isEqualTypes(memberParam.returnTypeRef, selfParam.returnTypeRef)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ConeCallableSymbol.isOverridden(seen: Set<ConeCallableSymbol>): ConeCallableSymbol? {
|
private fun ConeCallableSymbol.isOverridden(seen: Set<ConeCallableSymbol>): ConeCallableSymbol? {
|
||||||
if (overrides.containsKey(this)) return overrides[this]
|
if (overrides.containsKey(this)) return overrides[this]
|
||||||
|
|
||||||
fun sameReceivers(memberType: FirType?, selfType: FirType?): Boolean {
|
fun sameReceivers(memberTypeRef: FirTypeRef?, selfTypeRef: FirTypeRef?): Boolean {
|
||||||
return when {
|
return when {
|
||||||
memberType != null && selfType != null -> isEqualTypes(memberType, selfType)
|
memberTypeRef != null && selfTypeRef != null -> isEqualTypes(memberTypeRef, selfTypeRef)
|
||||||
else -> memberType == null && selfType == null
|
else -> memberTypeRef == null && selfTypeRef == null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,8 +81,8 @@ class FirClassUseSiteScope(
|
|||||||
val overriding = seen.firstOrNull {
|
val overriding = seen.firstOrNull {
|
||||||
val member = (it as AbstractFirBasedSymbol<*>).fir as FirCallableMember
|
val member = (it as AbstractFirBasedSymbol<*>).fir as FirCallableMember
|
||||||
member.isOverride && self.modality != Modality.FINAL
|
member.isOverride && self.modality != Modality.FINAL
|
||||||
&& sameReceivers(member.receiverType, self.receiverType)
|
&& sameReceivers(member.receiverTypeRef, self.receiverTypeRef)
|
||||||
&& isSubtypeOf(member.returnType, self.returnType)
|
&& isSubtypeOf(member.returnTypeRef, self.returnTypeRef)
|
||||||
&& similarFunctionsOrBothProperties(member, self)
|
&& similarFunctionsOrBothProperties(member, self)
|
||||||
} // TODO: two or more overrides for one fun?
|
} // TODO: two or more overrides for one fun?
|
||||||
overrides[this] = overriding
|
overrides[this] = overriding
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ FILE: enums.kt
|
|||||||
public final companion object Companion {
|
public final companion object Companion {
|
||||||
public constructor(): super<R|kotlin/Any|>()
|
public constructor(): super<R|kotlin/Any|>()
|
||||||
|
|
||||||
public final const property G(val): R|error: Not supported: FirImplicitTypeImpl| = Double(6.67E-11)
|
public final const property G(val): R|error: Not supported: FirImplicitTypeRefImpl| = Double(6.67E-11)
|
||||||
public get(): R|error: Not supported: FirImplicitTypeImpl|
|
public get(): R|error: Not supported: FirImplicitTypeRefImpl|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ FILE: simpleClass.kt
|
|||||||
public final class SomeClass : R|SomeInterface| {
|
public final class SomeClass : R|SomeInterface| {
|
||||||
public constructor(): super<R|kotlin/Any|>()
|
public constructor(): super<R|kotlin/Any|>()
|
||||||
|
|
||||||
private final property baz(val): R|error: Not supported: FirImplicitTypeImpl| = Int(42)
|
private final property baz(val): R|error: Not supported: FirImplicitTypeRefImpl| = Int(42)
|
||||||
private get(): R|error: Not supported: FirImplicitTypeImpl|
|
private get(): R|error: Not supported: FirImplicitTypeRefImpl|
|
||||||
|
|
||||||
public final override function foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
|
public final override function foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
|
||||||
return@@@foo <Unresolved name: plus>#(<Unresolved name: plus>#(<Unresolved name: y>#, <Unresolved name: x>#), R|/SomeClass.baz|)
|
return@@@foo <Unresolved name: plus>#(<Unresolved name: plus>#(<Unresolved name: y>#, <Unresolved name: x>#), R|/SomeClass.baz|)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
FILE: simple.kt
|
FILE: simple.kt
|
||||||
public final function foo(): R|error: Not supported: FirImplicitTypeImpl| {
|
public final function foo(): R|error: Not supported: FirImplicitTypeRefImpl| {
|
||||||
return@@@foo Int(1)
|
return@@@foo Int(1)
|
||||||
}
|
}
|
||||||
public final function bar(): R|error: Not supported: FirImplicitTypeImpl| {
|
public final function bar(): R|error: Not supported: FirImplicitTypeRefImpl| {
|
||||||
return@@@bar R|/foo|()
|
return@@@bar R|/foo|()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -9,8 +9,8 @@ FILE: simpleClass.kt
|
|||||||
public final class SomeClass : R|SomeInterface| {
|
public final class SomeClass : R|SomeInterface| {
|
||||||
public constructor(): super<R|kotlin/Any|>()
|
public constructor(): super<R|kotlin/Any|>()
|
||||||
|
|
||||||
private final property baz(val): R|error: Not supported: FirImplicitTypeImpl| = Int(42)
|
private final property baz(val): R|error: Not supported: FirImplicitTypeRefImpl| = Int(42)
|
||||||
private get(): R|error: Not supported: FirImplicitTypeImpl|
|
private get(): R|error: Not supported: FirImplicitTypeRefImpl|
|
||||||
|
|
||||||
public final override function foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
|
public final override function foo(x: R|kotlin/Int|, y: R|kotlin/String|): R|kotlin/String| {
|
||||||
return@@@foo <Unresolved name: plus>#(<Unresolved name: plus>#(<Unresolved name: y>#, <Unresolved name: x>#), R|/SomeClass.baz|)
|
return@@@foo <Unresolved name: plus>#(<Unresolved name: plus>#(<Unresolved name: y>#, <Unresolved name: x>#), R|/SomeClass.baz|)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
FILE: functionX.kt
|
FILE: functionX.kt
|
||||||
public final property x(val): R|kotlin/jvm/functions/Function0<kotlin/Int>| = function R|error: Not supported: FirImplicitTypeImpl|.<anonymous>(): R|error: Not supported: FirImplicitTypeImpl| {
|
public final property x(val): R|kotlin/jvm/functions/Function0<kotlin/Int>| = function R|error: Not supported: FirImplicitTypeRefImpl|.<anonymous>(): R|error: Not supported: FirImplicitTypeRefImpl| {
|
||||||
return {
|
return {
|
||||||
Int(42)
|
Int(42)
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ FILE: functionX.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
public get(): R|kotlin/jvm/functions/Function0<kotlin/Int>|
|
public get(): R|kotlin/jvm/functions/Function0<kotlin/Int>|
|
||||||
public final property y(val): R|kotlin/Function1<kotlin/String, kotlin/String>| = function R|error: Not supported: FirImplicitTypeImpl|.<anonymous>(): R|error: Not supported: FirImplicitTypeImpl| {
|
public final property y(val): R|kotlin/Function1<kotlin/String, kotlin/String>| = function R|error: Not supported: FirImplicitTypeRefImpl|.<anonymous>(): R|error: Not supported: FirImplicitTypeRefImpl| {
|
||||||
return {
|
return {
|
||||||
<Unresolved name: it>#
|
<Unresolved name: it>#
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinType
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -95,7 +95,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
|
|
||||||
override fun visitCallableMember(callableMember: FirCallableMember) {
|
override fun visitCallableMember(callableMember: FirCallableMember) {
|
||||||
visitMemberDeclaration(callableMember)
|
visitMemberDeclaration(callableMember)
|
||||||
val receiverType = callableMember.receiverType
|
val receiverType = callableMember.receiverTypeRef
|
||||||
if (receiverType != null) {
|
if (receiverType != null) {
|
||||||
print(" ")
|
print(" ")
|
||||||
receiverType.accept(this)
|
receiverType.accept(this)
|
||||||
@@ -107,7 +107,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print(if (callableMember.isVar) "(var)" else "(val)")
|
print(if (callableMember.isVar) "(var)" else "(val)")
|
||||||
}
|
}
|
||||||
print(": ")
|
print(": ")
|
||||||
callableMember.returnType.accept(this)
|
callableMember.returnTypeRef.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Visibility.asString() =
|
private fun Visibility.asString() =
|
||||||
@@ -222,9 +222,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
|
|
||||||
override fun visitRegularClass(regularClass: FirRegularClass) {
|
override fun visitRegularClass(regularClass: FirRegularClass) {
|
||||||
visitMemberDeclaration(regularClass)
|
visitMemberDeclaration(regularClass)
|
||||||
if (regularClass.superTypes.isNotEmpty()) {
|
if (regularClass.superTypeRefs.isNotEmpty()) {
|
||||||
print(" : ")
|
print(" : ")
|
||||||
regularClass.superTypes.renderSeparated()
|
regularClass.superTypeRefs.renderSeparated()
|
||||||
}
|
}
|
||||||
regularClass.renderDeclarations()
|
regularClass.renderDeclarations()
|
||||||
}
|
}
|
||||||
@@ -232,7 +232,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
|
override fun visitAnonymousObject(anonymousObject: FirAnonymousObject) {
|
||||||
anonymousObject.annotations.renderAnnotations()
|
anonymousObject.annotations.renderAnnotations()
|
||||||
print("object : ")
|
print("object : ")
|
||||||
anonymousObject.superTypes.renderSeparated()
|
anonymousObject.superTypeRefs.renderSeparated()
|
||||||
anonymousObject.renderDeclarations()
|
anonymousObject.renderDeclarations()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
variable.annotations.renderAnnotations()
|
variable.annotations.renderAnnotations()
|
||||||
visitNamedDeclaration(variable)
|
visitNamedDeclaration(variable)
|
||||||
print(": ")
|
print(": ")
|
||||||
variable.returnType.accept(this)
|
variable.returnTypeRef.accept(this)
|
||||||
variable.initializer?.let {
|
variable.initializer?.let {
|
||||||
print(" = ")
|
print(" = ")
|
||||||
it.accept(this)
|
it.accept(this)
|
||||||
@@ -301,7 +301,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print(if (propertyAccessor.isGetter) "get" else "set")
|
print(if (propertyAccessor.isGetter) "get" else "set")
|
||||||
propertyAccessor.valueParameters.renderParameters()
|
propertyAccessor.valueParameters.renderParameters()
|
||||||
print(": ")
|
print(": ")
|
||||||
propertyAccessor.returnType.accept(this)
|
propertyAccessor.returnTypeRef.accept(this)
|
||||||
propertyAccessor.body?.accept(this)
|
propertyAccessor.body?.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,7 +312,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print("${label.name}@")
|
print("${label.name}@")
|
||||||
}
|
}
|
||||||
print("function ")
|
print("function ")
|
||||||
val receiverType = anonymousFunction.receiverType
|
val receiverType = anonymousFunction.receiverTypeRef
|
||||||
if (receiverType != null) {
|
if (receiverType != null) {
|
||||||
print(" ")
|
print(" ")
|
||||||
receiverType.accept(this)
|
receiverType.accept(this)
|
||||||
@@ -321,7 +321,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print("<anonymous>")
|
print("<anonymous>")
|
||||||
anonymousFunction.valueParameters.renderParameters()
|
anonymousFunction.valueParameters.renderParameters()
|
||||||
print(": ")
|
print(": ")
|
||||||
anonymousFunction.returnType.accept(this)
|
anonymousFunction.returnTypeRef.accept(this)
|
||||||
anonymousFunction.body?.accept(this)
|
anonymousFunction.body?.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +355,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
typeAlias.annotations.renderAnnotations()
|
typeAlias.annotations.renderAnnotations()
|
||||||
visitMemberDeclaration(typeAlias)
|
visitMemberDeclaration(typeAlias)
|
||||||
print(" = ")
|
print(" = ")
|
||||||
typeAlias.expandedType.accept(this)
|
typeAlias.expandedTypeRef.accept(this)
|
||||||
println()
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
if (valueParameter.name != SpecialNames.NO_NAME_PROVIDED) {
|
if (valueParameter.name != SpecialNames.NO_NAME_PROVIDED) {
|
||||||
print(valueParameter.name.toString() + ": ")
|
print(valueParameter.name.toString() + ": ")
|
||||||
}
|
}
|
||||||
valueParameter.returnType.accept(this)
|
valueParameter.returnTypeRef.accept(this)
|
||||||
valueParameter.defaultValue?.let {
|
valueParameter.defaultValue?.let {
|
||||||
print(" = ")
|
print(" = ")
|
||||||
it.accept(this)
|
it.accept(this)
|
||||||
@@ -542,7 +542,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print(it.name)
|
print(it.name)
|
||||||
print(":")
|
print(":")
|
||||||
}
|
}
|
||||||
annotationCall.annotationType.accept(this)
|
annotationCall.annotationTypeRef.accept(this)
|
||||||
visitCall(annotationCall)
|
visitCall(annotationCall)
|
||||||
if (annotationCall.useSiteTarget == AnnotationUseSiteTarget.FILE) {
|
if (annotationCall.useSiteTarget == AnnotationUseSiteTarget.FILE) {
|
||||||
println()
|
println()
|
||||||
@@ -557,54 +557,54 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
} else if (delegatedConstructorCall.isThis) {
|
} else if (delegatedConstructorCall.isThis) {
|
||||||
print(": this<")
|
print(": this<")
|
||||||
}
|
}
|
||||||
delegatedConstructorCall.constructedType.accept(this)
|
delegatedConstructorCall.constructedTypeRef.accept(this)
|
||||||
print(">")
|
print(">")
|
||||||
visitCall(delegatedConstructorCall)
|
visitCall(delegatedConstructorCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitType(type: FirType) {
|
override fun visitTypeRef(typeRef: FirTypeRef) {
|
||||||
type.annotations.renderAnnotations()
|
typeRef.annotations.renderAnnotations()
|
||||||
visitElement(type)
|
visitElement(typeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitDelegatedType(delegatedType: FirDelegatedType) {
|
override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef) {
|
||||||
delegatedType.type.accept(this)
|
delegatedTypeRef.typeRef.accept(this)
|
||||||
print(" by ")
|
print(" by ")
|
||||||
delegatedType.delegate?.accept(this)
|
delegatedTypeRef.delegate?.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitErrorType(errorType: FirErrorType) {
|
override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) {
|
||||||
visitType(errorType)
|
visitTypeRef(errorTypeRef)
|
||||||
print("<ERROR TYPE: ${errorType.reason}>")
|
print("<ERROR TYPE: ${errorTypeRef.reason}>")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitImplicitType(implicitType: FirImplicitType) {
|
override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) {
|
||||||
print(if (implicitType is FirImplicitBuiltinType) "kotlin.${implicitType.name}" else "<implicit>")
|
print(if (implicitTypeRef is FirImplicitBuiltinTypeRef) "kotlin.${implicitTypeRef.name}" else "<implicit>")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability) {
|
override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) {
|
||||||
if (typeWithNullability.isMarkedNullable) {
|
if (typeRefWithNullability.isMarkedNullable) {
|
||||||
print("?")
|
print("?")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitDynamicType(dynamicType: FirDynamicType) {
|
override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef) {
|
||||||
dynamicType.annotations.renderAnnotations()
|
dynamicTypeRef.annotations.renderAnnotations()
|
||||||
print("<dynamic>")
|
print("<dynamic>")
|
||||||
visitTypeWithNullability(dynamicType)
|
visitTypeRefWithNullability(dynamicTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitFunctionType(functionType: FirFunctionType) {
|
override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) {
|
||||||
print("( ")
|
print("( ")
|
||||||
functionType.receiverType?.let {
|
functionTypeRef.receiverTypeRef?.let {
|
||||||
it.accept(this)
|
it.accept(this)
|
||||||
print(".")
|
print(".")
|
||||||
}
|
}
|
||||||
functionType.valueParameters.renderParameters()
|
functionTypeRef.valueParameters.renderParameters()
|
||||||
print(" -> ")
|
print(" -> ")
|
||||||
functionType.returnType.accept(this)
|
functionTypeRef.returnTypeRef.accept(this)
|
||||||
print(" )")
|
print(" )")
|
||||||
visitTypeWithNullability(functionType)
|
visitTypeRefWithNullability(functionTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ConeSymbol.asString(): String {
|
private fun ConeSymbol.asString(): String {
|
||||||
@@ -654,18 +654,18 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedType(resolvedType: FirResolvedType) {
|
override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
|
||||||
resolvedType.annotations.renderAnnotations()
|
resolvedTypeRef.annotations.renderAnnotations()
|
||||||
print("R|")
|
print("R|")
|
||||||
val coneType = resolvedType.type
|
val coneType = resolvedTypeRef.type
|
||||||
print(coneType.asString())
|
print(coneType.asString())
|
||||||
print("|")
|
print("|")
|
||||||
visitTypeWithNullability(resolvedType)
|
visitTypeRefWithNullability(resolvedTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitUserType(userType: FirUserType) {
|
override fun visitUserTypeRef(userTypeRef: FirUserTypeRef) {
|
||||||
userType.annotations.renderAnnotations()
|
userTypeRef.annotations.renderAnnotations()
|
||||||
for ((index, qualifier) in userType.qualifier.withIndex()) {
|
for ((index, qualifier) in userTypeRef.qualifier.withIndex()) {
|
||||||
if (index != 0) {
|
if (index != 0) {
|
||||||
print(".")
|
print(".")
|
||||||
}
|
}
|
||||||
@@ -676,7 +676,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print(">")
|
print(">")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visitTypeWithNullability(userType)
|
visitTypeRefWithNullability(userTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitTypeProjection(typeProjection: FirTypeProjection) {
|
override fun visitTypeProjection(typeProjection: FirTypeProjection) {
|
||||||
@@ -685,7 +685,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
|
|
||||||
override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance) {
|
override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance) {
|
||||||
typeProjectionWithVariance.variance.renderVariance()
|
typeProjectionWithVariance.variance.renderVariance()
|
||||||
typeProjectionWithVariance.type.accept(this)
|
typeProjectionWithVariance.typeRef.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitStarProjection(starProjection: FirStarProjection) {
|
override fun visitStarProjection(starProjection: FirStarProjection) {
|
||||||
@@ -722,7 +722,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
|
|
||||||
override fun visitSuperReference(superReference: FirSuperReference) {
|
override fun visitSuperReference(superReference: FirSuperReference) {
|
||||||
print("super<")
|
print("super<")
|
||||||
superReference.superType.accept(this)
|
superReference.superTypeRef.accept(this)
|
||||||
print(">")
|
print(">")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -792,7 +792,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
|||||||
print(operatorCall.operation.operator)
|
print(operatorCall.operation.operator)
|
||||||
if (operatorCall is FirTypeOperatorCall) {
|
if (operatorCall is FirTypeOperatorCall) {
|
||||||
print("/")
|
print("/")
|
||||||
operatorCall.type.accept(this)
|
operatorCall.typeRef.accept(this)
|
||||||
}
|
}
|
||||||
visitCall(operatorCall)
|
visitCall(operatorCall)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,16 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir
|
package org.jetbrains.kotlin.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirSuperReference : FirReference {
|
interface FirSuperReference : FirReference {
|
||||||
val superType: FirType
|
val superTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitSuperReference(this, data)
|
visitor.visitSuperReference(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
superType.accept(visitor, data)
|
superTypeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,11 +8,11 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
import org.jetbrains.kotlin.fir.FirLabeledElement
|
import org.jetbrains.kotlin.fir.FirLabeledElement
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirAnonymousFunction : @VisitedSupertype FirFunction, FirExpression, FirTypedDeclaration, FirLabeledElement {
|
interface FirAnonymousFunction : @VisitedSupertype FirFunction, FirExpression, FirTypedDeclaration, FirLabeledElement {
|
||||||
val receiverType: FirType?
|
val receiverTypeRef: FirTypeRef?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitAnonymousFunction(this, data)
|
visitor.visitAnonymousFunction(this, data)
|
||||||
@@ -20,7 +20,7 @@ interface FirAnonymousFunction : @VisitedSupertype FirFunction, FirExpression, F
|
|||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super<FirTypedDeclaration>.acceptChildren(visitor, data)
|
super<FirTypedDeclaration>.acceptChildren(visitor, data)
|
||||||
super<FirLabeledElement>.acceptChildren(visitor, data)
|
super<FirLabeledElement>.acceptChildren(visitor, data)
|
||||||
receiverType?.accept(visitor, data)
|
receiverTypeRef?.accept(visitor, data)
|
||||||
for (parameter in valueParameters) {
|
for (parameter in valueParameters) {
|
||||||
parameter.accept(visitor, data)
|
parameter.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
// Good name needed (something with receiver, type parameters, return type, and name)
|
// Good name needed (something with receiver, type parameters, return type, and name)
|
||||||
@@ -16,14 +16,14 @@ interface FirCallableMember :
|
|||||||
FirTypedDeclaration, FirSymbolOwner<FirCallableMember> {
|
FirTypedDeclaration, FirSymbolOwner<FirCallableMember> {
|
||||||
val isOverride: Boolean get() = status.isOverride
|
val isOverride: Boolean get() = status.isOverride
|
||||||
|
|
||||||
val receiverType: FirType?
|
val receiverTypeRef: FirTypeRef?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitCallableMember(this, data)
|
visitor.visitCallableMember(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
receiverType?.accept(visitor, data)
|
receiverTypeRef?.accept(visitor, data)
|
||||||
super<FirMemberDeclaration>.acceptChildren(visitor, data)
|
super<FirMemberDeclaration>.acceptChildren(visitor, data)
|
||||||
returnType.accept(visitor, data)
|
returnTypeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,13 +9,13 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContainer {
|
interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContainer {
|
||||||
// including delegated types
|
// including delegated types
|
||||||
val superTypes: List<FirType>
|
val superTypeRefs: List<FirTypeRef>
|
||||||
|
|
||||||
val classKind: ClassKind
|
val classKind: ClassKind
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContain
|
|||||||
visitor.visitClass(this, data)
|
visitor.visitClass(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
for (superType in superTypes) {
|
for (superType in superTypeRefs) {
|
||||||
superType.accept(visitor, data)
|
superType.accept(visitor, data)
|
||||||
}
|
}
|
||||||
for (declaration in declarations) {
|
for (declaration in declarations) {
|
||||||
@@ -32,4 +32,4 @@ interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContain
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val FirClass.superConeTypes get() = superTypes.mapNotNull { it.coneTypeSafe<ConeClassLikeType>() }
|
val FirClass.superConeTypes get() = superTypeRefs.mapNotNull { it.coneTypeSafe<ConeClassLikeType>() }
|
||||||
@@ -7,21 +7,21 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirTypeAlias : FirMemberDeclaration, FirSymbolOwner<FirTypeAlias> {
|
interface FirTypeAlias : FirMemberDeclaration, FirSymbolOwner<FirTypeAlias> {
|
||||||
val expandedType: FirType
|
val expandedTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypeAlias(this, data)
|
visitor.visitTypeAlias(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
expandedType.accept(visitor, data)
|
expandedTypeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedType.coneTypeSafe()
|
val FirTypeAlias.expandedConeType: ConeClassLikeType? get() = expandedTypeRef.coneTypeSafe()
|
||||||
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.BaseTransformedType
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.symbols.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ interface FirTypeParameter : FirNamedDeclaration, FirAnnotationContainer, FirSym
|
|||||||
|
|
||||||
val isReified: Boolean
|
val isReified: Boolean
|
||||||
|
|
||||||
val bounds: List<FirType>
|
val bounds: List<FirTypeRef>
|
||||||
|
|
||||||
override val symbol: FirTypeParameterSymbol
|
override val symbol: FirTypeParameterSymbol
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirTypedDeclaration : FirDeclaration, FirAnnotationContainer {
|
interface FirTypedDeclaration : FirDeclaration, FirAnnotationContainer {
|
||||||
val returnType: FirType
|
val returnTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypedDeclaration(this, data)
|
visitor.visitTypedDeclaration(this, data)
|
||||||
@@ -18,6 +18,6 @@ interface FirTypedDeclaration : FirDeclaration, FirAnnotationContainer {
|
|||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
acceptAnnotations(visitor, data)
|
acceptAnnotations(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
returnType.accept(visitor, data)
|
returnTypeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
-13
@@ -13,28 +13,28 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMember
|
import org.jetbrains.kotlin.fir.declarations.FirCallableMember
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCallableMember {
|
abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCallableMember {
|
||||||
|
|
||||||
final override val symbol: FirBasedSymbol<FirCallableMember>
|
final override val symbol: FirBasedSymbol<FirCallableMember>
|
||||||
final override var receiverType: FirType?
|
final override var receiverTypeRef: FirTypeRef?
|
||||||
final override var returnType: FirType
|
final override var returnTypeRef: FirTypeRef
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
symbol: FirBasedSymbol<FirCallableMember>,
|
symbol: FirBasedSymbol<FirCallableMember>,
|
||||||
name: Name,
|
name: Name,
|
||||||
receiverType: FirType?,
|
receiverTypeRef: FirTypeRef?,
|
||||||
returnType: FirType
|
returnTypeRef: FirTypeRef
|
||||||
) : super(session, psi, name) {
|
) : super(session, psi, name) {
|
||||||
this.symbol = symbol
|
this.symbol = symbol
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
this.receiverType = receiverType
|
this.receiverTypeRef = receiverTypeRef
|
||||||
this.returnType = returnType
|
this.returnTypeRef = returnTypeRef
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@@ -47,20 +47,20 @@ abstract class FirAbstractCallableMember : FirAbstractMemberDeclaration, FirCall
|
|||||||
isExpect: Boolean,
|
isExpect: Boolean,
|
||||||
isActual: Boolean,
|
isActual: Boolean,
|
||||||
isOverride: Boolean,
|
isOverride: Boolean,
|
||||||
receiverType: FirType?,
|
receiverTypeRef: FirTypeRef?,
|
||||||
returnType: FirType
|
returnTypeRef: FirTypeRef
|
||||||
) : super(session, psi, name, visibility, modality, isExpect, isActual) {
|
) : super(session, psi, name, visibility, modality, isExpect, isActual) {
|
||||||
this.symbol = symbol
|
this.symbol = symbol
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
this.receiverType = receiverType
|
this.receiverTypeRef = receiverTypeRef
|
||||||
this.returnType = returnType
|
this.returnTypeRef = returnTypeRef
|
||||||
status.isOverride = isOverride
|
status.isOverride = isOverride
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
receiverType = receiverType?.transformSingle(transformer, data)
|
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
|
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -11,20 +11,20 @@ import org.jetbrains.kotlin.fir.FirLabel
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirAnonymousFunctionImpl(
|
class FirAnonymousFunctionImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var returnType: FirType,
|
override var returnTypeRef: FirTypeRef,
|
||||||
override var receiverType: FirType?
|
override var receiverTypeRef: FirTypeRef?
|
||||||
) : FirAbstractFunction(session, psi), FirAnonymousFunction, FirModifiableFunction {
|
) : FirAbstractFunction(session, psi), FirAnonymousFunction, FirModifiableFunction {
|
||||||
override var label: FirLabel? = null
|
override var label: FirLabel? = null
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
receiverType = receiverType?.transformSingle(transformer, data)
|
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||||
label = label?.transformSingle(transformer, data)
|
label = label?.transformSingle(transformer, data)
|
||||||
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ class FirAnonymousObjectImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirAbstractAnnotatedDeclaration(session, psi), FirAnonymousObject, FirModifiableClass {
|
) : FirAbstractAnnotatedDeclaration(session, psi), FirAnonymousObject, FirModifiableClass {
|
||||||
override val superTypes = mutableListOf<FirType>()
|
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
||||||
|
|
||||||
override val declarations = mutableListOf<FirDeclaration>()
|
override val declarations = mutableListOf<FirDeclaration>()
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ class FirAnonymousObjectImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
superTypes.transformInplace(transformer, data)
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
declarations.transformInplace(transformer, data)
|
declarations.transformInplace(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractAnnotatedDeclaration>.transformChildren(transformer, data)
|
return super<FirAbstractAnnotatedDeclaration>.transformChildren(transformer, data)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
@@ -42,13 +42,13 @@ open class FirClassImpl(
|
|||||||
status.isInline = isInline
|
status.isInline = isInline
|
||||||
}
|
}
|
||||||
|
|
||||||
override val superTypes = mutableListOf<FirType>()
|
override val superTypeRefs = mutableListOf<FirTypeRef>()
|
||||||
|
|
||||||
override val declarations = mutableListOf<FirDeclaration>()
|
override val declarations = mutableListOf<FirDeclaration>()
|
||||||
|
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClass {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirRegularClass {
|
||||||
superTypes.transformInplace(transformer, data)
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
val result = super<FirAbstractMemberDeclaration>.transformChildren(transformer, data) as FirRegularClass
|
val result = super<FirAbstractMemberDeclaration>.transformChildren(transformer, data) as FirRegularClass
|
||||||
|
|
||||||
// Transform declarations in last turn
|
// Transform declarations in last turn
|
||||||
|
|||||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -28,11 +28,11 @@ open class FirConstructorImpl(
|
|||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
isExpect: Boolean,
|
isExpect: Boolean,
|
||||||
isActual: Boolean,
|
isActual: Boolean,
|
||||||
delegatedSelfType: FirType,
|
delegatedSelfTypeRef: FirTypeRef,
|
||||||
final override var delegatedConstructor: FirDelegatedConstructorCall?
|
final override var delegatedConstructor: FirDelegatedConstructorCall?
|
||||||
) : FirAbstractCallableMember(
|
) : FirAbstractCallableMember(
|
||||||
session, psi, symbol, NAME, visibility, Modality.FINAL,
|
session, psi, symbol, NAME, visibility, Modality.FINAL,
|
||||||
isExpect, isActual, isOverride = false, receiverType = null, returnType = delegatedSelfType
|
isExpect, isActual, isOverride = false, receiverTypeRef = null, returnTypeRef = delegatedSelfTypeRef
|
||||||
), FirConstructor {
|
), FirConstructor {
|
||||||
override val valueParameters = mutableListOf<FirValueParameter>()
|
override val valueParameters = mutableListOf<FirValueParameter>()
|
||||||
|
|
||||||
|
|||||||
+9
-9
@@ -16,8 +16,8 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitType
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirDefaultPropertyAccessor(
|
abstract class FirDefaultPropertyAccessor(
|
||||||
@@ -40,15 +40,15 @@ abstract class FirDefaultPropertyAccessor(
|
|||||||
class FirDefaultPropertyGetter(
|
class FirDefaultPropertyGetter(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
propertyType: FirType,
|
propertyTypeRef: FirTypeRef,
|
||||||
visibility: Visibility
|
visibility: Visibility
|
||||||
) : FirDefaultPropertyAccessor(session, psi, isGetter = true, visibility = visibility) {
|
) : FirDefaultPropertyAccessor(session, psi, isGetter = true, visibility = visibility) {
|
||||||
override val valueParameters: List<FirValueParameter> = emptyList()
|
override val valueParameters: List<FirValueParameter> = emptyList()
|
||||||
|
|
||||||
override var returnType: FirType = propertyType
|
override var returnTypeRef: FirTypeRef = propertyTypeRef
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
@@ -58,16 +58,16 @@ class FirDefaultPropertyGetter(
|
|||||||
class FirDefaultPropertySetter(
|
class FirDefaultPropertySetter(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
propertyType: FirType,
|
propertyTypeRef: FirTypeRef,
|
||||||
visibility: Visibility
|
visibility: Visibility
|
||||||
) : FirDefaultPropertyAccessor(session, psi, isGetter = false, visibility = visibility) {
|
) : FirDefaultPropertyAccessor(session, psi, isGetter = false, visibility = visibility) {
|
||||||
override val valueParameters = mutableListOf(FirDefaultSetterValueParameter(session, psi, propertyType))
|
override val valueParameters = mutableListOf(FirDefaultSetterValueParameter(session, psi, propertyTypeRef))
|
||||||
|
|
||||||
override var returnType: FirType = FirImplicitUnitType(session, psi)
|
override var returnTypeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
valueParameters.transformInplace(transformer, data)
|
valueParameters.transformInplace(transformer, data)
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
|
|||||||
+3
-3
@@ -11,14 +11,14 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirDefaultSetterValueParameter(
|
class FirDefaultSetterValueParameter(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var returnType: FirType
|
override var returnTypeRef: FirTypeRef
|
||||||
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
||||||
override val isCrossinline = false
|
override val isCrossinline = false
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ class FirDefaultSetterValueParameter(
|
|||||||
override val defaultValue: FirExpression? = null
|
override val defaultValue: FirExpression? = null
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractNamedAnnotatedDeclaration>.transformChildren(transformer, data)
|
return super<FirAbstractNamedAnnotatedDeclaration>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-7
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -27,9 +27,9 @@ class FirMemberFunctionImpl : FirAbstractCallableMember, FirNamedFunction, FirMo
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
symbol: FirFunctionSymbol,
|
symbol: FirFunctionSymbol,
|
||||||
name: Name,
|
name: Name,
|
||||||
receiverType: FirType?,
|
receiverTypeRef: FirTypeRef?,
|
||||||
returnType: FirType
|
returnTypeRef: FirTypeRef
|
||||||
) : super(session, psi, symbol, name, receiverType, returnType)
|
) : super(session, psi, symbol, name, receiverTypeRef, returnTypeRef)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
@@ -47,11 +47,11 @@ class FirMemberFunctionImpl : FirAbstractCallableMember, FirNamedFunction, FirMo
|
|||||||
isTailRec: Boolean,
|
isTailRec: Boolean,
|
||||||
isExternal: Boolean,
|
isExternal: Boolean,
|
||||||
isSuspend: Boolean,
|
isSuspend: Boolean,
|
||||||
receiverType: FirType?,
|
receiverTypeRef: FirTypeRef?,
|
||||||
returnType: FirType
|
returnTypeRef: FirTypeRef
|
||||||
) : super(
|
) : super(
|
||||||
session, psi, symbol, name, visibility, modality,
|
session, psi, symbol, name, visibility, modality,
|
||||||
isExpect, isActual, isOverride, receiverType, returnType
|
isExpect, isActual, isOverride, receiverTypeRef, returnTypeRef
|
||||||
) {
|
) {
|
||||||
status.isOperator = isOperator
|
status.isOperator = isOperator
|
||||||
status.isInfix = isInfix
|
status.isInfix = isInfix
|
||||||
|
|||||||
+4
-4
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -31,15 +31,15 @@ class FirMemberPropertyImpl(
|
|||||||
isOverride: Boolean,
|
isOverride: Boolean,
|
||||||
isConst: Boolean,
|
isConst: Boolean,
|
||||||
isLateInit: Boolean,
|
isLateInit: Boolean,
|
||||||
receiverType: FirType?,
|
receiverTypeRef: FirTypeRef?,
|
||||||
returnType: FirType,
|
returnTypeRef: FirTypeRef,
|
||||||
override val isVar: Boolean,
|
override val isVar: Boolean,
|
||||||
override var initializer: FirExpression?,
|
override var initializer: FirExpression?,
|
||||||
override var getter: FirPropertyAccessor,
|
override var getter: FirPropertyAccessor,
|
||||||
override var setter: FirPropertyAccessor,
|
override var setter: FirPropertyAccessor,
|
||||||
override var delegate: FirExpression?
|
override var delegate: FirExpression?
|
||||||
) : FirAbstractCallableMember(
|
) : FirAbstractCallableMember(
|
||||||
session, psi, symbol, name, visibility, modality, isExpect, isActual, isOverride, receiverType, returnType
|
session, psi, symbol, name, visibility, modality, isExpect, isActual, isOverride, receiverTypeRef, returnTypeRef
|
||||||
), FirProperty {
|
), FirProperty {
|
||||||
init {
|
init {
|
||||||
status.isConst = isConst
|
status.isConst = isConst
|
||||||
|
|||||||
+2
-2
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|
||||||
interface FirModifiableClass : FirClass {
|
interface FirModifiableClass : FirClass {
|
||||||
override val superTypes: MutableList<FirType>
|
override val superTypeRefs: MutableList<FirTypeRef>
|
||||||
|
|
||||||
override val declarations: MutableList<FirDeclaration>
|
override val declarations: MutableList<FirDeclaration>
|
||||||
}
|
}
|
||||||
+3
-3
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|
||||||
class FirPrimaryConstructorImpl(
|
class FirPrimaryConstructorImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
@@ -19,6 +19,6 @@ class FirPrimaryConstructorImpl(
|
|||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
isExpect: Boolean,
|
isExpect: Boolean,
|
||||||
isActual: Boolean,
|
isActual: Boolean,
|
||||||
delegatedSelfType: FirType,
|
delegatedSelfTypeRef: FirTypeRef,
|
||||||
delegatedConstructor: FirDelegatedConstructorCall?
|
delegatedConstructor: FirDelegatedConstructorCall?
|
||||||
) : FirConstructorImpl(session, psi, symbol, visibility, isExpect, isActual, delegatedSelfType, delegatedConstructor)
|
) : FirConstructorImpl(session, psi, symbol, visibility, isExpect, isActual, delegatedSelfTypeRef, delegatedConstructor)
|
||||||
+3
-4
@@ -11,9 +11,8 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirPropertyAccessorImpl(
|
class FirPropertyAccessorImpl(
|
||||||
@@ -21,14 +20,14 @@ class FirPropertyAccessorImpl(
|
|||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val isGetter: Boolean,
|
override val isGetter: Boolean,
|
||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
override var returnType: FirType
|
override var returnTypeRef: FirTypeRef
|
||||||
) : FirAbstractFunction(session, psi), FirPropertyAccessor {
|
) : FirAbstractFunction(session, psi), FirPropertyAccessor {
|
||||||
override var status = FirDeclarationStatusImpl(
|
override var status = FirDeclarationStatusImpl(
|
||||||
session, visibility, Modality.FINAL
|
session, visibility, Modality.FINAL
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ class FirTypeAliasImpl(
|
|||||||
visibility: Visibility,
|
visibility: Visibility,
|
||||||
isExpect: Boolean,
|
isExpect: Boolean,
|
||||||
isActual: Boolean,
|
isActual: Boolean,
|
||||||
override var expandedType: FirType
|
override var expandedTypeRef: FirTypeRef
|
||||||
) : FirAbstractMemberDeclaration(session, psi, name, visibility, Modality.FINAL, isExpect, isActual), FirTypeAlias {
|
) : FirAbstractMemberDeclaration(session, psi, name, visibility, Modality.FINAL, isExpect, isActual), FirTypeAlias {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -33,7 +33,7 @@ class FirTypeAliasImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
expandedType = expandedType.transformSingle(transformer, data)
|
expandedTypeRef = expandedTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
|
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -28,7 +28,7 @@ class FirTypeParameterImpl(
|
|||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val bounds = mutableListOf<FirType>()
|
override val bounds = mutableListOf<FirTypeRef>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
bounds.transformInplace(transformer, data)
|
bounds.transformInplace(transformer, data)
|
||||||
|
|||||||
+3
-3
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
@@ -19,14 +19,14 @@ class FirValueParameterImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
name: Name,
|
name: Name,
|
||||||
override var returnType: FirType,
|
override var returnTypeRef: FirTypeRef,
|
||||||
override var defaultValue: FirExpression?,
|
override var defaultValue: FirExpression?,
|
||||||
override val isCrossinline: Boolean,
|
override val isCrossinline: Boolean,
|
||||||
override val isNoinline: Boolean,
|
override val isNoinline: Boolean,
|
||||||
override val isVararg: Boolean
|
override val isVararg: Boolean
|
||||||
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirValueParameter {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
defaultValue = defaultValue?.transformSingle(transformer, data)
|
defaultValue = defaultValue?.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractNamedAnnotatedDeclaration>.transformChildren(transformer, data)
|
return super<FirAbstractNamedAnnotatedDeclaration>.transformChildren(transformer, data)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVariable
|
import org.jetbrains.kotlin.fir.expressions.FirVariable
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -19,13 +19,13 @@ class FirVariableImpl(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
psiElement: PsiElement?,
|
psiElement: PsiElement?,
|
||||||
name: Name,
|
name: Name,
|
||||||
override var returnType: FirType,
|
override var returnTypeRef: FirTypeRef,
|
||||||
override val isVar: Boolean,
|
override val isVar: Boolean,
|
||||||
override var initializer: FirExpression?,
|
override var initializer: FirExpression?,
|
||||||
override var delegate: FirExpression? = null
|
override var delegate: FirExpression? = null
|
||||||
) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable {
|
) : FirAbstractNamedAnnotatedDeclaration(session, psiElement, name), FirVariable {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
initializer = initializer?.transformSingle(transformer, data)
|
initializer = initializer?.transformSingle(transformer, data)
|
||||||
delegate = delegate?.transformSingle(transformer, data)
|
delegate = delegate?.transformSingle(transformer, data)
|
||||||
|
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.fir.expressions
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||||
import org.jetbrains.kotlin.fir.BaseTransformedType
|
import org.jetbrains.kotlin.fir.BaseTransformedType
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
@BaseTransformedType
|
@BaseTransformedType
|
||||||
interface FirAnnotationCall : FirCall {
|
interface FirAnnotationCall : FirCall {
|
||||||
val annotationType: FirType
|
val annotationTypeRef: FirTypeRef
|
||||||
|
|
||||||
// May be should be not-null (with correct default target)
|
// May be should be not-null (with correct default target)
|
||||||
val useSiteTarget: AnnotationUseSiteTarget?
|
val useSiteTarget: AnnotationUseSiteTarget?
|
||||||
@@ -21,7 +21,7 @@ interface FirAnnotationCall : FirCall {
|
|||||||
visitor.visitAnnotationCall(this, data)
|
visitor.visitAnnotationCall(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
annotationType.accept(visitor, data)
|
annotationTypeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-4
@@ -5,13 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjectionContainer
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirDelegatedConstructorCall : FirCall {
|
interface FirDelegatedConstructorCall : FirCall {
|
||||||
// Do we need 'constructedType: FirType' here?
|
// Do we need 'constructedType: FirType' here?
|
||||||
val constructedType: FirType
|
val constructedTypeRef: FirTypeRef
|
||||||
|
|
||||||
val isThis: Boolean
|
val isThis: Boolean
|
||||||
|
|
||||||
@@ -22,7 +21,7 @@ interface FirDelegatedConstructorCall : FirCall {
|
|||||||
visitor.visitDelegatedConstructorCall(this, data)
|
visitor.visitDelegatedConstructorCall(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
constructedType.accept(visitor, data)
|
constructedTypeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,20 +5,20 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
// is/!is/as/as?
|
// is/!is/as/as?
|
||||||
interface FirTypeOperatorCall : FirOperatorCall {
|
interface FirTypeOperatorCall : FirOperatorCall {
|
||||||
val argument: FirExpression get() = arguments.first()
|
val argument: FirExpression get() = arguments.first()
|
||||||
|
|
||||||
val type: FirType
|
val typeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypeOperatorCall(this, data)
|
visitor.visitTypeOperatorCall(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
type.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -11,17 +11,17 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirAnnotationCallImpl(
|
class FirAnnotationCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val useSiteTarget: AnnotationUseSiteTarget?,
|
override val useSiteTarget: AnnotationUseSiteTarget?,
|
||||||
override var annotationType: FirType
|
override var annotationTypeRef: FirTypeRef
|
||||||
) : FirAbstractCall(session, psi), FirAnnotationCall {
|
) : FirAbstractCall(session, psi), FirAnnotationCall {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
annotationType = annotationType.transformSingle(transformer, data)
|
annotationTypeRef = annotationTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super<FirAbstractCall>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -10,17 +10,17 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirDelegatedConstructorCallImpl(
|
class FirDelegatedConstructorCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var constructedType: FirType,
|
override var constructedTypeRef: FirTypeRef,
|
||||||
override val isThis: Boolean
|
override val isThis: Boolean
|
||||||
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
constructedType = constructedType.transformSingle(transformer, data)
|
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super<FirAbstractCall>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -11,17 +11,17 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
import org.jetbrains.kotlin.fir.expressions.FirOperation
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirTypeOperatorCall
|
import org.jetbrains.kotlin.fir.expressions.FirTypeOperatorCall
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirTypeOperatorCallImpl(
|
class FirTypeOperatorCallImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val operation: FirOperation,
|
override val operation: FirOperation,
|
||||||
override var type: FirType
|
override var typeRef: FirTypeRef
|
||||||
) : FirAbstractCall(session, psi), FirTypeOperatorCall {
|
) : FirAbstractCall(session, psi), FirTypeOperatorCall {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
type = type.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super<FirAbstractCall>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -7,16 +7,16 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirExplicitSuperReference(
|
class FirExplicitSuperReference(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override var superType: FirType
|
override var superTypeRef: FirTypeRef
|
||||||
) : FirAbstractElement(session, psi), FirSuperReference {
|
) : FirAbstractElement(session, psi), FirSuperReference {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
superType = superType.transformSingle(transformer, data)
|
superTypeRef = superTypeRef.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+4
-4
@@ -8,17 +8,17 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirDelegatedType : FirType {
|
interface FirDelegatedTypeRef : FirTypeRef {
|
||||||
val delegate: FirExpression?
|
val delegate: FirExpression?
|
||||||
|
|
||||||
val type: FirType
|
val typeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitDelegatedType(this, data)
|
visitor.visitDelegatedTypeRef(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
delegate?.accept(visitor, data)
|
delegate?.accept(visitor, data)
|
||||||
type.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirDynamicType : FirTypeWithNullability {
|
interface FirDynamicTypeRef : FirTypeRefWithNullability {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitDynamicType(this, data)
|
visitor.visitDynamicTypeRef(this, data)
|
||||||
}
|
}
|
||||||
+2
-2
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirErrorType : FirType {
|
interface FirErrorTypeRef : FirTypeRef {
|
||||||
val reason: String
|
val reason: String
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitErrorType(this, data)
|
visitor.visitErrorTypeRef(this, data)
|
||||||
}
|
}
|
||||||
+6
-6
@@ -8,20 +8,20 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirFunctionType : FirTypeWithNullability {
|
interface FirFunctionTypeRef : FirTypeRefWithNullability {
|
||||||
val receiverType: FirType?
|
val receiverTypeRef: FirTypeRef?
|
||||||
|
|
||||||
// May be it should inherit FirFunction?
|
// May be it should inherit FirFunction?
|
||||||
val valueParameters: List<FirValueParameter>
|
val valueParameters: List<FirValueParameter>
|
||||||
|
|
||||||
val returnType: FirType
|
val returnTypeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitFunctionType(this, data)
|
visitor.visitFunctionTypeRef(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
receiverType?.accept(visitor, data)
|
receiverTypeRef?.accept(visitor, data)
|
||||||
returnType.accept(visitor, data)
|
returnTypeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
for (parameter in valueParameters) {
|
for (parameter in valueParameters) {
|
||||||
parameter.accept(visitor, data)
|
parameter.accept(visitor, data)
|
||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirImplicitType : FirType {
|
interface FirImplicitTypeRef : FirTypeRef {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitImplicitType(this, data)
|
visitor.visitImplicitTypeRef(this, data)
|
||||||
}
|
}
|
||||||
+6
-6
@@ -8,17 +8,17 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
import org.jetbrains.kotlin.fir.VisitedSupertype
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirResolvedType : FirTypeWithNullability {
|
interface FirResolvedTypeRef : FirTypeRefWithNullability {
|
||||||
val type: ConeKotlinType
|
val type: ConeKotlinType
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitResolvedType(this, data)
|
visitor.visitResolvedTypeRef(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FirResolvedFunctionType : @VisitedSupertype FirResolvedType, FirFunctionType {
|
interface FirResolvedFunctionTypeRef : @VisitedSupertype FirResolvedTypeRef, FirFunctionTypeRef {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitResolvedFunctionType(this, data)
|
visitor.visitResolvedFunctionTypeRef(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T : ConeKotlinType> FirType.coneTypeUnsafe() = (this as FirResolvedType).type as T
|
inline fun <reified T : ConeKotlinType> FirTypeRef.coneTypeUnsafe() = (this as FirResolvedTypeRef).type as T
|
||||||
inline fun <reified T : ConeKotlinType> FirType.coneTypeSafe() = (this as? FirResolvedType)?.type as? T
|
inline fun <reified T : ConeKotlinType> FirTypeRef.coneTypeSafe() = (this as? FirResolvedTypeRef)?.type as? T
|
||||||
+2
-2
@@ -11,13 +11,13 @@ import org.jetbrains.kotlin.types.Variance
|
|||||||
interface FirTypeProjectionWithVariance : FirTypeProjection {
|
interface FirTypeProjectionWithVariance : FirTypeProjection {
|
||||||
val variance: Variance
|
val variance: Variance
|
||||||
|
|
||||||
val type: FirType
|
val typeRef: FirTypeRef
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypeProjectionWithVariance(this, data)
|
visitor.visitTypeProjectionWithVariance(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
type.accept(visitor, data)
|
typeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer
|
|||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
@BaseTransformedType
|
@BaseTransformedType
|
||||||
interface FirType : FirElement, FirAnnotationContainer {
|
interface FirTypeRef : FirElement, FirAnnotationContainer {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitType(this, data)
|
visitor.visitTypeRef(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
acceptAnnotations(visitor, data)
|
acceptAnnotations(visitor, data)
|
||||||
+2
-2
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirTypeWithNullability : FirType {
|
interface FirTypeRefWithNullability : FirTypeRef {
|
||||||
val isMarkedNullable: Boolean
|
val isMarkedNullable: Boolean
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitTypeWithNullability(this, data)
|
visitor.visitTypeRefWithNullability(this, data)
|
||||||
}
|
}
|
||||||
+2
-2
@@ -12,11 +12,11 @@ interface FirQualifierPart : FirTypeProjectionContainer {
|
|||||||
val name: Name
|
val name: Name
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FirUserType : FirTypeWithNullability {
|
interface FirUserTypeRef : FirTypeRefWithNullability {
|
||||||
val qualifier: List<FirQualifierPart>
|
val qualifier: List<FirQualifierPart>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||||
visitor.visitUserType(this, data)
|
visitor.visitUserTypeRef(this, data)
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
super.acceptChildren(visitor, data)
|
super.acceptChildren(visitor, data)
|
||||||
+3
-3
@@ -10,14 +10,14 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeWithNullability
|
import org.jetbrains.kotlin.fir.types.FirTypeRefWithNullability
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
abstract class FirAbstractAnnotatedType(
|
abstract class FirAbstractAnnotatedTypeRef(
|
||||||
final override val session: FirSession,
|
final override val session: FirSession,
|
||||||
final override val psi: PsiElement?,
|
final override val psi: PsiElement?,
|
||||||
final override val isMarkedNullable: Boolean
|
final override val isMarkedNullable: Boolean
|
||||||
) : FirTypeWithNullability {
|
) : FirTypeRefWithNullability {
|
||||||
override val annotations = mutableListOf<FirAnnotationCall>()
|
override val annotations = mutableListOf<FirAnnotationCall>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
+7
-7
@@ -10,19 +10,19 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirDelegatedType
|
import org.jetbrains.kotlin.fir.types.FirDelegatedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirDelegatedTypeImpl(
|
class FirDelegatedTypeRefImpl(
|
||||||
override var type: FirType,
|
override var typeRef: FirTypeRef,
|
||||||
override var delegate: FirExpression?
|
override var delegate: FirExpression?
|
||||||
) : FirAbstractElement(type.session, type.psi), FirDelegatedType {
|
) : FirAbstractElement(typeRef.session, typeRef.psi), FirDelegatedTypeRef {
|
||||||
override val annotations: List<FirAnnotationCall>
|
override val annotations: List<FirAnnotationCall>
|
||||||
get() = type.annotations
|
get() = typeRef.annotations
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
type = type.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
delegate = delegate?.transformSingle(transformer, data)
|
delegate = delegate?.transformSingle(transformer, data)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
+3
-3
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.types.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.types.FirDynamicType
|
import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
|
||||||
|
|
||||||
class FirDynamicTypeImpl(
|
class FirDynamicTypeRefImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
isNullable: Boolean
|
isNullable: Boolean
|
||||||
) : FirAbstractAnnotatedType(session, psi, isNullable), FirDynamicType
|
) : FirAbstractAnnotatedTypeRef(session, psi, isNullable), FirDynamicTypeRef
|
||||||
+4
-4
@@ -7,15 +7,15 @@ package org.jetbrains.kotlin.fir.types.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.types.FirErrorType
|
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
class FirErrorTypeImpl(
|
class FirErrorTypeRefImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
override val reason: String
|
override val reason: String
|
||||||
) : FirAbstractAnnotatedType(session, psi, false), FirErrorType {
|
) : FirAbstractAnnotatedTypeRef(session, psi, false), FirErrorTypeRef {
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||||
return super<FirErrorType>.accept(visitor, data)
|
return super<FirErrorTypeRef>.accept(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+9
-9
@@ -11,24 +11,24 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirFunctionType
|
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirFunctionTypeImpl(
|
class FirFunctionTypeRefImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
isNullable: Boolean,
|
isNullable: Boolean,
|
||||||
override var receiverType: FirType?,
|
override var receiverTypeRef: FirTypeRef?,
|
||||||
override var returnType: FirType
|
override var returnTypeRef: FirTypeRef
|
||||||
) : FirAbstractAnnotatedType(session, psi, isNullable), FirFunctionType {
|
) : FirAbstractAnnotatedTypeRef(session, psi, isNullable), FirFunctionTypeRef {
|
||||||
override val valueParameters = mutableListOf<FirValueParameter>()
|
override val valueParameters = mutableListOf<FirValueParameter>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
receiverType = receiverType?.transformSingle(transformer, data)
|
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
valueParameters.transformInplace(transformer, data)
|
valueParameters.transformInplace(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractAnnotatedType>.transformChildren(transformer, data)
|
return super<FirAbstractAnnotatedTypeRef>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+9
-9
@@ -9,32 +9,32 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitType
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
sealed class FirImplicitBuiltinType(
|
sealed class FirImplicitBuiltinTypeRef(
|
||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val psi: PsiElement?,
|
override val psi: PsiElement?,
|
||||||
val name: Name
|
val name: Name
|
||||||
) : FirImplicitType {
|
) : FirImplicitTypeRef {
|
||||||
override val annotations: List<FirAnnotationCall>
|
override val annotations: List<FirAnnotationCall>
|
||||||
get() = emptyList()
|
get() = emptyList()
|
||||||
|
|
||||||
constructor(session: FirSession, psi: PsiElement?, name: FqNameUnsafe) : this(session, psi, name.shortName())
|
constructor(session: FirSession, psi: PsiElement?, name: FqNameUnsafe) : this(session, psi, name.shortName())
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirImplicitUnitType(
|
class FirImplicitUnitTypeRef(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirImplicitBuiltinType(session, psi, KotlinBuiltIns.FQ_NAMES.unit)
|
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES.unit)
|
||||||
|
|
||||||
class FirImplicitAnyType(
|
class FirImplicitAnyTypeRef(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirImplicitBuiltinType(session, psi, KotlinBuiltIns.FQ_NAMES.any)
|
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES.any)
|
||||||
|
|
||||||
class FirImplicitEnumType(
|
class FirImplicitEnumTypeRef(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?
|
psi: PsiElement?
|
||||||
) : FirImplicitBuiltinType(session, psi, KotlinBuiltIns.FQ_NAMES._enum)
|
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES._enum)
|
||||||
+3
-3
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.fir.types.impl
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitType
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
|
|
||||||
class FirImplicitTypeImpl(
|
class FirImplicitTypeRefImpl(
|
||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val psi: PsiElement?
|
override val psi: PsiElement?
|
||||||
) : FirImplicitType {
|
) : FirImplicitTypeRef {
|
||||||
override val annotations: List<FirAnnotationCall>
|
override val annotations: List<FirAnnotationCall>
|
||||||
get() = emptyList()
|
get() = emptyList()
|
||||||
}
|
}
|
||||||
+8
-8
@@ -13,24 +13,24 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
|||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionType
|
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirResolvedFunctionTypeImpl(
|
class FirResolvedFunctionTypeRefImpl(
|
||||||
override val psi: PsiElement?,
|
override val psi: PsiElement?,
|
||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val isMarkedNullable: Boolean,
|
override val isMarkedNullable: Boolean,
|
||||||
override val annotations: MutableList<FirAnnotationCall>,
|
override val annotations: MutableList<FirAnnotationCall>,
|
||||||
override var receiverType: FirType?,
|
override var receiverTypeRef: FirTypeRef?,
|
||||||
override val valueParameters: MutableList<FirValueParameter>,
|
override val valueParameters: MutableList<FirValueParameter>,
|
||||||
override var returnType: FirType,
|
override var returnTypeRef: FirTypeRef,
|
||||||
override val type: ConeKotlinType
|
override val type: ConeKotlinType
|
||||||
) : FirResolvedFunctionType {
|
) : FirResolvedFunctionTypeRef {
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
receiverType = receiverType?.transformSingle(transformer, data)
|
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
|
||||||
returnType = returnType.transformSingle(transformer, data)
|
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
|
||||||
valueParameters.transformInplace(transformer, data)
|
valueParameters.transformInplace(transformer, data)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
+3
-3
@@ -9,12 +9,12 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
|
|
||||||
class FirResolvedTypeImpl(
|
class FirResolvedTypeRefImpl(
|
||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val psi: PsiElement?,
|
override val psi: PsiElement?,
|
||||||
override val type: ConeKotlinType,
|
override val type: ConeKotlinType,
|
||||||
override val isMarkedNullable: Boolean,
|
override val isMarkedNullable: Boolean,
|
||||||
override val annotations: List<FirAnnotationCall>
|
override val annotations: List<FirAnnotationCall>
|
||||||
) : FirResolvedType
|
) : FirResolvedTypeRef
|
||||||
+3
-3
@@ -9,7 +9,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjectionWithVariance
|
import org.jetbrains.kotlin.fir.types.FirTypeProjectionWithVariance
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -18,10 +18,10 @@ class FirTypeProjectionWithVarianceImpl(
|
|||||||
override val session: FirSession,
|
override val session: FirSession,
|
||||||
override val psi: PsiElement?,
|
override val psi: PsiElement?,
|
||||||
override val variance: Variance,
|
override val variance: Variance,
|
||||||
override var type: FirType
|
override var typeRef: FirTypeRef
|
||||||
) : FirTypeProjectionWithVariance {
|
) : FirTypeProjectionWithVariance {
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
type = type.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -11,14 +11,14 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.transformInplace
|
import org.jetbrains.kotlin.fir.transformInplace
|
||||||
import org.jetbrains.kotlin.fir.types.FirQualifierPart
|
import org.jetbrains.kotlin.fir.types.FirQualifierPart
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.FirUserType
|
import org.jetbrains.kotlin.fir.types.FirUserTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
|
||||||
class FirUserTypeImpl(
|
class FirUserTypeRefImpl(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
psi: PsiElement?,
|
psi: PsiElement?,
|
||||||
isNullable: Boolean
|
isNullable: Boolean
|
||||||
) : FirAbstractAnnotatedType(session, psi, isNullable), FirUserType {
|
) : FirAbstractAnnotatedTypeRef(session, psi, isNullable), FirUserTypeRef {
|
||||||
override val qualifier = mutableListOf<FirQualifierPart>()
|
override val qualifier = mutableListOf<FirQualifierPart>()
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
@@ -26,6 +26,6 @@ class FirUserTypeImpl(
|
|||||||
(part.typeArguments as MutableList<FirTypeProjection>).transformInplace(transformer, data)
|
(part.typeArguments as MutableList<FirTypeProjection>).transformInplace(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
return super<FirAbstractAnnotatedType>.transformChildren(transformer, data)
|
return super<FirAbstractAnnotatedTypeRef>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+62
-62
@@ -300,46 +300,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformTargetElement(labeledElement, data)
|
return transformTargetElement(labeledElement, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun transformType(type: FirType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformElement(type, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformDelegatedType(delegatedType: FirDelegatedType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformType(delegatedType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformErrorType(errorType: FirErrorType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformType(errorType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformImplicitType(implicitType: FirImplicitType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformType(implicitType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformType(typeWithNullability, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformDynamicType(dynamicType: FirDynamicType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformTypeWithNullability(dynamicType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformFunctionType(functionType: FirFunctionType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformTypeWithNullability(functionType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformResolvedType(resolvedType: FirResolvedType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformTypeWithNullability(resolvedType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformResolvedType(resolvedFunctionType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformUserType(userType: FirUserType, data: D): CompositeTransformResult<FirType> {
|
|
||||||
return transformTypeWithNullability(userType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun transformTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirTypeProjection> {
|
open fun transformTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirTypeProjection> {
|
||||||
return transformElement(typeProjection, data)
|
return transformElement(typeProjection, data)
|
||||||
}
|
}
|
||||||
@@ -352,6 +312,46 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformTypeProjection(typeProjectionWithVariance, data)
|
return transformTypeProjection(typeProjectionWithVariance, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformTypeRef(typeRef: FirTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformElement(typeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRef(delegatedTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRef(errorTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRef(implicitTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRef(typeRefWithNullability, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRefWithNullability(dynamicTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRefWithNullability(functionTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRefWithNullability(resolvedTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformResolvedTypeRef(resolvedFunctionTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun transformUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
|
||||||
|
return transformTypeRefWithNullability(userTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun <E : FirElement> transformWhenBranch(whenBranch: E, data: D): CompositeTransformResult<E> {
|
open fun <E : FirElement> transformWhenBranch(whenBranch: E, data: D): CompositeTransformResult<E> {
|
||||||
return transformElement(whenBranch, data)
|
return transformElement(whenBranch, data)
|
||||||
}
|
}
|
||||||
@@ -448,16 +448,16 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
|
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformDelegatedType(delegatedType, data)
|
return transformDelegatedTypeRef(delegatedTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDoWhileLoop(doWhileLoop: FirDoWhileLoop, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitDoWhileLoop(doWhileLoop: FirDoWhileLoop, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformDoWhileLoop(doWhileLoop, data)
|
return transformDoWhileLoop(doWhileLoop, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDynamicType(dynamicType: FirDynamicType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformDynamicType(dynamicType, data)
|
return transformDynamicTypeRef(dynamicTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
||||||
@@ -472,8 +472,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformErrorExpression(errorExpression, data)
|
return transformErrorExpression(errorExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitErrorType(errorType: FirErrorType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformErrorType(errorType, data)
|
return transformErrorTypeRef(errorTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
|
||||||
@@ -492,16 +492,16 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformFunctionCall(functionCall, data)
|
return transformFunctionCall(functionCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitFunctionType(functionType: FirFunctionType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformFunctionType(functionType, data)
|
return transformFunctionTypeRef(functionTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitGetClassCall(getClassCall: FirGetClassCall, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitGetClassCall(getClassCall: FirGetClassCall, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformGetClassCall(getClassCall, data)
|
return transformGetClassCall(getClassCall, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitImplicitType(implicitType: FirImplicitType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformImplicitType(implicitType, data)
|
return transformImplicitTypeRef(implicitTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitImport(import: FirImport, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitImport(import: FirImport, data: D): CompositeTransformResult<FirElement> {
|
||||||
@@ -592,16 +592,16 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
|
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformResolvedFunctionType(resolvedFunctionType, data)
|
return transformResolvedFunctionTypeRef(resolvedFunctionTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformResolvedImport(resolvedImport, data)
|
return transformResolvedImport(resolvedImport, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedType(resolvedType: FirResolvedType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformResolvedType(resolvedType, data)
|
return transformResolvedTypeRef(resolvedTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): CompositeTransformResult<FirElement> {
|
||||||
@@ -636,10 +636,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformTryExpression(tryExpression, data)
|
return transformTryExpression(tryExpression, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitType(type: FirType, data: D): CompositeTransformResult<FirElement> {
|
|
||||||
return transformType(type, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformTypeAlias(typeAlias, data)
|
return transformTypeAlias(typeAlias, data)
|
||||||
}
|
}
|
||||||
@@ -660,16 +656,20 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformTypeProjectionWithVariance(typeProjectionWithVariance, data)
|
return transformTypeProjectionWithVariance(typeProjectionWithVariance, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitTypeRef(typeRef: FirTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformTypeWithNullability(typeWithNullability, data)
|
return transformTypeRef(typeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
return transformTypeRefWithNullability(typeRefWithNullability, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformTypedDeclaration(typedDeclaration, data)
|
return transformTypedDeclaration(typedDeclaration, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitUserType(userType: FirUserType, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: D): CompositeTransformResult<FirElement> {
|
||||||
return transformUserType(userType, data)
|
return transformUserTypeRef(userTypeRef, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitValueParameter(valueParameter: FirValueParameter, data: D): CompositeTransformResult<FirElement> {
|
final override fun visitValueParameter(valueParameter: FirValueParameter, data: D): CompositeTransformResult<FirElement> {
|
||||||
|
|||||||
+40
-40
@@ -300,46 +300,6 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitTargetElement(labeledElement, data)
|
return visitTargetElement(labeledElement, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitType(type: FirType, data: D): R {
|
|
||||||
return visitElement(type, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitDelegatedType(delegatedType: FirDelegatedType, data: D): R {
|
|
||||||
return visitType(delegatedType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorType(errorType: FirErrorType, data: D): R {
|
|
||||||
return visitType(errorType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitImplicitType(implicitType: FirImplicitType, data: D): R {
|
|
||||||
return visitType(implicitType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: D): R {
|
|
||||||
return visitType(typeWithNullability, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitDynamicType(dynamicType: FirDynamicType, data: D): R {
|
|
||||||
return visitTypeWithNullability(dynamicType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitFunctionType(functionType: FirFunctionType, data: D): R {
|
|
||||||
return visitTypeWithNullability(functionType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedType(resolvedType: FirResolvedType, data: D): R {
|
|
||||||
return visitTypeWithNullability(resolvedType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: D): R {
|
|
||||||
return visitResolvedType(resolvedFunctionType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitUserType(userType: FirUserType, data: D): R {
|
|
||||||
return visitTypeWithNullability(userType, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): R {
|
open fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): R {
|
||||||
return visitElement(typeProjection, data)
|
return visitElement(typeProjection, data)
|
||||||
}
|
}
|
||||||
@@ -352,6 +312,46 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
return visitTypeProjection(typeProjectionWithVariance, data)
|
return visitTypeProjection(typeProjectionWithVariance, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitTypeRef(typeRef: FirTypeRef, data: D): R {
|
||||||
|
return visitElement(typeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: D): R {
|
||||||
|
return visitTypeRef(delegatedTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): R {
|
||||||
|
return visitTypeRef(errorTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R {
|
||||||
|
return visitTypeRef(implicitTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): R {
|
||||||
|
return visitTypeRef(typeRefWithNullability, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: D): R {
|
||||||
|
return visitTypeRefWithNullability(dynamicTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): R {
|
||||||
|
return visitTypeRefWithNullability(functionTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): R {
|
||||||
|
return visitTypeRefWithNullability(resolvedTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): R {
|
||||||
|
return visitResolvedTypeRef(resolvedFunctionTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: D): R {
|
||||||
|
return visitTypeRefWithNullability(userTypeRef, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitWhenBranch(whenBranch: FirWhenBranch, data: D): R {
|
open fun visitWhenBranch(whenBranch: FirWhenBranch, data: D): R {
|
||||||
return visitElement(whenBranch, data)
|
return visitElement(whenBranch, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+62
-62
@@ -300,46 +300,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitTargetElement(labeledElement, null)
|
visitTargetElement(labeledElement, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitType(type: FirType) {
|
|
||||||
visitElement(type, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitDelegatedType(delegatedType: FirDelegatedType) {
|
|
||||||
visitType(delegatedType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitErrorType(errorType: FirErrorType) {
|
|
||||||
visitType(errorType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitImplicitType(implicitType: FirImplicitType) {
|
|
||||||
visitType(implicitType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability) {
|
|
||||||
visitType(typeWithNullability, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitDynamicType(dynamicType: FirDynamicType) {
|
|
||||||
visitTypeWithNullability(dynamicType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitFunctionType(functionType: FirFunctionType) {
|
|
||||||
visitTypeWithNullability(functionType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedType(resolvedType: FirResolvedType) {
|
|
||||||
visitTypeWithNullability(resolvedType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType) {
|
|
||||||
visitResolvedType(resolvedFunctionType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitUserType(userType: FirUserType) {
|
|
||||||
visitTypeWithNullability(userType, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTypeProjection(typeProjection: FirTypeProjection) {
|
open fun visitTypeProjection(typeProjection: FirTypeProjection) {
|
||||||
visitElement(typeProjection, null)
|
visitElement(typeProjection, null)
|
||||||
}
|
}
|
||||||
@@ -352,6 +312,46 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitTypeProjection(typeProjectionWithVariance, null)
|
visitTypeProjection(typeProjectionWithVariance, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitTypeRef(typeRef: FirTypeRef) {
|
||||||
|
visitElement(typeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef) {
|
||||||
|
visitTypeRef(delegatedTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) {
|
||||||
|
visitTypeRef(errorTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) {
|
||||||
|
visitTypeRef(implicitTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) {
|
||||||
|
visitTypeRef(typeRefWithNullability, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef) {
|
||||||
|
visitTypeRefWithNullability(dynamicTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef) {
|
||||||
|
visitTypeRefWithNullability(functionTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
|
||||||
|
visitTypeRefWithNullability(resolvedTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) {
|
||||||
|
visitResolvedTypeRef(resolvedFunctionTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun visitUserTypeRef(userTypeRef: FirUserTypeRef) {
|
||||||
|
visitTypeRefWithNullability(userTypeRef, null)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitWhenBranch(whenBranch: FirWhenBranch) {
|
open fun visitWhenBranch(whenBranch: FirWhenBranch) {
|
||||||
visitElement(whenBranch, null)
|
visitElement(whenBranch, null)
|
||||||
}
|
}
|
||||||
@@ -448,16 +448,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitDelegatedConstructorCall(delegatedConstructorCall)
|
visitDelegatedConstructorCall(delegatedConstructorCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: Nothing?) {
|
final override fun visitDelegatedTypeRef(delegatedTypeRef: FirDelegatedTypeRef, data: Nothing?) {
|
||||||
visitDelegatedType(delegatedType)
|
visitDelegatedTypeRef(delegatedTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDoWhileLoop(doWhileLoop: FirDoWhileLoop, data: Nothing?) {
|
final override fun visitDoWhileLoop(doWhileLoop: FirDoWhileLoop, data: Nothing?) {
|
||||||
visitDoWhileLoop(doWhileLoop)
|
visitDoWhileLoop(doWhileLoop)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitDynamicType(dynamicType: FirDynamicType, data: Nothing?) {
|
final override fun visitDynamicTypeRef(dynamicTypeRef: FirDynamicTypeRef, data: Nothing?) {
|
||||||
visitDynamicType(dynamicType)
|
visitDynamicTypeRef(dynamicTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
||||||
@@ -472,8 +472,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitErrorExpression(errorExpression)
|
visitErrorExpression(errorExpression)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitErrorType(errorType: FirErrorType, data: Nothing?) {
|
final override fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: Nothing?) {
|
||||||
visitErrorType(errorType)
|
visitErrorTypeRef(errorTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
|
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
|
||||||
@@ -492,16 +492,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitFunctionCall(functionCall)
|
visitFunctionCall(functionCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitFunctionType(functionType: FirFunctionType, data: Nothing?) {
|
final override fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: Nothing?) {
|
||||||
visitFunctionType(functionType)
|
visitFunctionTypeRef(functionTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitGetClassCall(getClassCall: FirGetClassCall, data: Nothing?) {
|
final override fun visitGetClassCall(getClassCall: FirGetClassCall, data: Nothing?) {
|
||||||
visitGetClassCall(getClassCall)
|
visitGetClassCall(getClassCall)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitImplicitType(implicitType: FirImplicitType, data: Nothing?) {
|
final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: Nothing?) {
|
||||||
visitImplicitType(implicitType)
|
visitImplicitTypeRef(implicitTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitImport(import: FirImport, data: Nothing?) {
|
final override fun visitImport(import: FirImport, data: Nothing?) {
|
||||||
@@ -592,16 +592,16 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
|
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: Nothing?) {
|
final override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: Nothing?) {
|
||||||
visitResolvedFunctionType(resolvedFunctionType)
|
visitResolvedFunctionTypeRef(resolvedFunctionTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: Nothing?) {
|
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: Nothing?) {
|
||||||
visitResolvedImport(resolvedImport)
|
visitResolvedImport(resolvedImport)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitResolvedType(resolvedType: FirResolvedType, data: Nothing?) {
|
final override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: Nothing?) {
|
||||||
visitResolvedType(resolvedType)
|
visitResolvedTypeRef(resolvedTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitReturnExpression(returnExpression: FirReturnExpression, data: Nothing?) {
|
final override fun visitReturnExpression(returnExpression: FirReturnExpression, data: Nothing?) {
|
||||||
@@ -636,10 +636,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitTryExpression(tryExpression)
|
visitTryExpression(tryExpression)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitType(type: FirType, data: Nothing?) {
|
|
||||||
visitType(type)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
||||||
visitTypeAlias(typeAlias)
|
visitTypeAlias(typeAlias)
|
||||||
}
|
}
|
||||||
@@ -660,16 +656,20 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitTypeProjectionWithVariance(typeProjectionWithVariance)
|
visitTypeProjectionWithVariance(typeProjectionWithVariance)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: Nothing?) {
|
final override fun visitTypeRef(typeRef: FirTypeRef, data: Nothing?) {
|
||||||
visitTypeWithNullability(typeWithNullability)
|
visitTypeRef(typeRef)
|
||||||
|
}
|
||||||
|
|
||||||
|
final override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: Nothing?) {
|
||||||
|
visitTypeRefWithNullability(typeRefWithNullability)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: Nothing?) {
|
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: Nothing?) {
|
||||||
visitTypedDeclaration(typedDeclaration)
|
visitTypedDeclaration(typedDeclaration)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitUserType(userType: FirUserType, data: Nothing?) {
|
final override fun visitUserTypeRef(userTypeRef: FirUserTypeRef, data: Nothing?) {
|
||||||
visitUserType(userType)
|
visitUserTypeRef(userTypeRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitValueParameter(valueParameter: FirValueParameter, data: Nothing?) {
|
final override fun visitValueParameter(valueParameter: FirValueParameter, data: Nothing?) {
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedType
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirType
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -65,18 +65,18 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
|
|||||||
element.acceptChildren(this)
|
element.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitType(type: FirType) {
|
override fun visitTypeRef(typeRef: FirTypeRef) {
|
||||||
unresolvedTypes++
|
unresolvedTypes++
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitResolvedType(resolvedType: FirResolvedType) {
|
override fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
|
||||||
resolvedTypes++
|
resolvedTypes++
|
||||||
val type = resolvedType.type
|
val type = resolvedTypeRef.type
|
||||||
if (type is ConeKotlinErrorType || type is ConeClassErrorType) {
|
if (type is ConeKotlinErrorType || type is ConeClassErrorType) {
|
||||||
if (resolvedType.psi == null) {
|
if (resolvedTypeRef.psi == null) {
|
||||||
implicitTypes++
|
implicitTypes++
|
||||||
} else {
|
} else {
|
||||||
val psi = resolvedType.psi!!
|
val psi = resolvedTypeRef.psi!!
|
||||||
val problem = "$type with psi `${psi.text}`"
|
val problem = "$type with psi `${psi.text}`"
|
||||||
val document = try {
|
val document = try {
|
||||||
fileDocumentManager.getDocument(psi.containingFile.virtualFile)
|
fileDocumentManager.getDocument(psi.containingFile.virtualFile)
|
||||||
|
|||||||
Reference in New Issue
Block a user