Remove isMarkedNullable from FirResolvedTypeRef

This commit is contained in:
Simon Ogorodnik
2019-04-25 18:15:44 +03:00
committed by Mikhail Glukhikh
parent 458080ca8b
commit 9cef9e4056
20 changed files with 65 additions and 74 deletions
@@ -218,8 +218,7 @@ class JavaSymbolProvider(
this@JavaSymbolProvider.session, null,
firSymbol.constructType(
classTypeParameters.map { ConeTypeParameterTypeImpl(it.symbol, false) }.toTypedArray(), false
),
false, emptyList()
)
)
).apply {
this.typeParameters += typeParameters
@@ -90,7 +90,7 @@ internal fun JavaClassifierType.toFirResolvedTypeRef(
): FirResolvedTypeRef {
val coneType = this.toConeKotlinTypeWithNullability(session, javaTypeParameterStack, isNullable = false)
return FirResolvedTypeRefImpl(
session, psi = null, type = coneType, isMarkedNullable = false,
session, psi = null, type = coneType,
annotations = annotations.map { it.toFirAnnotationCall(session, javaTypeParameterStack) }
)
}
@@ -173,7 +173,6 @@ internal fun JavaAnnotation.toFirAnnotationCall(
session,
psi = null,
type = ConeClassTypeImpl(FirClassSymbol(classId!!).toLookupTag(), emptyArray(), isNullable = false),
isMarkedNullable = true,
annotations = emptyList()
)
).apply {
@@ -312,7 +311,7 @@ private fun JavaType.toFirResolvedTypeRef(
if (this is JavaClassifierType) return toFirResolvedTypeRef(session, javaTypeParameterStack)
return FirResolvedTypeRefImpl(
session, psi = null, type = ConeClassErrorType("Unexpected JavaType: $this"),
isMarkedNullable = false, annotations = emptyList()
annotations = emptyList()
)
}
@@ -147,7 +147,7 @@ class KotlinDeserializedJvmSymbolsProvider(
return this?.let {
FirResolvedTypeRefImpl(
session, null, it.constructType(emptyList(), isNullable = false),
isMarkedNullable = false, annotations = emptyList()
annotations = emptyList()
)
} ?: FirErrorTypeRefImpl(session, null, "Symbol not found for $classId")
@@ -302,7 +302,6 @@ class KotlinDeserializedJvmSymbolsProvider(
session,
null,
ConeClassTypeImpl(ConeClassLikeLookupTagImpl(outerClassId), emptyArray(), false),
false,
emptyList()
)
}
@@ -84,12 +84,12 @@ private fun JavaType?.enhancePossiblyFlexible(
FirResolvedTypeRefImpl(
session, psi = null,
type = coneFlexibleOrSimpleType(session, lowerResult, upperResult),
isMarkedNullable = false, annotations = annotations
annotations = annotations
)
}
else -> {
val enhanced = type.toNotNullConeKotlinType(session, javaTypeParameterStack)
FirResolvedTypeRefImpl(session, psi = null, type = enhanced, isMarkedNullable = false, annotations = annotations)
FirResolvedTypeRefImpl(session, psi = null, type = enhanced, annotations = annotations)
}
}
}
@@ -70,7 +70,7 @@ fun FirTypeRef.resolvedTypeFromPrototype(
type: ConeKotlinType
): FirResolvedTypeRef {
return FirResolvedTypeRefImpl(
session, psi, type, false, annotations
session, psi, type, annotations
)
}
@@ -94,8 +94,7 @@ abstract class AbstractAnnotationDeserializer(
session, null, null,
symbol?.let {
FirResolvedTypeRefImpl(
session, null, it.constructType(emptyList(), isNullable = false),
isMarkedNullable = false, annotations = emptyList()
session, null, it.constructType(emptyList(), isNullable = false)
)
} ?: FirErrorTypeRefImpl(session, null, "Symbol not found for $classId")
).apply {
@@ -127,8 +126,7 @@ abstract class AbstractAnnotationDeserializer(
arguments += FirClassReferenceExpressionImpl(
this@AbstractAnnotationDeserializer.session, null,
FirResolvedTypeRefImpl(
this@AbstractAnnotationDeserializer.session, null, referencedType,
isMarkedNullable = false, annotations = emptyList()
this@AbstractAnnotationDeserializer.session, null, referencedType
)
)
}
@@ -64,7 +64,7 @@ fun deserializeClassToSymbol(
superTypesDeserialized.mapNotNullTo(superTypeRefs) {
if (it == null) return@mapNotNullTo null
FirResolvedTypeRefImpl(session, null, it, false, emptyList())
FirResolvedTypeRefImpl(session, null, it)
}
addDeclarations(classProto.functionList.map(classDeserializer::loadFunction))
@@ -143,7 +143,6 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
c.session,
null,
local.typeDeserializer.type(proto.underlyingType(c.typeTable)),
false,
emptyList() /* TODO */
)
).apply {
@@ -247,9 +246,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
klass.symbol.toLookupTag(),
typeParameters.map { ConeTypeParameterTypeImpl(it.symbol, false) }.toTypedArray(),
false
),
isMarkedNullable = false,
annotations = emptyList()
)
)
return if (isPrimary) {
@@ -310,7 +307,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) {
private fun ProtoBuf.Type.toTypeRef(context: FirDeserializationContext): FirTypeRef {
val coneType = context.typeDeserializer.type(this)
return FirResolvedTypeRefImpl(
c.session, null, coneType, coneType.nullability.isNullable,
c.session, null, coneType,
c.annotationDeserializer.loadTypeAnnotations(this)
)
}
@@ -98,7 +98,7 @@ class FirTypeDeserializer(
val declaration = symbol.firUnsafe<FirTypeParameterImpl>()
declaration.apply {
proto.upperBoundList.mapTo(bounds) {
FirResolvedTypeRefImpl(session, null, type(it), false, emptyList())
FirResolvedTypeRefImpl(session, null, type(it), emptyList())
}
}
}
@@ -140,7 +140,6 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
session,
null,
StandardClassIds.Boolean(symbolProvider).constructType(emptyArray(), isNullable = false),
false,
emptyList()
)
}
@@ -205,7 +204,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
} else
FirResolvedTypeRefImpl(
session, null, symbol.constructType(emptyArray(), isNullable = false),
isMarkedNullable = false, annotations = emptyList()
annotations = emptyList()
)
} else {
error("WTF ! $symbol")
@@ -273,7 +272,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
val labelName = callee.labelName
val types = if (labelName == null) labels.values() else labels[Name.identifier(labelName)]
val type = types.lastOrNull() ?: ConeKotlinErrorType("Unresolved this@$labelName")
qualifiedAccessExpression.resultType = FirResolvedTypeRefImpl(session, null, type, false, emptyList())
qualifiedAccessExpression.resultType = FirResolvedTypeRefImpl(session, null, type, emptyList())
}
is FirSuperReference -> {
qualifiedAccessExpression.resultType =
@@ -435,7 +434,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
session,
null,
Name.identifier("it"),
FirResolvedTypeRefImpl(session, null, parameters.single(), false, emptyList()),
FirResolvedTypeRefImpl(session, null, parameters.single(), emptyList()),
null,
false,
false,
@@ -565,7 +564,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
commonSuperType(types.map { it.coneTypeUnsafe() })
}
} as ConeKotlinType
return FirResolvedTypeRefImpl(session, null, commonSuperType, false, emptyList())
return FirResolvedTypeRefImpl(session, null, commonSuperType, emptyList())
}
override fun transformWhenExpression(whenExpression: FirWhenExpression, data: Any?): CompositeTransformResult<FirStatement> {
@@ -618,7 +617,7 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
val type = ConeClassTypeImpl(symbol.toLookupTag(), emptyArray(), isNullable = kind == IrConstKind.Null)
constExpression.resultType = FirResolvedTypeRefImpl(session, null, type, false, emptyList())
constExpression.resultType = FirResolvedTypeRefImpl(session, null, type, emptyList())
} else {
constExpression.resultType = expectedType
}
@@ -737,7 +736,6 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn
session,
null,
kClassSymbol.constructType(arrayOf(transformedGetClassCall.argument.resultType.coneTypeUnsafe()), false),
false,
emptyList()
)
return transformedGetClassCall.compose()
@@ -56,7 +56,7 @@ class FirCallCompleterTransformer(
session,
argument?.psi,
Variance.INVARIANT,
FirResolvedTypeRefImpl(session, null, type, false, emptyList())
FirResolvedTypeRefImpl(session, null, type, emptyList())
)
}
}
@@ -48,7 +48,6 @@ class FirSpecificTypeResolverTransformer(
session,
typeRef.psi,
resolvedType,
false,
typeRef.annotations
).compose()
}
@@ -59,6 +59,13 @@ open class FirTypeResolveTransformer : FirAbstractTreeTransformerWithSuperTypes(
}
}
override fun transformConstructor(constructor: FirConstructor, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return withScopeCleanup {
constructor.addTypeParametersScope()
super.transformConstructor(constructor, data)
}
}
override fun transformTypeAlias(typeAlias: FirTypeAlias, data: Nothing?): CompositeTransformResult<FirDeclaration> {
return withScopeCleanup {
typeAlias.addTypeParametersScope()
@@ -120,8 +120,7 @@ fun FirTypeRef.withReplacedConeType(session: FirSession, newType: ConeKotlinType
return FirResolvedTypeRefImpl(
session, psi, newType,
isMarkedNullable,
annotations
annotations = annotations
)
}
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.VisitedSupertype
import org.jetbrains.kotlin.fir.visitors.FirVisitor
interface FirResolvedTypeRef : FirTypeRefWithNullability {
interface FirResolvedTypeRef : FirTypeRef {
val type: ConeKotlinType
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
@@ -24,9 +24,6 @@ sealed class FirImplicitBuiltinTypeRef(
override val annotations: List<FirAnnotationCall>
get() = emptyList()
override val isMarkedNullable: Boolean
get() = false
override val type: ConeKotlinType = ConeClassTypeImpl(ConeClassLikeLookupTagImpl(id), emptyArray(), false)
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
@@ -15,6 +15,5 @@ class FirResolvedTypeRefImpl(
override val session: FirSession,
override val psi: PsiElement?,
override val type: ConeKotlinType,
override val isMarkedNullable: Boolean,
override val annotations: List<FirAnnotationCall>
override val annotations: List<FirAnnotationCall> = emptyList()
) : FirResolvedTypeRef
@@ -360,6 +360,18 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformTypeRef(implicitTypeRef, data)
}
open fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformTypeRef(resolvedTypeRef, data)
}
open fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformResolvedTypeRef(errorTypeRef, data)
}
open fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformResolvedTypeRef(resolvedFunctionTypeRef, data)
}
open fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult<FirTypeRef> {
return transformTypeRef(typeRefWithNullability, data)
}
@@ -372,18 +384,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformTypeRefWithNullability(functionTypeRef, data)
}
open fun transformResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformTypeRefWithNullability(resolvedTypeRef, data)
}
open fun transformErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformResolvedTypeRef(errorTypeRef, 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)
}
@@ -360,6 +360,18 @@ abstract class FirVisitor<out R, in D> {
return visitTypeRef(implicitTypeRef, data)
}
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): R {
return visitTypeRef(resolvedTypeRef, data)
}
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): R {
return visitResolvedTypeRef(errorTypeRef, data)
}
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): R {
return visitResolvedTypeRef(resolvedFunctionTypeRef, data)
}
open fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): R {
return visitTypeRef(typeRefWithNullability, data)
}
@@ -372,18 +384,6 @@ abstract class FirVisitor<out R, in D> {
return visitTypeRefWithNullability(functionTypeRef, data)
}
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef, data: D): R {
return visitTypeRefWithNullability(resolvedTypeRef, data)
}
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef, data: D): R {
return visitResolvedTypeRef(errorTypeRef, 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)
}
@@ -360,6 +360,18 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypeRef(implicitTypeRef, null)
}
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
visitTypeRef(resolvedTypeRef, null)
}
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) {
visitResolvedTypeRef(errorTypeRef, null)
}
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) {
visitResolvedTypeRef(resolvedFunctionTypeRef, null)
}
open fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) {
visitTypeRef(typeRefWithNullability, null)
}
@@ -372,18 +384,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypeRefWithNullability(functionTypeRef, null)
}
open fun visitResolvedTypeRef(resolvedTypeRef: FirResolvedTypeRef) {
visitTypeRefWithNullability(resolvedTypeRef, null)
}
open fun visitErrorTypeRef(errorTypeRef: FirErrorTypeRef) {
visitResolvedTypeRef(errorTypeRef, null)
}
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) {
visitResolvedTypeRef(resolvedFunctionTypeRef, null)
}
open fun visitUserTypeRef(userTypeRef: FirUserTypeRef) {
visitTypeRefWithNullability(userTypeRef, null)
}