
org.jetbrains.kotlin.ir.expressions.IrDynamicExpression.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.ir.expressions
interface IrDynamicExpression : IrExpression
interface IrDynamicOperatorExpression : IrDynamicExpression {
val operator: IrDynamicOperator
var receiver: IrExpression
val arguments: MutableList
}
var IrDynamicOperatorExpression.left: IrExpression
get() = receiver
set(value) {
receiver = value
}
var IrDynamicOperatorExpression.right: IrExpression
get() = arguments[0]
set(value) {
if (arguments.isEmpty())
arguments.add(value)
else
arguments[0] = value
}
interface IrDynamicMemberExpression : IrDynamicExpression {
val memberName: String
var receiver: IrExpression
}
enum class IrDynamicOperator(val image: String, val isAssignmentOperator: Boolean = false) {
UNARY_PLUS("+"),
UNARY_MINUS("-"),
EXCL("!"),
PREFIX_INCREMENT("++", isAssignmentOperator = true),
POSTFIX_INCREMENT("++", isAssignmentOperator = true),
PREFIX_DECREMENT("--", isAssignmentOperator = true),
POSTFIX_DECREMENT("--", isAssignmentOperator = true),
BINARY_PLUS("+"),
BINARY_MINUS("-"),
MUL("*"),
DIV("/"),
MOD("%"),
GT(">"),
LT("<"),
GE(">="),
LE("<="),
EQEQ("=="),
EXCLEQ("!="),
EQEQEQ("==="),
EXCLEQEQ("!=="),
ANDAND("&&"),
OROR("||"),
EQ("=", isAssignmentOperator = true),
PLUSEQ("+=", isAssignmentOperator = true),
MINUSEQ("-=", isAssignmentOperator = true),
MULEQ("*=", isAssignmentOperator = true),
DIVEQ("/=", isAssignmentOperator = true),
MODEQ("%=", isAssignmentOperator = true),
ARRAY_ACCESS("[]"),
INVOKE("()")
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy