FIR: Rename ConeClassTypeImpl -> ConeClassLikeTypeImpl

This commit is contained in:
Denis Zharkov
2019-11-15 17:31:58 +03:00
parent f178cb6fb3
commit e03162f2dd
20 changed files with 50 additions and 54 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.types.impl
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
open class ConeClassTypeImpl( open class ConeClassLikeTypeImpl(
override val lookupTag: ConeClassLikeLookupTag, override val lookupTag: ConeClassLikeLookupTag,
override val typeArguments: Array<out ConeKotlinTypeProjection>, override val typeArguments: Array<out ConeKotlinTypeProjection>,
isNullable: Boolean isNullable: Boolean
@@ -18,7 +18,7 @@ open class ConeClassTypeImpl(
if (this === other) return true if (this === other) return true
if (javaClass != other?.javaClass) return false if (javaClass != other?.javaClass) return false
other as ConeClassTypeImpl other as ConeClassLikeTypeImpl
if (lookupTag != other.lookupTag) return false if (lookupTag != other.lookupTag) return false
if (!typeArguments.contentEquals(other.typeArguments)) return false if (!typeArguments.contentEquals(other.typeArguments)) return false
@@ -33,8 +33,6 @@ open class ConeClassTypeImpl(
result = 31 * result + nullability.hashCode() result = 31 * result + nullability.hashCode()
return result return result
} }
} }
class ConeAbbreviatedTypeImpl( class ConeAbbreviatedTypeImpl(
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.toFirSourceElement import org.jetbrains.kotlin.fir.toFirSourceElement
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.ir.expressions.IrConstKind
@@ -63,7 +63,7 @@ internal fun ClassId.toConeKotlinType(
isNullable: Boolean isNullable: Boolean
): ConeLookupTagBasedType { ): ConeLookupTagBasedType {
val lookupTag = ConeClassLikeLookupTagImpl(this) val lookupTag = ConeClassLikeLookupTagImpl(this)
return ConeClassTypeImpl(lookupTag, typeArguments, isNullable) return ConeClassLikeTypeImpl(lookupTag, typeArguments, isNullable)
} }
internal fun FirTypeRef.toNotNullConeKotlinType( internal fun FirTypeRef.toNotNullConeKotlinType(
@@ -180,7 +180,7 @@ internal fun JavaAnnotation.toFirAnnotationCall(
source = null, useSiteTarget = null, source = null, useSiteTarget = null,
annotationTypeRef = FirResolvedTypeRefImpl( annotationTypeRef = FirResolvedTypeRefImpl(
source = null, source = null,
type = ConeClassTypeImpl(FirRegularClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false) type = ConeClassLikeTypeImpl(FirRegularClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false)
) )
).apply { ).apply {
for (argument in this@toFirAnnotationCall.arguments) { for (argument in this@toFirAnnotationCall.arguments) {
@@ -1459,7 +1459,7 @@ class DeclarationsConverter(
null, null,
FirResolvedTypeRefImpl( FirResolvedTypeRefImpl(
null, null,
ConeClassTypeImpl( ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(ClassId.fromString(EXTENSION_FUNCTION_ANNOTATION)), ConeClassLikeLookupTagImpl(ClassId.fromString(EXTENSION_FUNCTION_ANNOTATION)),
emptyArray(), emptyArray(),
false false
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeTypeParameterType import org.jetbrains.kotlin.fir.types.ConeTypeParameterType
import org.jetbrains.kotlin.fir.types.FirTypeRef 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.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.ir.expressions.IrConstKind
@@ -158,7 +158,7 @@ abstract class BaseFirBuilder<T>(val session: FirSession, val context: Context =
} }
return FirResolvedTypeRefImpl( return FirResolvedTypeRefImpl(
this?.toFirSourceElement(), this?.toFirSourceElement(),
ConeClassTypeImpl( ConeClassLikeTypeImpl(
firClass.symbol.toLookupTag(), firClass.symbol.toLookupTag(),
typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }.toTypedArray(), typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }.toTypedArray(),
false false
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -40,10 +40,10 @@ fun FirModifiableRegularClass.generateValuesFunction(
FirSimpleFunctionImpl( FirSimpleFunctionImpl(
source, session, source, session,
FirResolvedTypeRefImpl( FirResolvedTypeRefImpl(
source, ConeClassTypeImpl( source, ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(StandardClassIds.Array), ConeClassLikeLookupTagImpl(StandardClassIds.Array),
arrayOf( arrayOf(
ConeClassTypeImpl(ConeClassLikeLookupTagImpl(this.symbol.classId), emptyArray(), isNullable = false) ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this.symbol.classId), emptyArray(), isNullable = false)
), ),
isNullable = false isNullable = false
) )
@@ -66,7 +66,7 @@ fun FirModifiableRegularClass.generateValueOfFunction(
FirSimpleFunctionImpl( FirSimpleFunctionImpl(
source, session, source, session,
FirResolvedTypeRefImpl( FirResolvedTypeRefImpl(
source, ConeClassTypeImpl( source, ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(this.symbol.classId), ConeClassLikeLookupTagImpl(this.symbol.classId),
emptyArray(), emptyArray(),
isNullable = false isNullable = false
@@ -1376,7 +1376,7 @@ class RawFirBuilder(session: FirSession, val stubMode: Boolean) : BaseFirBuilder
null, null,
FirResolvedTypeRefImpl( FirResolvedTypeRefImpl(
null, null,
ConeClassTypeImpl( ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(ClassId.fromString(EXTENSION_FUNCTION_ANNOTATION)), ConeClassLikeLookupTagImpl(ClassId.fromString(EXTENSION_FUNCTION_ANNOTATION)),
emptyArray(), emptyArray(),
false false
@@ -14,9 +14,8 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirEnumEntryImpl import org.jetbrains.kotlin.fir.declarations.impl.FirEnumEntryImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirSealedClassImpl import org.jetbrains.kotlin.fir.declarations.impl.FirSealedClassImpl
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl 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.deserialization.Flags import org.jetbrains.kotlin.metadata.deserialization.Flags
@@ -125,7 +124,7 @@ fun deserializeClassToSymbol(
resolvePhase = FirResolvePhase.DECLARATIONS resolvePhase = FirResolvePhase.DECLARATIONS
superTypeRefs += FirResolvedTypeRefImpl( superTypeRefs += FirResolvedTypeRefImpl(
null, null,
ConeClassTypeImpl(ConeClassLikeLookupTagImpl(classId), emptyArray(), false) ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(classId), emptyArray(), false)
) )
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.deserialization package org.jetbrains.kotlin.fir.deserialization
import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
@@ -16,7 +15,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
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.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
@@ -258,7 +257,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
val delegatedSelfType = FirResolvedTypeRefImpl( val delegatedSelfType = FirResolvedTypeRefImpl(
null, null,
ConeClassTypeImpl( ConeClassLikeTypeImpl(
klass.symbol.toLookupTag(), klass.symbol.toLookupTag(),
typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }.toTypedArray(), typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }.toTypedArray(),
false false
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
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.ConeAbbreviatedTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf
@@ -128,7 +128,7 @@ class FirTypeDeserializer(
//createSuspendFunctionType(annotations, constructor, arguments, proto.nullable) //createSuspendFunctionType(annotations, constructor, arguments, proto.nullable)
ConeClassErrorType("createSuspendFunctionType not supported") ConeClassErrorType("createSuspendFunctionType not supported")
} else { } else {
ConeClassTypeImpl(constructor, arguments, isNullable = proto.nullable) ConeClassLikeTypeImpl(constructor, arguments, isNullable = proto.nullable)
} }
val abbreviatedTypeProto = proto.abbreviatedType(typeTable) ?: return simpleType val abbreviatedTypeProto = proto.abbreviatedType(typeTable) ?: return simpleType
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.references.FirNamedReference
import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.ConeStarProjection import org.jetbrains.kotlin.fir.types.ConeStarProjection
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
sealed class DoubleColonLHS(val type: ConeKotlinType) { sealed class DoubleColonLHS(val type: ConeKotlinType) {
/** /**
@@ -146,7 +146,7 @@ class FirDoubleColonExpressionResolver(
?.fir as? FirRegularClass ?.fir as? FirRegularClass
?: return null ?: return null
val type = ConeClassTypeImpl( val type = ConeClassLikeTypeImpl(
firClass.symbol.toLookupTag(), firClass.symbol.toLookupTag(),
Array(firClass.typeParameters.size) { ConeStarProjection }, Array(firClass.typeParameters.size) { ConeStarProjection },
isNullable = false // TODO: Use org.jetbrains.kotlin.psi.KtDoubleColonExpression.getHasQuestionMarks isNullable = false // TODO: Use org.jetbrains.kotlin.psi.KtDoubleColonExpression.getHasQuestionMarks
@@ -109,7 +109,7 @@ fun ConeClassifierLookupTag.toSymbol(useSiteSession: FirSession): FirClassifierS
fun ConeTypeParameterLookupTag.toSymbol(): FirTypeParameterSymbol = this.symbol as FirTypeParameterSymbol fun ConeTypeParameterLookupTag.toSymbol(): FirTypeParameterSymbol = this.symbol as FirTypeParameterSymbol
fun ConeClassLikeLookupTag.constructClassType(typeArguments: Array<out ConeKotlinTypeProjection>, isNullable: Boolean): ConeLookupTagBasedType { fun ConeClassLikeLookupTag.constructClassType(typeArguments: Array<out ConeKotlinTypeProjection>, isNullable: Boolean): ConeLookupTagBasedType {
return ConeClassTypeImpl(this, typeArguments, isNullable) return ConeClassLikeTypeImpl(this, typeArguments, isNullable)
} }
fun ConeClassifierLookupTag.constructType(typeArguments: Array<ConeKotlinTypeProjection>, isNullable: Boolean): ConeLookupTagBasedType { fun ConeClassifierLookupTag.constructType(typeArguments: Array<ConeKotlinTypeProjection>, isNullable: Boolean): ConeLookupTagBasedType {
@@ -126,7 +126,7 @@ fun FirClassifierSymbol<*>.constructType(typeArguments: Array<ConeKotlinTypeProj
ConeTypeParameterTypeImpl(this.toLookupTag(), isNullable) ConeTypeParameterTypeImpl(this.toLookupTag(), isNullable)
} }
is FirClassSymbol -> { is FirClassSymbol -> {
ConeClassTypeImpl(this.toLookupTag(), typeArguments, isNullable) ConeClassLikeTypeImpl(this.toLookupTag(), typeArguments, isNullable)
} }
is FirTypeAliasSymbol -> { is FirTypeAliasSymbol -> {
ConeAbbreviatedTypeImpl( ConeAbbreviatedTypeImpl(
@@ -242,7 +242,7 @@ fun createFunctionalType(
val postfix = "Function${receiverAndParameterTypes.size - 1}" val postfix = "Function${receiverAndParameterTypes.size - 1}"
val functionalTypeId = if (isKFunctionType) StandardClassIds.reflectByName("K$postfix") else StandardClassIds.byName(postfix) val functionalTypeId = if (isKFunctionType) StandardClassIds.reflectByName("K$postfix") else StandardClassIds.byName(postfix)
return ConeClassTypeImpl(ConeClassLikeLookupTagImpl(functionalTypeId), receiverAndParameterTypes.toTypedArray(), isNullable = false) return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(functionalTypeId), receiverAndParameterTypes.toTypedArray(), isNullable = false)
} }
fun createKPropertyType( fun createKPropertyType(
@@ -252,7 +252,7 @@ fun createKPropertyType(
): ConeLookupTagBasedType { ): ConeLookupTagBasedType {
val arguments = if (receiverType != null) listOf(receiverType, rawReturnType) else listOf(rawReturnType) val arguments = if (receiverType != null) listOf(receiverType, rawReturnType) else listOf(rawReturnType)
val classId = StandardClassIds.reflectByName("K${if (isMutable) "Mutable" else ""}Property${arguments.size - 1}") val classId = StandardClassIds.reflectByName("K${if (isMutable) "Mutable" else ""}Property${arguments.size - 1}")
return ConeClassTypeImpl(ConeClassLikeLookupTagImpl(classId), arguments.toTypedArray(), isNullable = false) return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(classId), arguments.toTypedArray(), isNullable = false)
} }
fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifier): FirTypeRef { fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifier): FirTypeRef {
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -77,7 +77,7 @@ class FirSamResolverImpl(
.map { it.symbol } .map { it.symbol }
.zip(type.typeArguments.map { .zip(type.typeArguments.map {
(it as? ConeTypedProjection)?.type (it as? ConeTypedProjection)?.type
?: ConeClassTypeImpl(ConeClassLikeLookupTagImpl(StandardClassIds.Any), emptyArray(), isNullable = true) ?: ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(StandardClassIds.Any), emptyArray(), isNullable = true)
}) })
.toMap() .toMap()
) )
@@ -146,7 +146,7 @@ class FirSamResolverImpl(
val substitutedFunctionType = substitutor.substituteOrSelf(functionType) val substitutedFunctionType = substitutor.substituteOrSelf(functionType)
val substitutedReturnType = val substitutedReturnType =
ConeClassTypeImpl( ConeClassLikeTypeImpl(
firRegularClass.symbol.toLookupTag(), newTypeParameterTypes.toTypedArray(), isNullable = false firRegularClass.symbol.toLookupTag(), newTypeParameterTypes.toTypedArray(), isNullable = false
) )
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? { fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? {
@@ -45,8 +45,8 @@ fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession)
} }
} }
fun FirRegularClass.defaultType(): ConeClassTypeImpl { fun FirRegularClass.defaultType(): ConeClassLikeTypeImpl {
return ConeClassTypeImpl( return ConeClassLikeTypeImpl(
symbol.toLookupTag(), symbol.toLookupTag(),
typeParameters.map { typeParameters.map {
ConeTypeParameterTypeImpl( ConeTypeParameterTypeImpl(
@@ -58,8 +58,8 @@ fun FirRegularClass.defaultType(): ConeClassTypeImpl {
) )
} }
fun FirAnonymousObject.defaultType(): ConeClassTypeImpl { fun FirAnonymousObject.defaultType(): ConeClassLikeTypeImpl {
return ConeClassTypeImpl( return ConeClassLikeTypeImpl(
symbol.toLookupTag(), symbol.toLookupTag(),
emptyArray(), emptyArray(),
isNullable = false isNullable = false
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.symbols.invoke import org.jetbrains.kotlin.fir.symbols.invoke
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.AbstractTypeChecker
import org.jetbrains.kotlin.types.AbstractTypeCheckerContext import org.jetbrains.kotlin.types.AbstractTypeCheckerContext
@@ -58,7 +58,7 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext,
): SimpleTypeMarker { ): SimpleTypeMarker {
require(constructor is FirClassifierSymbol<*>) require(constructor is FirClassifierSymbol<*>)
return when (constructor) { return when (constructor) {
is FirClassLikeSymbol<*> -> ConeClassTypeImpl( is FirClassLikeSymbol<*> -> ConeClassLikeTypeImpl(
constructor.toLookupTag(), constructor.toLookupTag(),
(arguments as List<ConeKotlinTypeProjection>).toTypedArray(), (arguments as List<ConeKotlinTypeProjection>).toTypedArray(),
nullable nullable
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
interface ReceiverValue { interface ReceiverValue {
@@ -36,7 +36,7 @@ private fun receiverExpression(symbol: AbstractFirBasedSymbol<*>, type: ConeKotl
} }
class ClassDispatchReceiverValue(val klassSymbol: FirClassSymbol<*>) : ReceiverValue { class ClassDispatchReceiverValue(val klassSymbol: FirClassSymbol<*>) : ReceiverValue {
override val type: ConeKotlinType = ConeClassTypeImpl( override val type: ConeKotlinType = ConeClassLikeTypeImpl(
klassSymbol.toLookupTag(), klassSymbol.toLookupTag(),
(klassSymbol.fir as? FirTypeParametersOwner)?.typeParameters?.map { ConeStarProjection }?.toTypedArray().orEmpty(), (klassSymbol.fir as? FirTypeParametersOwner)?.typeParameters?.map { ConeStarProjection }?.toTypedArray().orEmpty(),
isNullable = false isNullable = false
@@ -271,14 +271,14 @@ private fun extractInputOutputTypesFromCallableReferenceExpectedType(expectedTyp
private fun extractInputOutputTypesFromFunctionType(functionType: ConeKotlinType): InputOutputTypes { private fun extractInputOutputTypesFromFunctionType(functionType: ConeKotlinType): InputOutputTypes {
val receiver = null// TODO: functionType.receiverType() val receiver = null// TODO: functionType.receiverType()
val parameters = functionType.valueParameterTypes.map { val parameters = functionType.valueParameterTypes.map {
it ?: ConeClassTypeImpl( it ?: ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(StandardClassIds.Nothing), emptyArray(), ConeClassLikeLookupTagImpl(StandardClassIds.Nothing), emptyArray(),
isNullable = false isNullable = false
) )
} }
val inputTypes = /*listOfNotNull(receiver) +*/ parameters val inputTypes = /*listOfNotNull(receiver) +*/ parameters
val outputType = functionType.returnType ?: ConeClassTypeImpl( val outputType = functionType.returnType ?: ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(StandardClassIds.Any), emptyArray(), ConeClassLikeLookupTagImpl(StandardClassIds.Any), emptyArray(),
isNullable = true isNullable = true
) )
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
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.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
@@ -92,7 +92,7 @@ class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
listOfNotNull((typeRef.receiverTypeRef as FirResolvedTypeRef?)?.type) + listOfNotNull((typeRef.receiverTypeRef as FirResolvedTypeRef?)?.type) +
typeRef.valueParameters.map { it.returnTypeRef.coneTypeUnsafe<ConeKotlinType>() } + typeRef.valueParameters.map { it.returnTypeRef.coneTypeUnsafe<ConeKotlinType>() } +
listOf(typeRef.returnTypeRef.coneTypeUnsafe()) listOf(typeRef.returnTypeRef.coneTypeUnsafe())
return ConeClassTypeImpl( return ConeClassLikeTypeImpl(
resolveBuiltInQualified(KotlinBuiltIns.getFunctionClassId(typeRef.parametersCount), session).toLookupTag(), resolveBuiltInQualified(KotlinBuiltIns.getFunctionClassId(typeRef.parametersCount), session).toLookupTag(),
parameters.toTypedArray(), parameters.toTypedArray(),
typeRef.isMarkedNullable typeRef.isMarkedNullable
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.resolve.withNullability
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.ConeAbbreviatedTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeAbbreviatedTypeImpl
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.types.model.TypeSubstitutorMarker import org.jetbrains.kotlin.types.model.TypeSubstitutorMarker
@@ -125,7 +125,7 @@ abstract class AbstractConeSubstitutor : ConeSubstitutor() {
} }
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return when (this) { return when (this) {
is ConeClassTypeImpl -> ConeClassTypeImpl( is ConeClassLikeTypeImpl -> ConeClassLikeTypeImpl(
lookupTag, lookupTag,
newArguments as Array<ConeKotlinTypeProjection>, newArguments as Array<ConeKotlinTypeProjection>,
nullability.isNullable nullability.isNullable
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.invoke import org.jetbrains.kotlin.fir.symbols.invoke
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
@@ -398,7 +398,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
IrConstKind.Double -> StandardClassIds.Double(symbolProvider) IrConstKind.Double -> StandardClassIds.Double(symbolProvider)
} }
val type = ConeClassTypeImpl(symbol.toLookupTag(), emptyArray(), isNullable = kind == IrConstKind.Null) val type = ConeClassLikeTypeImpl(symbol.toLookupTag(), emptyArray(), isNullable = kind == IrConstKind.Null)
constExpression.resultType = FirResolvedTypeRefImpl(null, type) constExpression.resultType = FirResolvedTypeRefImpl(null, type)
dataFlowAnalyzer.exitConstExpresion(constExpression as FirConstExpression<*>) dataFlowAnalyzer.exitConstExpresion(constExpression as FirConstExpression<*>)
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.invoke import org.jetbrains.kotlin.fir.symbols.invoke
import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.name.FqNameUnsafe
@@ -482,7 +482,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
override fun TypeParameterMarker.getRepresentativeUpperBound(): KotlinTypeMarker { override fun TypeParameterMarker.getRepresentativeUpperBound(): KotlinTypeMarker {
require(this is FirTypeParameterSymbol) require(this is FirTypeParameterSymbol)
return this.fir.bounds.getOrNull(0)?.let { (it as? FirResolvedTypeRef)?.type } return this.fir.bounds.getOrNull(0)?.let { (it as? FirResolvedTypeRef)?.type }
?: ConeClassTypeImpl( ?: ConeClassLikeTypeImpl(
ConeClassLikeLookupTagImpl(ClassId.topLevel(KotlinBuiltIns.FQ_NAMES.any.toSafe())), emptyArray(), true ConeClassLikeLookupTagImpl(ClassId.topLevel(KotlinBuiltIns.FQ_NAMES.any.toSafe())), emptyArray(), true
) )
} }