From ee22488ab29a6ea16f5aea827c3767ca95376134 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 26 Jun 2020 16:13:58 +0300 Subject: [PATCH] [FIR] Cleanup FIR modules. Part 8 (`types` package) --- .../jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt | 2 +- .../src/org/jetbrains/kotlin/fir/types/jvm/FirJavaTypeRef.kt | 2 -- .../fir/resolve/calls/AbstractConeCallConflictResolver.kt | 2 +- .../src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt | 2 +- .../FirCallCompletionResultsWriterTransformer.kt | 2 +- .../src/org/jetbrains/kotlin/fir/symbols/StandardTypes.kt | 4 +--- .../resolve/src/org/jetbrains/kotlin/fir/types/ArrayUtils.kt | 5 +---- .../org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt | 1 + .../src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt | 1 + .../kotlin/fir/types/FirCorrespondingSupertypesCache.kt | 1 - .../resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt | 2 ++ .../jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt | 2 +- 12 files changed, 11 insertions(+), 15 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index d4248688fc9..568ec3ce490 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -740,7 +740,7 @@ class Fir2IrDeclarationStorage( startOffset, endOffset, origin, symbol, valueParameter.name, index, type, if (!valueParameter.isVararg) null - else valueParameter.returnTypeRef.coneTypeSafe()?.arrayElementType(session)?.toIrType(typeContext), + else valueParameter.returnTypeRef.coneTypeSafe()?.arrayElementType()?.toIrType(typeContext), valueParameter.isCrossinline, valueParameter.isNoinline ).apply { descriptor.bind(this) diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/types/jvm/FirJavaTypeRef.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/types/jvm/FirJavaTypeRef.kt index 075e57efe8b..2d8b05fa664 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/types/jvm/FirJavaTypeRef.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/types/jvm/FirJavaTypeRef.kt @@ -6,11 +6,9 @@ package org.jetbrains.kotlin.fir.types.jvm import org.jetbrains.kotlin.fir.FirSourceElement -import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.types.FirQualifierPart -import org.jetbrains.kotlin.fir.types.FirUserTypeRef import org.jetbrains.kotlin.fir.types.builder.FirUserTypeRefBuilder import org.jetbrains.kotlin.fir.types.impl.FirUserTypeRefImpl import org.jetbrains.kotlin.load.java.structure.JavaType diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/AbstractConeCallConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/AbstractConeCallConflictResolver.kt index 4bc7374623f..e5e9b7032d1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/AbstractConeCallConflictResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/AbstractConeCallConflictResolver.kt @@ -150,7 +150,7 @@ abstract class AbstractConeCallConflictResolver( private fun FirValueParameter.argumentType(): ConeKotlinType { val type = returnTypeRef.coneTypeUnsafe() - if (isVararg) return type.arrayElementType(inferenceComponents.session)!! + if (isVararg) return type.arrayElementType()!! return type } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt index 3b29b813a77..2863a938ddf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt @@ -357,7 +357,7 @@ internal fun FirExpression.getExpectedType( } fun ConeKotlinType.varargElementType(session: FirSession): ConeKotlinType { - return this.arrayElementType(session) ?: error("Failed to extract! ${this.render()}!") + return this.arrayElementType() ?: error("Failed to extract! ${this.render()}!") } fun FirTypeRef.isExtensionFunctionType(session: FirSession): Boolean { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index e9ff8c5b6a8..b08e522cf90 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -168,7 +168,7 @@ class FirCallCompletionResultsWriterTransformer( // Create a FirVarargArgumentExpression for the vararg arguments val varargParameterTypeRef = varargParameter.returnTypeRef val resolvedArrayType = varargParameterTypeRef.substitute(this) - val resolvedElementType = resolvedArrayType.arrayElementType(session) + val resolvedElementType = resolvedArrayType.arrayElementType() var firstIndex = argumentList.arguments.size val newArgumentMapping = mutableMapOf() val varargArgument = buildVarargArgumentsExpression { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/symbols/StandardTypes.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/symbols/StandardTypes.kt index 688c4f45a4e..f3e68c4a357 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/symbols/StandardTypes.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/symbols/StandardTypes.kt @@ -9,11 +9,9 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.name.ClassId - val FirSymbolProvider.Any: FirClassLikeSymbol<*> get() = this.getClassLikeSymbolByFqName(StandardClassIds.Any)!! val FirSymbolProvider.Nothing: FirClassLikeSymbol<*> get() = this.getClassLikeSymbolByFqName(StandardClassIds.Nothing)!! - operator fun ClassId.invoke(symbolProvider: FirSymbolProvider): FirClassLikeSymbol<*> { return symbolProvider.getClassLikeSymbolByFqName(this)!! -} \ No newline at end of file +} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ArrayUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ArrayUtils.kt index c42a344315b..e00d55e4216 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ArrayUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ArrayUtils.kt @@ -5,10 +5,8 @@ package org.jetbrains.kotlin.fir.types -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.symbols.StandardClassIds - fun ConeTypeProjection.createArrayOf(nullable: Boolean = false): ConeKotlinType { if (this is ConeKotlinTypeProjection) { val type = type.lowerBoundIfFlexible() @@ -25,8 +23,7 @@ fun ConeTypeProjection.createArrayOf(nullable: Boolean = false): ConeKotlinType return StandardClassIds.Array.constructClassLikeType(arrayOf(this), nullable) } - -fun ConeKotlinType.arrayElementType(session: FirSession): ConeKotlinType? { +fun ConeKotlinType.arrayElementType(): ConeKotlinType? { val type = this.lowerBoundIfFlexible() if (type !is ConeClassLikeType) return null val classId = type.lookupTag.classId diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt index b743d744c45..b148d5cec2b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeInferenceContext.kt @@ -58,6 +58,7 @@ interface ConeInferenceContext : TypeSystemInferenceExtensionContext, ConeTypeCo isExtensionFunction: Boolean ): SimpleTypeMarker { require(constructor is FirClassifierSymbol<*>) + @Suppress("UNCHECKED_CAST") return when (constructor) { is FirClassLikeSymbol<*> -> ConeClassLikeTypeImpl( constructor.toLookupTag(), diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index 59b3cdcafd9..37030e1d743 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -335,6 +335,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty } require(newArgument is ConeCapturedType) + @Suppress("UNCHECKED_CAST") newArgument.constructor.supertypes = upperBounds as List } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt index 4a410196b48..77fa2d23380 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner -import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.types.AbstractTypeCheckerContext diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt index 54a494cbc3a..3a582bb6b3c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/TypeUtils.kt @@ -92,6 +92,7 @@ fun T.withArguments(arguments: Array this is ConeClassLikeTypeImpl -> ConeClassLikeTypeImpl(lookupTag, arguments, nullability.isNullable) as T @@ -121,6 +122,7 @@ fun T.withNullability(nullability: ConeNullability, typeCon return this } + @Suppress("UNCHECKED_CAST") return when (this) { is ConeClassErrorType -> this is ConeClassLikeTypeImpl -> ConeClassLikeTypeImpl(lookupTag, typeArguments, nullability.isNullable) diff --git a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt index b563a2663b1..e52cd5efac4 100644 --- a/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt +++ b/compiler/visualizer/render-fir/src/org/jetbrains/kotlin/compiler/visualizer/FirVisualizer.kt @@ -349,7 +349,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() { if (valueParameter.isVararg) { data.append("vararg ") } - valueParameter.returnTypeRef.coneTypeSafe()?.arrayElementType(session)?.let { data.append(it.render()) } + valueParameter.returnTypeRef.coneTypeSafe()?.arrayElementType()?.let { data.append(it.render()) } ?: valueParameter.returnTypeRef.accept(this, data) valueParameter.defaultValue?.let { data.append(" = ...") } }