IR: make IrDeclarationReference and subtypes classes

This commit is contained in:
Alexander Udalov
2020-07-22 19:15:34 +02:00
parent ee904a975a
commit ba7ff36274
15 changed files with 39 additions and 66 deletions
@@ -511,7 +511,7 @@ class FunctionInlining(
private class IrGetValueWithoutLocation(
override val symbol: IrValueSymbol,
override val origin: IrStatementOrigin? = null
) : IrExpressionBase(), IrGetValue {
) : IrGetValue() {
override val startOffset: Int get() = UNDEFINED_OFFSET
override val endOffset: Int get() = UNDEFINED_OFFSET
@@ -19,9 +19,7 @@ package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.types.IrType
interface IrClassReference : IrDeclarationReference {
override val symbol: IrClassifierSymbol
val classType: IrType
abstract class IrClassReference : IrDeclarationReference() {
abstract override val symbol: IrClassifierSymbol
abstract val classType: IrType
}
@@ -16,23 +16,24 @@
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBase
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSymbol
interface IrDeclarationReference : IrExpression {
val symbol: IrSymbol
abstract class IrDeclarationReference : IrExpressionBase() {
abstract val symbol: IrSymbol
}
interface IrGetSingletonValue : IrDeclarationReference
abstract class IrGetSingletonValue : IrDeclarationReference()
interface IrGetObjectValue : IrGetSingletonValue {
override val symbol: IrClassSymbol
abstract class IrGetObjectValue : IrGetSingletonValue() {
abstract override val symbol: IrClassSymbol
}
interface IrGetEnumValue : IrGetSingletonValue {
override val symbol: IrEnumEntrySymbol
abstract class IrGetEnumValue : IrGetSingletonValue() {
abstract override val symbol: IrEnumEntrySymbol
}
/**
@@ -40,6 +41,6 @@ interface IrGetEnumValue : IrGetSingletonValue {
*
* On JS platform represent a plain reference to JavaScript function.
*/
interface IrRawFunctionReference : IrDeclarationReference {
override val symbol: IrFunctionSymbol
abstract class IrRawFunctionReference : IrDeclarationReference() {
abstract override val symbol: IrFunctionSymbol
}
@@ -19,17 +19,17 @@ package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
interface IrFieldAccessExpression : IrDeclarationReference {
override val symbol: IrFieldSymbol
abstract class IrFieldAccessExpression : IrDeclarationReference() {
abstract override val symbol: IrFieldSymbol
val superQualifierSymbol: IrClassSymbol?
abstract val superQualifierSymbol: IrClassSymbol?
var receiver: IrExpression?
val origin: IrStatementOrigin?
var receiver: IrExpression? = null
abstract val origin: IrStatementOrigin?
}
interface IrGetField : IrFieldAccessExpression
abstract class IrGetField : IrFieldAccessExpression()
interface IrSetField : IrFieldAccessExpression {
var value: IrExpression
abstract class IrSetField : IrFieldAccessExpression() {
abstract var value: IrExpression
}
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBase
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.defaultType
@@ -23,7 +22,7 @@ import org.jetbrains.kotlin.types.KotlinType
abstract class IrMemberAccessExpression<S : IrSymbol>(
val typeArgumentsCount: Int
) : IrExpressionBase(), IrDeclarationReference {
) : IrDeclarationReference() {
var dispatchReceiver: IrExpression? = null
var extensionReceiver: IrExpression? = null
@@ -19,17 +19,16 @@ package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
interface IrValueAccessExpression : IrDeclarationReference {
override val symbol: IrValueSymbol
val origin: IrStatementOrigin?
abstract class IrValueAccessExpression : IrDeclarationReference() {
abstract override val symbol: IrValueSymbol
abstract val origin: IrStatementOrigin?
}
interface IrGetValue : IrValueAccessExpression, IrExpressionWithCopy {
override fun copy(): IrGetValue
abstract class IrGetValue : IrValueAccessExpression(), IrExpressionWithCopy {
abstract override fun copy(): IrGetValue
}
interface IrSetVariable : IrValueAccessExpression {
override val symbol: IrVariableSymbol
var value: IrExpression
abstract class IrSetVariable : IrValueAccessExpression() {
abstract override val symbol: IrVariableSymbol
abstract var value: IrExpression
}
@@ -27,7 +27,7 @@ class IrClassReferenceImpl(
override val type: IrType,
override val symbol: IrClassifierSymbol,
override val classType: IrType
) : IrExpressionBase(), IrClassReference {
) : IrClassReference() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitClassReference(this, data)
}
@@ -1,24 +0,0 @@
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.ir.expressions.impl
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression
abstract class IrFieldExpressionBase : IrExpressionBase(), IrFieldAccessExpression {
final override var receiver: IrExpression? = null
}
@@ -26,7 +26,7 @@ class IrGetEnumValueImpl(
override val endOffset: Int,
override val type: IrType,
override val symbol: IrEnumEntrySymbol,
) : IrExpressionBase(), IrGetEnumValue {
) : IrGetEnumValue() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitGetEnumValue(this, data)
}
@@ -32,7 +32,7 @@ class IrGetFieldImpl(
override val type: IrType,
override val origin: IrStatementOrigin? = null,
override val superQualifierSymbol: IrClassSymbol? = null,
) : IrFieldExpressionBase(), IrGetField {
) : IrGetField() {
constructor(
startOffset: Int, endOffset: Int,
symbol: IrFieldSymbol,
@@ -26,7 +26,7 @@ class IrGetObjectValueImpl(
override val endOffset: Int,
override val type: IrType,
override val symbol: IrClassSymbol
) : IrExpressionBase(), IrGetObjectValue {
) : IrGetObjectValue() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitGetObjectValue(this, data)
}
@@ -17,7 +17,7 @@ class IrGetValueImpl(
override val type: IrType,
override val symbol: IrValueSymbol,
override val origin: IrStatementOrigin? = null
) : IrExpressionBase(), IrGetValue {
) : IrGetValue() {
constructor(
startOffset: Int,
endOffset: Int,
@@ -26,7 +26,7 @@ class IrRawFunctionReferenceImpl(
override val endOffset: Int,
override val type: IrType,
override val symbol: IrFunctionSymbol,
) : IrExpressionBase(), IrRawFunctionReference {
) : IrRawFunctionReference() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitRawFunctionReference(this, data)
}
@@ -32,7 +32,7 @@ class IrSetFieldImpl(
override val type: IrType,
override val origin: IrStatementOrigin? = null,
override val superQualifierSymbol: IrClassSymbol? = null,
) : IrFieldExpressionBase(), IrSetField {
) : IrSetField() {
constructor(
startOffset: Int, endOffset: Int,
symbol: IrFieldSymbol,
@@ -31,7 +31,7 @@ class IrSetVariableImpl(
override val symbol: IrVariableSymbol,
override var value: IrExpression,
override val origin: IrStatementOrigin?
) : IrExpressionBase(), IrSetVariable {
) : IrSetVariable() {
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
return visitor.visitSetVariable(this, data)
}