IR: symbol for IrLocalDelegatedProperty
This commit is contained in:
+6
-3
@@ -319,6 +319,7 @@ private class IrUnboundSymbolReplacer(
|
||||
}
|
||||
|
||||
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrExpression {
|
||||
val localDelegatedProperty = expression.symbol.replaceOrSame(SymbolTable::referenceLocalDelegatedProperty)
|
||||
val delegate = expression.delegate.replaceOrSame(SymbolTable::referenceVariable)
|
||||
val getter = expression.getter.replace(SymbolTable::referenceSimpleFunction) ?: expression.getter
|
||||
val setter = expression.setter?.replace(SymbolTable::referenceSimpleFunction) ?: expression.setter
|
||||
@@ -329,9 +330,11 @@ private class IrUnboundSymbolReplacer(
|
||||
|
||||
expression.transformChildrenVoid(this)
|
||||
return with(expression) {
|
||||
IrLocalDelegatedPropertyReferenceImpl(startOffset, endOffset, type, descriptor,
|
||||
delegate, getter, setter, origin).also {
|
||||
|
||||
IrLocalDelegatedPropertyReferenceImpl(
|
||||
startOffset, endOffset, type,
|
||||
localDelegatedProperty,
|
||||
delegate, getter, setter, origin
|
||||
).also {
|
||||
it.copyArgumentsFrom(this)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-2
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.ir.builders.irBlockBody
|
||||
import org.jetbrains.kotlin.ir.builders.irGet
|
||||
import org.jetbrains.kotlin.ir.builders.irReturn
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrLocalDelegatedPropertyImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrLocalDelegatedPropertyDelegateDescriptor
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrLocalDelegatedPropertyDelegateDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrPropertyDelegateDescriptor
|
||||
@@ -228,7 +227,7 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D
|
||||
): IrLocalDelegatedProperty {
|
||||
val kPropertyType = getKPropertyTypeForLocalDelegatedProperty(variableDescriptor)
|
||||
|
||||
val irLocalDelegatedProperty = IrLocalDelegatedPropertyImpl(
|
||||
val irLocalDelegatedProperty = context.symbolTable.declareLocalDelegatedProperty(
|
||||
ktProperty.startOffsetSkippingComments, ktProperty.endOffset, IrDeclarationOrigin.DEFINED,
|
||||
variableDescriptor,
|
||||
variableDescriptor.type.toIrType()
|
||||
|
||||
+1
-1
@@ -121,7 +121,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
|
||||
|
||||
return IrLocalDelegatedPropertyReferenceImpl(
|
||||
startOffset, endOffset, type.toIrType(),
|
||||
variableDescriptor,
|
||||
context.symbolTable.referenceLocalDelegatedProperty(variableDescriptor),
|
||||
irDelegateSymbol, getterSymbol, setterSymbol,
|
||||
origin
|
||||
)
|
||||
|
||||
+7
-1
@@ -17,10 +17,16 @@
|
||||
package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
interface IrLocalDelegatedProperty : IrDeclarationWithName {
|
||||
interface IrLocalDelegatedProperty :
|
||||
IrDeclarationWithName,
|
||||
IrSymbolOwner {
|
||||
|
||||
override val descriptor: VariableDescriptorWithAccessors
|
||||
override val symbol: IrLocalDelegatedPropertySymbol
|
||||
|
||||
val type: IrType
|
||||
val isVar: Boolean
|
||||
|
||||
+44
-13
@@ -21,6 +21,8 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrLocalDelegatedPropertySymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
@@ -30,7 +32,7 @@ class IrLocalDelegatedPropertyImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
override val descriptor: VariableDescriptorWithAccessors,
|
||||
override val symbol: IrLocalDelegatedPropertySymbol,
|
||||
override val name: Name,
|
||||
override val type: IrType,
|
||||
override val isVar: Boolean
|
||||
@@ -38,6 +40,39 @@ class IrLocalDelegatedPropertyImpl(
|
||||
IrDeclarationBase(startOffset, endOffset, origin),
|
||||
IrLocalDelegatedProperty {
|
||||
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
symbol: IrLocalDelegatedPropertySymbol,
|
||||
type: IrType
|
||||
) : this(
|
||||
startOffset, endOffset, origin, symbol,
|
||||
symbol.descriptor.name,
|
||||
type,
|
||||
symbol.descriptor.isVar
|
||||
)
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptorWithAccessors,
|
||||
name: Name,
|
||||
type: IrType,
|
||||
isVar: Boolean
|
||||
) : this(
|
||||
startOffset, endOffset, origin,
|
||||
IrLocalDelegatedPropertySymbolImpl(descriptor),
|
||||
name, type, isVar
|
||||
)
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -45,21 +80,12 @@ class IrLocalDelegatedPropertyImpl(
|
||||
descriptor: VariableDescriptorWithAccessors,
|
||||
type: IrType
|
||||
) : this(
|
||||
startOffset, endOffset, origin, descriptor,
|
||||
startOffset, endOffset, origin,
|
||||
IrLocalDelegatedPropertySymbolImpl(descriptor),
|
||||
descriptor.name, type, descriptor.isVar
|
||||
)
|
||||
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptorWithAccessors,
|
||||
type: IrType,
|
||||
delegate: IrVariable
|
||||
) : this(startOffset, endOffset, origin, descriptor, type) {
|
||||
this.delegate = delegate
|
||||
}
|
||||
|
||||
@Deprecated("Creates unbound symbol")
|
||||
constructor(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -75,8 +101,13 @@ class IrLocalDelegatedPropertyImpl(
|
||||
this.setter = setter
|
||||
}
|
||||
|
||||
override val descriptor: VariableDescriptorWithAccessors
|
||||
get() = symbol.descriptor
|
||||
|
||||
override lateinit var delegate: IrVariable
|
||||
|
||||
override lateinit var getter: IrFunction
|
||||
|
||||
override var setter: IrFunction? = null
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
|
||||
@@ -41,6 +41,7 @@ interface IrPropertyReference : IrCallableReference {
|
||||
|
||||
interface IrLocalDelegatedPropertyReference : IrCallableReference {
|
||||
override val descriptor: VariableDescriptorWithAccessors
|
||||
val symbol: IrLocalDelegatedPropertySymbol
|
||||
val delegate: IrVariableSymbol
|
||||
val getter: IrSimpleFunctionSymbol
|
||||
val setter: IrSimpleFunctionSymbol?
|
||||
|
||||
+5
-1
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
@@ -28,7 +29,7 @@ class IrLocalDelegatedPropertyReferenceImpl(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
type: IrType,
|
||||
override val descriptor: VariableDescriptorWithAccessors,
|
||||
override val symbol: IrLocalDelegatedPropertySymbol,
|
||||
override val delegate: IrVariableSymbol,
|
||||
override val getter: IrSimpleFunctionSymbol,
|
||||
override val setter: IrSimpleFunctionSymbol?,
|
||||
@@ -37,6 +38,9 @@ class IrLocalDelegatedPropertyReferenceImpl(
|
||||
IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, 0, origin),
|
||||
IrLocalDelegatedPropertyReference {
|
||||
|
||||
override val descriptor: VariableDescriptorWithAccessors
|
||||
get() = symbol.descriptor
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
||||
}
|
||||
@@ -169,4 +169,11 @@ interface IrPropertySymbol :
|
||||
|
||||
override fun <D, R> accept(visitor: IrSymbolVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertySymbol(this, data)
|
||||
}
|
||||
|
||||
interface IrLocalDelegatedPropertySymbol :
|
||||
IrBindableSymbol<VariableDescriptorWithAccessors, IrLocalDelegatedProperty> {
|
||||
|
||||
override fun <D, R> accept(visitor: IrSymbolVisitor<R, D>, data: D): R =
|
||||
visitor.visitLocalDelegatedPropertySymbol(this, data)
|
||||
}
|
||||
@@ -102,7 +102,10 @@ class IrReturnableBlockSymbolImpl(descriptor: FunctionDescriptor) :
|
||||
IrBindableSymbolBase<FunctionDescriptor, IrReturnableBlock>(descriptor),
|
||||
IrReturnableBlockSymbol
|
||||
|
||||
|
||||
class IrPropertySymbolImpl(descriptor: PropertyDescriptor) :
|
||||
IrBindableSymbolBase<PropertyDescriptor, IrProperty>(descriptor),
|
||||
IrPropertySymbol
|
||||
IrPropertySymbol
|
||||
|
||||
class IrLocalDelegatedPropertySymbolImpl(descriptor: VariableDescriptorWithAccessors) :
|
||||
IrBindableSymbolBase<VariableDescriptorWithAccessors, IrLocalDelegatedProperty>(descriptor),
|
||||
IrLocalDelegatedPropertySymbol
|
||||
@@ -33,7 +33,7 @@ import java.util.*
|
||||
|
||||
inline fun <reified T : IrElement> T.deepCopyWithSymbols(
|
||||
initialParent: IrDeclarationParent? = null,
|
||||
descriptorRemapper: DescriptorsRemapper = DescriptorsRemapper.DEFAULT
|
||||
descriptorRemapper: DescriptorsRemapper = DescriptorsRemapper.Default
|
||||
): T {
|
||||
val symbolRemapper = DeepCopySymbolRemapper(descriptorRemapper)
|
||||
acceptVoid(symbolRemapper)
|
||||
@@ -238,13 +238,13 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
IrLocalDelegatedPropertyImpl(
|
||||
declaration.startOffset, declaration.endOffset,
|
||||
mapDeclarationOrigin(declaration.origin),
|
||||
declaration.descriptor, // TODO
|
||||
declaration.type.remapType(),
|
||||
declaration.delegate.transform(),
|
||||
declaration.getter.transform(),
|
||||
declaration.setter?.transform()
|
||||
symbolRemapper.getDeclaredLocalDelegatedProperty(declaration.symbol),
|
||||
declaration.type.remapType()
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
delegate = declaration.delegate.transform()
|
||||
getter = declaration.getter.transform()
|
||||
setter = declaration.setter?.transform()
|
||||
}
|
||||
|
||||
override fun visitEnumEntry(declaration: IrEnumEntry): IrEnumEntry =
|
||||
@@ -573,7 +573,7 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
IrLocalDelegatedPropertyReferenceImpl(
|
||||
expression.startOffset, expression.endOffset,
|
||||
expression.type.remapType(),
|
||||
expression.descriptor,
|
||||
symbolRemapper.getReferencedLocalDelegatedProperty(expression.symbol),
|
||||
symbolRemapper.getReferencedVariable(expression.delegate),
|
||||
symbolRemapper.getReferencedSimpleFunction(expression.getter),
|
||||
expression.setter?.let { symbolRemapper.getReferencedSimpleFunction(it) },
|
||||
|
||||
@@ -27,8 +27,9 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
|
||||
open class DeepCopySymbolRemapper(
|
||||
private val descriptorsRemapper: DescriptorsRemapper = DescriptorsRemapper.DEFAULT
|
||||
private val descriptorsRemapper: DescriptorsRemapper = DescriptorsRemapper.Default
|
||||
) : IrElementVisitorVoid, SymbolRemapper {
|
||||
|
||||
private val classes = hashMapOf<IrClassSymbol, IrClassSymbol>()
|
||||
private val constructors = hashMapOf<IrConstructorSymbol, IrConstructorSymbol>()
|
||||
private val enumEntries = hashMapOf<IrEnumEntrySymbol, IrEnumEntrySymbol>()
|
||||
@@ -41,6 +42,7 @@ open class DeepCopySymbolRemapper(
|
||||
private val typeParameters = hashMapOf<IrTypeParameterSymbol, IrTypeParameterSymbol>()
|
||||
private val valueParameters = hashMapOf<IrValueParameterSymbol, IrValueParameterSymbol>()
|
||||
private val variables = hashMapOf<IrVariableSymbol, IrVariableSymbol>()
|
||||
private val localDelegatedProperties = hashMapOf<IrLocalDelegatedPropertySymbol, IrLocalDelegatedPropertySymbol>()
|
||||
|
||||
override fun visitElement(element: IrElement) {
|
||||
element.acceptChildrenVoid(this)
|
||||
@@ -132,6 +134,13 @@ open class DeepCopySymbolRemapper(
|
||||
declaration.acceptChildrenVoid(this)
|
||||
}
|
||||
|
||||
override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty) {
|
||||
remapSymbol(localDelegatedProperties, declaration) {
|
||||
IrLocalDelegatedPropertySymbolImpl(descriptorsRemapper.remapDeclaredLocalDelegatedProperty(it.descriptor))
|
||||
}
|
||||
declaration.acceptChildrenVoid(this)
|
||||
}
|
||||
|
||||
override fun visitBlock(expression: IrBlock) {
|
||||
if (expression is IrReturnableBlock) {
|
||||
remapSymbol(returnableBlocks, expression) {
|
||||
@@ -162,11 +171,16 @@ open class DeepCopySymbolRemapper(
|
||||
override fun getDeclaredVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getDeclared(symbol)
|
||||
override fun getDeclaredTypeParameter(symbol: IrTypeParameterSymbol): IrTypeParameterSymbol = typeParameters.getDeclared(symbol)
|
||||
override fun getDeclaredValueParameter(symbol: IrValueParameterSymbol): IrValueParameterSymbol = valueParameters.getDeclared(symbol)
|
||||
override fun getDeclaredLocalDelegatedProperty(symbol: IrLocalDelegatedPropertySymbol): IrLocalDelegatedPropertySymbol =
|
||||
localDelegatedProperties.getDeclared(symbol)
|
||||
|
||||
override fun getReferencedClass(symbol: IrClassSymbol): IrClassSymbol = classes.getReferenced(symbol)
|
||||
override fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol? = symbol?.let { classes.getReferenced(it) }
|
||||
override fun getReferencedEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol = enumEntries.getReferenced(symbol)
|
||||
override fun getReferencedVariable(symbol: IrVariableSymbol): IrVariableSymbol = variables.getReferenced(symbol)
|
||||
override fun getReferencedLocalDelegatedProperty(symbol: IrLocalDelegatedPropertySymbol): IrLocalDelegatedPropertySymbol =
|
||||
localDelegatedProperties.getReferenced(symbol)
|
||||
|
||||
override fun getReferencedField(symbol: IrFieldSymbol): IrFieldSymbol = fields.getReferenced(symbol)
|
||||
override fun getReferencedConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol = constructors.getReferenced(symbol)
|
||||
override fun getReferencedSimpleFunction(symbol: IrSimpleFunctionSymbol): IrSimpleFunctionSymbol = functions.getReferenced(symbol)
|
||||
|
||||
@@ -30,6 +30,7 @@ interface DescriptorsRemapper {
|
||||
fun remapDeclaredTypeParameter(descriptor: TypeParameterDescriptor): TypeParameterDescriptor = descriptor
|
||||
fun remapDeclaredValueParameter(descriptor: ParameterDescriptor): ParameterDescriptor = descriptor
|
||||
fun remapDeclaredVariable(descriptor: VariableDescriptor): VariableDescriptor = descriptor
|
||||
fun remapDeclaredLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors): VariableDescriptorWithAccessors = descriptor
|
||||
|
||||
object DEFAULT : DescriptorsRemapper
|
||||
object Default : DescriptorsRemapper
|
||||
}
|
||||
@@ -63,4 +63,7 @@ interface IrSymbolVisitor<out R, in D> {
|
||||
|
||||
fun visitPropertySymbol(symbol: IrPropertySymbol, data: D) =
|
||||
visitSymbol(symbol, data)
|
||||
|
||||
fun visitLocalDelegatedPropertySymbol(symbol: IrLocalDelegatedPropertySymbol, data: D) =
|
||||
visitSymbol(symbol, data)
|
||||
}
|
||||
@@ -28,12 +28,14 @@ interface SymbolRemapper {
|
||||
fun getDeclaredEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol
|
||||
fun getDeclaredExternalPackageFragment(symbol: IrExternalPackageFragmentSymbol): IrExternalPackageFragmentSymbol
|
||||
fun getDeclaredVariable(symbol: IrVariableSymbol): IrVariableSymbol
|
||||
fun getDeclaredLocalDelegatedProperty(symbol: IrLocalDelegatedPropertySymbol): IrLocalDelegatedPropertySymbol
|
||||
fun getDeclaredTypeParameter(symbol: IrTypeParameterSymbol): IrTypeParameterSymbol
|
||||
fun getDeclaredValueParameter(symbol: IrValueParameterSymbol): IrValueParameterSymbol
|
||||
fun getReferencedClass(symbol: IrClassSymbol): IrClassSymbol
|
||||
fun getReferencedClassOrNull(symbol: IrClassSymbol?): IrClassSymbol?
|
||||
fun getReferencedEnumEntry(symbol: IrEnumEntrySymbol): IrEnumEntrySymbol
|
||||
fun getReferencedVariable(symbol: IrVariableSymbol): IrVariableSymbol
|
||||
fun getReferencedLocalDelegatedProperty(symbol: IrLocalDelegatedPropertySymbol): IrLocalDelegatedPropertySymbol
|
||||
fun getReferencedField(symbol: IrFieldSymbol): IrFieldSymbol
|
||||
fun getReferencedConstructor(symbol: IrConstructorSymbol): IrConstructorSymbol
|
||||
fun getReferencedValue(symbol: IrValueSymbol): IrValueSymbol
|
||||
|
||||
@@ -207,7 +207,10 @@ open class SymbolTable : ReferenceSymbolTable {
|
||||
private val scopedTypeParameterSymbolTable = ScopedSymbolTable<TypeParameterDescriptor, IrTypeParameter, IrTypeParameterSymbol>()
|
||||
private val valueParameterSymbolTable = ScopedSymbolTable<ParameterDescriptor, IrValueParameter, IrValueParameterSymbol>()
|
||||
private val variableSymbolTable = ScopedSymbolTable<VariableDescriptor, IrVariable, IrVariableSymbol>()
|
||||
private val scopedSymbolTables = listOf(valueParameterSymbolTable, variableSymbolTable, scopedTypeParameterSymbolTable)
|
||||
private val localDelegatedPropertySymbolTable =
|
||||
ScopedSymbolTable<VariableDescriptorWithAccessors, IrLocalDelegatedProperty, IrLocalDelegatedPropertySymbol>()
|
||||
private val scopedSymbolTables =
|
||||
listOf(valueParameterSymbolTable, variableSymbolTable, scopedTypeParameterSymbolTable, localDelegatedPropertySymbolTable)
|
||||
|
||||
fun referenceExternalPackageFragment(descriptor: PackageFragmentDescriptor) =
|
||||
externalPackageFragmentTable.referenced(descriptor) { IrExternalPackageFragmentSymbolImpl(descriptor) }
|
||||
@@ -220,7 +223,6 @@ open class SymbolTable : ReferenceSymbolTable {
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
fun declareAnonymousInitializer(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
@@ -467,6 +469,24 @@ open class SymbolTable : ReferenceSymbolTable {
|
||||
|
||||
val unboundVariables: Set<IrVariableSymbol> get() = variableSymbolTable.unboundSymbols
|
||||
|
||||
fun declareLocalDelegatedProperty(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: VariableDescriptorWithAccessors,
|
||||
type: IrType
|
||||
): IrLocalDelegatedProperty =
|
||||
localDelegatedPropertySymbolTable.declareLocal(
|
||||
descriptor,
|
||||
{ IrLocalDelegatedPropertySymbolImpl(descriptor) },
|
||||
{ IrLocalDelegatedPropertyImpl(startOffset, endOffset, origin, it, type) }
|
||||
)
|
||||
|
||||
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) =
|
||||
localDelegatedPropertySymbolTable.referenced(descriptor) {
|
||||
throw AssertionError("Undefined local delegated property referenced: $descriptor")
|
||||
}
|
||||
|
||||
override fun enterScope(owner: DeclarationDescriptor) {
|
||||
scopedSymbolTables.forEach { it.enterScope(owner) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user