Cleaner IrBuiltIns.
This commit is contained in:
committed by
Dmitry Petrov
parent
93618ebb12
commit
c47e82f965
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user