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
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user