StdlibBuilders

class StdlibBuilders(builder: IrBuilderWithScope, context: IrPluginContext) : MethodBuilder

The standard library builders, accessible from from com.rnett.plugin.ir.HasContext.stdlib

Constructors

StdlibBuilders
Link copied to clipboard
fun StdlibBuilders(builder: IrBuilderWithScope, context: IrPluginContext)

Types

ReflectBuilders
Link copied to clipboard
inner class ReflectBuilders

Functions

also
Link copied to clipboard
fun also(receiver: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall
apply
Link copied to clipboard
fun apply(receiver: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall
asConst
Link copied to clipboard
open fun Boolean.asConst(type: IrType = context.irBuiltIns.booleanType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Boolean>
open fun Byte.asConst(type: IrType = context.irBuiltIns.byteType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Byte>
open fun Char.asConst(type: IrType = context.irBuiltIns.charType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Char>
open fun Double.asConst(type: IrType = context.irBuiltIns.doubleType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Double>
open fun Float.asConst(type: IrType = context.irBuiltIns.floatType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Float>
open fun Int.asConst(type: IrType = context.irBuiltIns.intType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Int>
open fun Long.asConst(type: IrType = context.irBuiltIns.longType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Long>
open fun Short.asConst(type: IrType = context.irBuiltIns.shortType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Short>
open fun String.asConst(type: IrType = context.irBuiltIns.stringType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<String>
buildLambda
Link copied to clipboard
open fun IrBuilderWithScope.buildLambda(returnType: IrType?, funBuilder: IrFunctionBuilder.() -> Unit = {}, funApply: IrSimpleFunction.() -> Unit): IrSimpleFunction

Builds a local function to be used as a lambda, likely with lambdaArgument Return type must be specified at some point, but may be passed as null and specified later. Will be automatically set if the lambda has an expression body and it wasn't set in funBuilder or funApply

buildStatement
Link copied to clipboard
inline fun <T : IrElement> buildStatement(startOffset: Int, endOffset: Int, block: IrSingleStatementBuilder.() -> T): T

Build a statement using the underlying builder. Should only be used for extensions.

open fun <T : IrElement> IrSymbolOwner.buildStatement(startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, origin: IrStatementOrigin? = null, block: IrSingleStatementBuilder.() -> T): T
createIrBuilder
Link copied to clipboard
open fun createIrBuilder(symbol: IrSymbol, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): DeclarationIrBuilder
createIrBuilderAt
Link copied to clipboard
open fun IrSymbolOwner.createIrBuilderAt(): DeclarationIrBuilder
invoke
Link copied to clipboard
open operator fun <R : IrBindableSymbol<*, *>> Reference<R>.invoke(): R
open operator fun TypeRef.invoke(): IrType
irCall
Link copied to clipboard
open fun IrBuilderWithScope.irCall(funcRef: FunctionRef): IrCall
open fun IrBuilderWithScope.irCall(funcRef: FunctionRef, type: IrType): IrCall
isSubclassOf
Link copied to clipboard
open fun IrClass.isSubclassOf(klass: ClassRef): Boolean
open fun IrType.isSubclassOf(klass: ClassRef): Boolean
lambdaArgument
Link copied to clipboard
open fun lambdaArgument(lambda: IrSimpleFunction, type: IrType = run { //TODO workaround for https://youtrack.jetbrains.com/issue/KT-46896 val base = if (lambda.isSuspend) context.referenceClass( StandardNames.getSuspendFunctionClassId(lambda.allParameters.size).asSingleFqName() ) ?: error("suspend function type not found") else context.referenceClass(StandardNames.getFunctionClassId(lambda.allParameters.size).asSingleFqName()) ?: error("function type not found") base.typeWith(lambda.allParameters.map { it.type } + lambda.returnType) }, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrFunctionExpression

Creates a IrFunctionExpressionImpl from the given function, auto-inferring the type if not specified

let
Link copied to clipboard
fun let(receiver: IrExpression, returnType: IrType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall
letExpr
Link copied to clipboard
fun letExpr(receiver: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: DeclarationIrBuilder.(IrValueParameter) -> IrExpression): IrCall
nullConst
Link copied to clipboard
open fun nullConst(type: IrType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrConst<Nothing?>
resolve
Link copied to clipboard
open fun <R : IrBindableSymbol<*, *>> Reference<R>.resolve(): R
open fun TypeRef.resolve(): IrType
resolveOrNull
Link copied to clipboard
open fun <R : IrBindableSymbol<*, *>> Reference<R>.resolveOrNull(): R?
resolveTypeWith
Link copied to clipboard
open fun ClassRef.resolveTypeWith(vararg arguments: IrType): IrSimpleType
run
Link copied to clipboard
fun run(receiver: IrExpression, returnType: IrType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall
runExpr
Link copied to clipboard
fun runExpr(receiver: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: DeclarationIrBuilder.(IrValueParameter) -> IrExpression): IrCall
to
Link copied to clipboard
fun to(first: IrExpression, second: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrCall
fun to(first: IrExpression, firstType: IrType, second: IrExpression, secondType: IrType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrCall
toIr
Link copied to clipboard
open fun KotlinType.toIr(): IrType
with
Link copied to clipboard
fun with(expr: IrExpression, returnType: IrType, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall
withBuilder
Link copied to clipboard
open fun <T> IrSymbolOwner.withBuilder(block: DeclarationIrBuilder.() -> T): T
withExpr
Link copied to clipboard
fun withExpr(expr: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, body: DeclarationIrBuilder.(IrValueParameter) -> IrExpression): IrCall
withUnit
Link copied to clipboard
fun withUnit(expr: IrExpression, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET, blockBodyBuilder: IrBlockBodyBuilder.(IrValueParameter) -> Unit): IrCall

Properties

Any
Link copied to clipboard
val Any: AnyBuilders
Array
Link copied to clipboard
val Array: ArrayBuilders
Byte
Link copied to clipboard
val Byte: MathableBuilders
collections
Link copied to clipboard
val collections: CollectionsBuilders
context
Link copied to clipboard
open override val context: IrPluginContext
Double
Link copied to clipboard
val Double: MathableBuilders
factory
Link copied to clipboard
open val factory: IrFactory
Float
Link copied to clipboard
val Float: MathableBuilders
Int
Link copied to clipboard
val Int: MathableBuilders
kotlin
Link copied to clipboard
open val IrBuilderWithScope.kotlin: StdlibBuilders

Get the standard library builders

Long
Link copied to clipboard
val Long: MathableBuilders
Number
Link copied to clipboard
val Number: NumberBuilders
reflect
Link copied to clipboard
val reflect: StdlibBuilders.ReflectBuilders
Short
Link copied to clipboard
val Short: MathableBuilders
stdlib
Link copied to clipboard
open val IrBuilderWithScope.stdlib: StdlibBuilders

Get the standard library builders

Throwable
Link copied to clipboard
val Throwable: ExceptionBuildersWithCause

Sources

jvm source
Link copied to clipboard