[FIR] Move all type construction utilities into one file
This commit is contained in:
committed by
Space Team
parent
ce8489a8a5
commit
42db0b14f0
@@ -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.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<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