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 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.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.expressions.* 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.eqeqeq
import org.jetbrains.kotlin.psi2ir.generators.primitiveOp1 import org.jetbrains.kotlin.psi2ir.generators.primitiveOp1
import org.jetbrains.kotlin.psi2ir.generators.primitiveOp2 import org.jetbrains.kotlin.psi2ir.generators.primitiveOp2
@@ -65,9 +65,6 @@ fun IrBuilderWithScope.irIfNull(type: KotlinType, subject: IrExpression, thenPar
fun IrBuilderWithScope.irThrowNpe(operator: IrOperator) = fun IrBuilderWithScope.irThrowNpe(operator: IrOperator) =
IrNullaryPrimitiveImpl(startOffset, endOffset, operator, context.irBuiltIns.throwNpe) IrNullaryPrimitiveImpl(startOffset, endOffset, operator, context.irBuiltIns.throwNpe)
fun IrBlockBuilder.irThrowNpe() =
irThrowNpe(operator ?: IrOperator.EXCLEXCL)
fun IrBuilderWithScope.irIfThenReturnTrue(condition: IrExpression) = fun IrBuilderWithScope.irIfThenReturnTrue(condition: IrExpression) =
IrIfThenElseImpl(startOffset, endOffset, context.builtIns.unitType, condition, irReturnTrue()) IrIfThenElseImpl(startOffset, endOffset, context.builtIns.unitType, condition, irReturnTrue())
@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.ir.descriptors package org.jetbrains.kotlin.ir.descriptors
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.incremental.components.NoLookupLocation
@@ -28,40 +27,20 @@ import org.jetbrains.kotlin.types.TypeSubstitution
class IrBuiltIns(val builtIns: KotlinBuiltIns) { class IrBuiltIns(val builtIns: KotlinBuiltIns) {
val packageFragment = IrBuiltinsPackageFragmentDescriptorImpl(builtIns.builtInsModule) val packageFragment = IrBuiltinsPackageFragmentDescriptorImpl(builtIns.builtInsModule)
val eqeqeq: FunctionDescriptor val bool = builtIns.booleanType
val eqeq: FunctionDescriptor val any = builtIns.anyType
val lt0: FunctionDescriptor val anyN = builtIns.nullableAnyType
val lteq0: FunctionDescriptor val int = builtIns.intType
val gt0: FunctionDescriptor val nothing = builtIns.nothingType
val gteq0: FunctionDescriptor
val notNull: FunctionDescriptor
val throwNpe: FunctionDescriptor
val booleanNot: FunctionDescriptor val eqeqeq: FunctionDescriptor = defineOperator("EQEQEQ", bool, listOf(anyN, anyN))
val eqeq: FunctionDescriptor = defineOperator("EQEQ", bool, listOf(anyN, anyN))
val implicitNotNull: CallableDescriptor // TODO drop val lt0: FunctionDescriptor = defineOperator("LT0", bool, listOf(int))
val lteq0: FunctionDescriptor = defineOperator("LTEQ0", bool, listOf(int))
init { val gt0: FunctionDescriptor = defineOperator("GT0", bool, listOf(int))
val bool = builtIns.booleanType val gteq0: FunctionDescriptor = defineOperator("GTEQ0", bool, listOf(int))
val any = builtIns.anyType val throwNpe: FunctionDescriptor = defineOperator("THROW_NPE", nothing, listOf())
val anyN = builtIns.nullableAnyType val booleanNot: FunctionDescriptor = defineOperator("NOT", bool, listOf(bool))
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))
}
private fun defineOperator(name: String, returnType: KotlinType, valueParameterTypes: List<KotlinType>): IrBuiltinOperatorDescriptor { private fun defineOperator(name: String, returnType: KotlinType, valueParameterTypes: List<KotlinType>): IrBuiltinOperatorDescriptor {
val operatorDescriptor = IrSimpleBuiltinOperatorDescriptorImpl(packageFragment, Name.identifier(name), returnType) val operatorDescriptor = IrSimpleBuiltinOperatorDescriptorImpl(packageFragment, Name.identifier(name), returnType)