FIR structure: reuse StandardClassIds in implicit built-in typeRef

This commit is contained in:
Mikhail Glukhikh
2019-04-02 16:08:39 +03:00
parent b3cf3c6579
commit bf0190d96c
2 changed files with 9 additions and 10 deletions
@@ -15,7 +15,10 @@ object StandardClassIds {
private fun String.baseId() = ClassId(BASE_KOTLIN_PACKAGE, Name.identifier(this))
val Nothing = "Nothing".baseId()
val Unit = "Unit".baseId()
val Any = "Any".baseId()
val Enum = "Enum".baseId()
val Annotation = "Annotation".baseId()
val Array = "Array".baseId()
val Boolean = "Boolean".baseId()
@@ -6,13 +6,11 @@
package org.jetbrains.kotlin.fir.types.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.name.Name
sealed class FirImplicitBuiltinTypeRef(
override val session: FirSession,
@@ -21,31 +19,29 @@ sealed class FirImplicitBuiltinTypeRef(
) : FirImplicitTypeRef {
override val annotations: List<FirAnnotationCall>
get() = emptyList()
constructor(session: FirSession, psi: PsiElement?, name: FqNameUnsafe) : this(session, psi, ClassId.topLevel(name.toSafe()))
}
class FirImplicitUnitTypeRef(
session: FirSession,
psi: PsiElement?
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES.unit)
) : FirImplicitBuiltinTypeRef(session, psi, StandardClassIds.Unit)
class FirImplicitAnyTypeRef(
session: FirSession,
psi: PsiElement?
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES.any)
) : FirImplicitBuiltinTypeRef(session, psi, StandardClassIds.Any)
class FirImplicitEnumTypeRef(
session: FirSession,
psi: PsiElement?
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES._enum)
) : FirImplicitBuiltinTypeRef(session, psi, StandardClassIds.Enum)
class FirImplicitAnnotationTypeRef(
session: FirSession,
psi: PsiElement?
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES.annotation.toUnsafe())
) : FirImplicitBuiltinTypeRef(session, psi, StandardClassIds.Annotation)
class FirImplicitBooleanTypeRef(
session: FirSession,
psi: PsiElement?
) : FirImplicitBuiltinTypeRef(session, psi, KotlinBuiltIns.FQ_NAMES._boolean)
) : FirImplicitBuiltinTypeRef(session, psi, StandardClassIds.Boolean)