diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index d3ac3a60d00..94216d6695c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.fir.backend import com.intellij.psi.PsiCompiledElement import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.expressions.FirConstExpression +import org.jetbrains.kotlin.fir.expressions.FirConstKind import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference @@ -18,6 +20,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns +import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.types.IrErrorType import org.jetbrains.kotlin.ir.types.IrType @@ -190,3 +193,25 @@ fun FirVariableSymbol<*>.toBackingFieldSymbol(declarationStorage: Fir2IrDeclarat fun FirVariableSymbol<*>.toValueSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbol { return declarationStorage.getIrValueSymbol(this) } + +fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { + FirConstKind.IntegerLiteral -> { + val type = typeRef.coneTypeUnsafe() + type.getApproximatedType().toConstKind()!!.toIrConstKind() + } + else -> kind.toIrConstKind() +} + +private fun FirConstKind<*>.toIrConstKind(): IrConstKind<*> = when (this) { + FirConstKind.Null -> IrConstKind.Null + FirConstKind.Boolean -> IrConstKind.Boolean + FirConstKind.Char -> IrConstKind.Char + FirConstKind.Byte -> IrConstKind.Byte + FirConstKind.Short -> IrConstKind.Short + FirConstKind.Int -> IrConstKind.Int + FirConstKind.Long -> IrConstKind.Long + FirConstKind.String -> IrConstKind.String + FirConstKind.Float -> IrConstKind.Float + FirConstKind.Double -> IrConstKind.Double + FirConstKind.IntegerLiteral -> throw IllegalArgumentException() +} diff --git a/compiler/fir/resolve/build.gradle.kts b/compiler/fir/resolve/build.gradle.kts index f968f307881..74b8cad5b6b 100644 --- a/compiler/fir/resolve/build.gradle.kts +++ b/compiler/fir/resolve/build.gradle.kts @@ -13,6 +13,7 @@ dependencies { compile(project(":core:deserialization")) compile(project(":compiler:fir:cones")) compile(project(":compiler:fir:tree")) + compile(project(":compiler:frontend")) compile("org.jetbrains.kotlinx:kotlinx-collections-immutable:0.2") compileOnly(project(":kotlin-reflect-api")) diff --git a/compiler/fir/tree/build.gradle.kts b/compiler/fir/tree/build.gradle.kts index 3505a68c987..43aa2ee46dc 100644 --- a/compiler/fir/tree/build.gradle.kts +++ b/compiler/fir/tree/build.gradle.kts @@ -1,10 +1,5 @@ import org.jetbrains.kotlin.ideaExt.idea -/* - * Copyright 2000-2018 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. - */ - plugins { kotlin("jvm") id("jps-compatible") @@ -14,7 +9,8 @@ dependencies { compile(project(":compiler:frontend.common")) compile(project(":core:descriptors")) compile(project(":compiler:fir:cones")) - compile(project(":compiler:ir.tree")) + compile(project(":compiler:resolution")) + // Necessary only to store bound PsiElement inside FirElement compileOnly(intellijCoreDep()) { includeJars("intellij-core") } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstKind.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstKind.kt index edef463cd53..a767b7de6f9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstKind.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirConstKind.kt @@ -5,11 +5,6 @@ package org.jetbrains.kotlin.fir.expressions -import org.jetbrains.kotlin.fir.types.ConeIntegerLiteralType -import org.jetbrains.kotlin.fir.types.coneTypeUnsafe -import org.jetbrains.kotlin.fir.types.toConstKind -import org.jetbrains.kotlin.ir.expressions.IrConstKind - sealed class FirConstKind(val asString: kotlin.String) { object Null : FirConstKind("Null") object Boolean : FirConstKind("Boolean") @@ -25,25 +20,3 @@ sealed class FirConstKind(val asString: kotlin.String) { override fun toString() = asString } - -fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { - FirConstKind.IntegerLiteral -> { - val type = typeRef.coneTypeUnsafe() - type.getApproximatedType().toConstKind()!!.toIrConstKind() - } - else -> kind.toIrConstKind() -} - -private fun FirConstKind<*>.toIrConstKind(): IrConstKind<*> = when (this) { - FirConstKind.Null -> IrConstKind.Null - FirConstKind.Boolean -> IrConstKind.Boolean - FirConstKind.Char -> IrConstKind.Char - FirConstKind.Byte -> IrConstKind.Byte - FirConstKind.Short -> IrConstKind.Short - FirConstKind.Int -> IrConstKind.Int - FirConstKind.Long -> IrConstKind.Long - FirConstKind.String -> IrConstKind.String - FirConstKind.Float -> IrConstKind.Float - FirConstKind.Double -> IrConstKind.Double - FirConstKind.IntegerLiteral -> throw IllegalArgumentException() -} \ No newline at end of file diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt index 6d9b6b322a3..857be7d6f50 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/FirExpressionUtil.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef -import org.jetbrains.kotlin.ir.expressions.IrConstKind import org.jetbrains.kotlin.name.ClassId inline val FirAnnotationCall.coneClassLikeType: ConeClassLikeType? diff --git a/compiler/fir/tree/tree-generator/build.gradle.kts b/compiler/fir/tree/tree-generator/build.gradle.kts index 01de96a48f2..b40d885c17c 100644 --- a/compiler/fir/tree/tree-generator/build.gradle.kts +++ b/compiler/fir/tree/tree-generator/build.gradle.kts @@ -1,8 +1,3 @@ -/* - * Copyright 2000-2018 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. - */ - import tasks.WriteCopyrightToFile plugins { @@ -19,7 +14,7 @@ dependencies { compile(project(":compiler:frontend.common")) compile(project(":core:descriptors")) compile(project(":compiler:fir:cones")) - compile(project(":compiler:ir.tree")) + compile(project(":compiler:resolution")) compileOnly(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) } compileOnly(intellijDep()) { @@ -47,4 +42,3 @@ sourceSets { } "test" {} } -