Cleaner IrBuiltIns.

This commit is contained in:
Dmitry Petrov
2016-08-31 16:35:18 +03:00
committed by Dmitry Petrov
parent 93618ebb12
commit c47e82f965
2 changed files with 16 additions and 40 deletions
@@ -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())
@@ -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<KotlinType>): IrBuiltinOperatorDescriptor {
val operatorDescriptor = IrSimpleBuiltinOperatorDescriptorImpl(packageFragment, Name.identifier(name), returnType)