From 477c1c8cd7aebad952675aff40043bf978ae366f Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Fri, 11 Jun 2021 15:42:09 -0700 Subject: [PATCH] Migrate CompileTimeType and OperationsMap to frontend.common --- .../constants/evaluate/CompileTimeType.kt | 19 +++++++++++++++++++ .../evaluate/OperationsMapGenerated.kt | 7 +++---- .../evaluate/ConstantExpressionEvaluator.kt | 6 ------ generators/evaluate/GenerateOperationsMap.kt | 9 ++++----- 4 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/CompileTimeType.kt rename compiler/{frontend => frontend.common}/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt (99%) diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/CompileTimeType.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/CompileTimeType.kt new file mode 100644 index 00000000000..8c5f35240a8 --- /dev/null +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/CompileTimeType.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2021 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.resolve.constants.evaluate + +enum class CompileTimeType { + BYTE, + SHORT, + INT, + LONG, + DOUBLE, + FLOAT, + CHAR, + BOOLEAN, + STRING, + ANY +} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt similarity index 99% rename from compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt rename to compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt index 44d28201692..c049b8a0c07 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt @@ -11,7 +11,7 @@ import java.math.BigInteger /** This file is generated by `./gradlew generateOperationsMap`. DO NOT MODIFY MANUALLY */ -internal fun evalUnaryOp(name: String, type: CompileTimeType, value: Any): Any? { +fun evalUnaryOp(name: String, type: CompileTimeType, value: Any): Any? { when (type) { BOOLEAN -> when (name) { "not" -> return (value as Boolean).not() @@ -110,8 +110,7 @@ internal fun evalUnaryOp(name: String, type: CompileTimeType, value: Any): Any? return null } - -internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, rightType: CompileTimeType, right: Any): Any? { +fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, rightType: CompileTimeType, right: Any): Any? { when (leftType) { BOOLEAN -> when (rightType) { BOOLEAN -> when (name) { @@ -519,7 +518,7 @@ internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, ri return null } -internal fun checkBinaryOp( +fun checkBinaryOp( name: String, leftType: CompileTimeType, left: BigInteger, rightType: CompileTimeType, right: BigInteger ): BigInteger? { when (leftType) { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt index a1debf896c6..1e3a273f34c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt @@ -12,7 +12,6 @@ import com.intellij.psi.util.TypeConversionUtil import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.StandardNames -import org.jetbrains.kotlin.builtins.UnsignedType import org.jetbrains.kotlin.builtins.UnsignedTypes import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings @@ -1140,11 +1139,6 @@ private fun getReceiverExpressionType(resolvedCall: ResolvedCall<*>): KotlinType } } -internal enum class CompileTimeType { - BYTE, SHORT, INT, LONG, DOUBLE, FLOAT, CHAR, BOOLEAN, - STRING, ANY -} - fun ConstantValue<*>.isStandaloneOnlyConstant(): Boolean { return this is KClassValue || this is EnumValue || this is AnnotationValue || this is ArrayValue } diff --git a/generators/evaluate/GenerateOperationsMap.kt b/generators/evaluate/GenerateOperationsMap.kt index 76d11ad7490..5e4207a485b 100644 --- a/generators/evaluate/GenerateOperationsMap.kt +++ b/generators/evaluate/GenerateOperationsMap.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.utils.Printer import java.io.File -val DEST_FILE: File = File("compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt") +val DEST_FILE: File = File("compiler/frontend.common/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt") private val EXCLUDED_FUNCTIONS: List = listOf("rangeTo", "hashCode", "inc", "dec", "subSequence") fun main() { @@ -65,7 +65,7 @@ fun generate(): String { } } - p.println("internal fun evalUnaryOp(name: String, type: CompileTimeType, value: Any): Any? {") + p.println("fun evalUnaryOp(name: String, type: CompileTimeType, value: Any): Any? {") p.pushIndent() p.println("when (type) {") p.pushIndent() @@ -85,9 +85,8 @@ fun generate(): String { p.popIndent() p.println("}") p.println() - p.println() - p.println("internal fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, rightType: CompileTimeType, right: Any): Any? {") + p.println("fun evalBinaryOp(name: String, leftType: CompileTimeType, left: Any, rightType: CompileTimeType, right: Any): Any? {") p.pushIndent() p.println("when (leftType) {") p.pushIndent() @@ -114,7 +113,7 @@ fun generate(): String { p.println("}") p.println() - p.println("internal fun checkBinaryOp(") + p.println("fun checkBinaryOp(") p.println(" name: String, leftType: CompileTimeType, left: BigInteger, rightType: CompileTimeType, right: BigInteger") p.println("): BigInteger? {") p.pushIndent()