[FIR] Move all type construction utilities into one file
This commit is contained in:
committed by
Space Team
parent
ce8489a8a5
commit
42db0b14f0
@@ -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.declarations.utils.modality
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.*
|
import org.jetbrains.kotlin.fir.java.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement
|
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.resolve.defaultType
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.fir.plugin
|
package org.jetbrains.kotlin.fir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
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.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.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
|
|||||||
@@ -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.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
|||||||
@@ -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.references.builder.buildImplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.renderWithType
|
import org.jetbrains.kotlin.fir.renderWithType
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
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.scope
|
||||||
import org.jetbrains.kotlin.fir.resolve.smartcastScope
|
import org.jetbrains.kotlin.fir.resolve.smartcastScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
||||||
|
|||||||
+2
-2
@@ -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.buildImplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeStarProjection
|
import org.jetbrains.kotlin.fir.types.ConeStarProjection
|
||||||
@@ -630,4 +630,4 @@ fun buildBalancedOrExpressionTree(conditions: List<FirExpression>, lower: Int =
|
|||||||
isAnd = false,
|
isAnd = false,
|
||||||
(leftNode.source ?: rightNode.source)?.fakeElement(KtFakeSourceElementKind.WhenCondition)
|
(leftNode.source ?: rightNode.source)?.fakeElement(KtFakeSourceElementKind.WhenCondition)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
|
import org.jetbrains.kotlin.fir.types.constructType
|
||||||
|
|
||||||
class FirOuterClassManager(
|
class FirOuterClassManager(
|
||||||
private val session: FirSession,
|
private val session: FirSession,
|
||||||
@@ -41,6 +42,6 @@ class FirOuterClassManager(
|
|||||||
return containingSymbol.constructType(
|
return containingSymbol.constructType(
|
||||||
fullyExpandedType.typeArguments.drop(currentTypeArgumentsNumber).toTypedArray(),
|
fullyExpandedType.typeArguments.drop(currentTypeArgumentsNumber).toTypedArray(),
|
||||||
isNullable = false
|
isNullable = false
|
||||||
) as ConeClassLikeType
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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.buildRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
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.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||||
|
|||||||
+1
-1
@@ -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.toExpectedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.transformVarargTypeToArrayType
|
import org.jetbrains.kotlin.fir.resolve.transformers.transformVarargTypeToArrayType
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirMemberTypeParameterScope
|
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.symbols.impl.FirValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||||
|
|||||||
@@ -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<ConeTypeProjection>,
|
|
||||||
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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
)
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
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.ConeClassLikeTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -41,3 +41,32 @@ fun ClassId.constructClassLikeType(
|
|||||||
return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), typeArguments, isNullable, attributes)
|
return ConeClassLikeTypeImpl(ConeClassLikeLookupTagImpl(this), typeArguments, isNullable, attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FirClassifierSymbol<*>.constructType(
|
||||||
|
typeArguments: Array<ConeTypeProjection>,
|
||||||
|
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<ConeTypeProjection>,
|
||||||
|
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
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user