From c47e82f96504b035432f335fa990e261830da928 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 31 Aug 2016 16:35:18 +0300 Subject: [PATCH] Cleaner IrBuiltIns. --- .../psi2ir/builders/ExpressionHelpers.kt | 9 ++-- .../kotlin/ir/descriptors/IrBuiltIns.kt | 47 +++++-------------- 2 files changed, 16 insertions(+), 40 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/builders/ExpressionHelpers.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/builders/ExpressionHelpers.kt index a0d305966d6..9a38d05c0ad 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/builders/ExpressionHelpers.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/builders/ExpressionHelpers.kt @@ -16,11 +16,11 @@ package org.jetbrains.kotlin.psi2ir.builders -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.descriptors.VariableDescriptor import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.expressions.* -import org.jetbrains.kotlin.psi2ir.generators.Scope import org.jetbrains.kotlin.psi2ir.generators.eqeqeq import org.jetbrains.kotlin.psi2ir.generators.primitiveOp1 import org.jetbrains.kotlin.psi2ir.generators.primitiveOp2 @@ -65,9 +65,6 @@ fun IrBuilderWithScope.irIfNull(type: KotlinType, subject: IrExpression, thenPar fun IrBuilderWithScope.irThrowNpe(operator: IrOperator) = IrNullaryPrimitiveImpl(startOffset, endOffset, operator, context.irBuiltIns.throwNpe) -fun IrBlockBuilder.irThrowNpe() = - irThrowNpe(operator ?: IrOperator.EXCLEXCL) - fun IrBuilderWithScope.irIfThenReturnTrue(condition: IrExpression) = IrIfThenElseImpl(startOffset, endOffset, context.builtIns.unitType, condition, irReturnTrue()) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt index e3f8d5cf44a..7e41cd27f01 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrBuiltIns.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.ir.descriptors import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation @@ -28,40 +27,20 @@ import org.jetbrains.kotlin.types.TypeSubstitution class IrBuiltIns(val builtIns: KotlinBuiltIns) { val packageFragment = IrBuiltinsPackageFragmentDescriptorImpl(builtIns.builtInsModule) - val eqeqeq: FunctionDescriptor - val eqeq: FunctionDescriptor - val lt0: FunctionDescriptor - val lteq0: FunctionDescriptor - val gt0: FunctionDescriptor - val gteq0: FunctionDescriptor - val notNull: FunctionDescriptor - val throwNpe: FunctionDescriptor + val bool = builtIns.booleanType + val any = builtIns.anyType + val anyN = builtIns.nullableAnyType + val int = builtIns.intType + val nothing = builtIns.nothingType - val booleanNot: FunctionDescriptor - - val implicitNotNull: CallableDescriptor // TODO drop - - init { - val bool = builtIns.booleanType - val any = builtIns.anyType - val anyN = builtIns.nullableAnyType - val int = builtIns.intType - val nothing = builtIns.nothingType - - eqeqeq = defineOperator("EQEQEQ", bool, listOf(anyN, anyN)) - eqeq = defineOperator("EQEQ", bool, listOf(anyN, anyN)) - lt0 = defineOperator("LT0", bool, listOf(int)) - lteq0 = defineOperator("LTEQ0", bool, listOf(int)) - gt0 = defineOperator("GT0", bool, listOf(int)) - gteq0 = defineOperator("GTEQ0", bool, listOf(int)) - notNull = defineOperator("NOT_NULL", bool, listOf(anyN)) - throwNpe = defineOperator("THROW_NPE", nothing, listOf()) - - implicitNotNull = defineOperator("IMPLICIT_NOT_NULL", any, listOf(anyN)) - - // booleanNot = builtIns.boolean.findSingleFunction("not") // TODO requires receiver - booleanNot = defineOperator("NOT", bool, listOf(bool)) - } + val eqeqeq: FunctionDescriptor = defineOperator("EQEQEQ", bool, listOf(anyN, anyN)) + val eqeq: FunctionDescriptor = defineOperator("EQEQ", bool, listOf(anyN, anyN)) + val lt0: FunctionDescriptor = defineOperator("LT0", bool, listOf(int)) + val lteq0: FunctionDescriptor = defineOperator("LTEQ0", bool, listOf(int)) + val gt0: FunctionDescriptor = defineOperator("GT0", bool, listOf(int)) + val gteq0: FunctionDescriptor = defineOperator("GTEQ0", bool, listOf(int)) + val throwNpe: FunctionDescriptor = defineOperator("THROW_NPE", nothing, listOf()) + val booleanNot: FunctionDescriptor = defineOperator("NOT", bool, listOf(bool)) private fun defineOperator(name: String, returnType: KotlinType, valueParameterTypes: List): IrBuiltinOperatorDescriptor { val operatorDescriptor = IrSimpleBuiltinOperatorDescriptorImpl(packageFragment, Name.identifier(name), returnType)