From 42db0b14f047c329bce53b61d6bcca2a69d5b668 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 22 Dec 2022 14:10:41 +0200 Subject: [PATCH] [FIR] Move all type construction utilities into one file --- .../kotlin/fir/java/FirJavaFacade.kt | 2 +- .../jetbrains/kotlin/fir/plugin/TypeUtils.kt | 4 +- .../kotlin/fir/FirVisibilityChecker.kt | 2 +- .../kotlin/fir/resolve/calls/FirReceivers.kt | 2 +- .../kotlin/fir/builder/ConversionUtils.kt | 4 +- .../fir/resolve/FirOuterClassManager.kt | 3 +- .../impl/FirCloneableSymbolProvider.kt | 2 +- .../FirDeclarationsResolveTransformer.kt | 2 +- .../kotlin/fir/resolve/TreeResolveUtils.kt | 39 ------------------- .../kotlin/fir/symbols/SymbolUtils.kt | 19 --------- .../kotlin/fir/types/TypeConstructionUtils.kt | 31 ++++++++++++++- 11 files changed, 41 insertions(+), 69 deletions(-) delete mode 100644 compiler/fir/tree/src/org/jetbrains/kotlin/fir/resolve/TreeResolveUtils.kt delete mode 100644 compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/SymbolUtils.kt diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt index c25a63b21b1..df687be6905 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaFacade.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.effectiveVisibility import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.java.declarations.* import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement -import org.jetbrains.kotlin.fir.resolve.constructType +import org.jetbrains.kotlin.fir.types.constructType import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.* diff --git a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/TypeUtils.kt b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/TypeUtils.kt index dbc9cc3fc3a..717814f0106 100644 --- a/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/TypeUtils.kt +++ b/compiler/fir/plugin-utils/src/org/jetbrains/kotlin/fir/plugin/TypeUtils.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.fir.plugin import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.resolve.constructType +import org.jetbrains.kotlin.fir.types.constructType import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider -import org.jetbrains.kotlin.fir.symbols.constructStarProjectedType +import org.jetbrains.kotlin.fir.types.constructStarProjectedType import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.types.ConeClassLikeType diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index 2d000fc9c55..183cf69b0e5 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol -import org.jetbrains.kotlin.fir.symbols.constructStarProjectedType +import org.jetbrains.kotlin.fir.types.constructStarProjectedType import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.name.ClassId diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt index 7560b108074..5bed8ad944f 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.buildThisReceiverExpression import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference import org.jetbrains.kotlin.fir.renderWithType import org.jetbrains.kotlin.fir.resolve.ScopeSession -import org.jetbrains.kotlin.fir.resolve.constructType +import org.jetbrains.kotlin.fir.types.constructType import org.jetbrains.kotlin.fir.resolve.scope import org.jetbrains.kotlin.fir.resolve.smartcastScope import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index 98d6ab5aed4..97143e357b0 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.references.builder.buildDelegateFieldReference import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference -import org.jetbrains.kotlin.fir.symbols.constructStarProjectedType +import org.jetbrains.kotlin.fir.types.constructStarProjectedType import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeStarProjection @@ -630,4 +630,4 @@ fun buildBalancedOrExpressionTree(conditions: List, lower: Int = isAnd = false, (leftNode.source ?: rightNode.source)?.fakeElement(KtFakeSourceElementKind.WhenCondition) ) -} \ No newline at end of file +} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirOuterClassManager.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirOuterClassManager.kt index 86382465398..d898f36e43c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirOuterClassManager.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirOuterClassManager.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.ConeClassLikeType +import org.jetbrains.kotlin.fir.types.constructType class FirOuterClassManager( private val session: FirSession, @@ -41,6 +42,6 @@ class FirOuterClassManager( return containingSymbol.constructType( fullyExpandedType.typeArguments.drop(currentTypeArgumentsNumber).toTypedArray(), isNullable = false - ) as ConeClassLikeType + ) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCloneableSymbolProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCloneableSymbolProvider.kt index 9901e814964..bc71b6cb7b1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCloneableSymbolProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCloneableSymbolProvider.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl -import org.jetbrains.kotlin.fir.resolve.constructType +import org.jetbrains.kotlin.fir.types.constructType import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals import org.jetbrains.kotlin.fir.scopes.FirScopeProvider diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index f6eb75c7fe7..2ac3c150577 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -40,7 +40,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolver import org.jetbrains.kotlin.fir.resolve.transformers.toExpectedType import org.jetbrains.kotlin.fir.resolve.transformers.transformVarargTypeToArrayType import org.jetbrains.kotlin.fir.scopes.impl.FirMemberTypeParameterScope -import org.jetbrains.kotlin.fir.symbols.constructStarProjectedType +import org.jetbrains.kotlin.fir.types.constructStarProjectedType import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/resolve/TreeResolveUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/resolve/TreeResolveUtils.kt deleted file mode 100644 index 9736900357a..00000000000 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/resolve/TreeResolveUtils.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.resolve - -import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol -import org.jetbrains.kotlin.fir.types.ConeAttributes -import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType -import org.jetbrains.kotlin.fir.types.ConeTypeProjection -import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl -import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl - -fun FirClassifierSymbol<*>.constructType( - typeArguments: Array, - isNullable: Boolean, - attributes: ConeAttributes = ConeAttributes.Empty -): ConeLookupTagBasedType { - return when (this) { - is FirTypeParameterSymbol -> { - ConeTypeParameterTypeImpl(this.toLookupTag(), isNullable, attributes) - } - is FirClassSymbol -> { - ConeClassLikeTypeImpl(this.toLookupTag(), typeArguments, isNullable, attributes) - } - is FirTypeAliasSymbol -> { - ConeClassLikeTypeImpl( - this.toLookupTag(), - typeArguments = typeArguments, - isNullable = isNullable, - attributes = attributes - ) - } - } -} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/SymbolUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/SymbolUtils.kt deleted file mode 100644 index 67f948a3603..00000000000 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/SymbolUtils.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.symbols - -import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.types.ConeClassLikeType -import org.jetbrains.kotlin.fir.types.ConeStarProjection -import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl - -fun FirClassSymbol<*>.constructStarProjectedType(typeParameterNumber: Int = typeParameterSymbols.size): ConeClassLikeType { - return ConeClassLikeTypeImpl( - toLookupTag(), - Array(typeParameterNumber) { ConeStarProjection }, - isNullable = false - ) -} \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/TypeConstructionUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/TypeConstructionUtils.kt index 20be3ebc486..bed9e1df944 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/TypeConstructionUtils.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/types/TypeConstructionUtils.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.types import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag -import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl +import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.name.ClassId @@ -41,3 +41,32 @@ fun ClassId.constructClassLikeType( return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), typeArguments, isNullable, attributes) } +fun FirClassifierSymbol<*>.constructType( + typeArguments: Array, + isNullable: Boolean, + attributes: ConeAttributes = ConeAttributes.Empty +): ConeLookupTagBasedType { + return when (this) { + is FirTypeParameterSymbol -> ConeTypeParameterTypeImpl(this.toLookupTag(), isNullable, attributes) + is FirClassLikeSymbol<*> -> constructType(typeArguments, isNullable, attributes) + } +} + +fun FirClassLikeSymbol<*>.constructType( + typeArguments: Array, + isNullable: Boolean, + attributes: ConeAttributes = ConeAttributes.Empty +): ConeClassLikeType { + return ConeClassLikeTypeImpl(this.toLookupTag(), typeArguments, isNullable, attributes) +} + +fun FirClassSymbol<*>.constructStarProjectedType( + typeParameterNumber: Int = typeParameterSymbols.size, + isNullable: Boolean = false +): ConeClassLikeType { + return ConeClassLikeTypeImpl( + toLookupTag(), + Array(typeParameterNumber) { ConeStarProjection }, + isNullable + ) +}