[IR] Unbind construction methods of IrClassImpl from symbol.descriptor
This commit is contained in:
@@ -167,7 +167,7 @@ class Fir2IrClassifierStorage(
|
|||||||
regularClass.modality ?: Modality.FINAL
|
regularClass.modality ?: Modality.FINAL
|
||||||
}
|
}
|
||||||
val irClass = regularClass.convertWithOffsets { startOffset, endOffset ->
|
val irClass = regularClass.convertWithOffsets { startOffset, endOffset ->
|
||||||
symbolTable.declareClass(startOffset, endOffset, origin, descriptor, modality, visibility) { symbol ->
|
symbolTable.declareClass(descriptor) { symbol ->
|
||||||
IrClassImpl(
|
IrClassImpl(
|
||||||
startOffset,
|
startOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
@@ -211,14 +211,12 @@ class Fir2IrClassifierStorage(
|
|||||||
val origin = IrDeclarationOrigin.DEFINED
|
val origin = IrDeclarationOrigin.DEFINED
|
||||||
val modality = Modality.FINAL
|
val modality = Modality.FINAL
|
||||||
val result = anonymousObject.convertWithOffsets { startOffset, endOffset ->
|
val result = anonymousObject.convertWithOffsets { startOffset, endOffset ->
|
||||||
symbolTable.declareClass(startOffset, endOffset, origin, descriptor, modality, visibility) { symbol ->
|
symbolTable.declareClass(descriptor) { symbol ->
|
||||||
IrClassImpl(
|
IrClassImpl(
|
||||||
startOffset, endOffset, origin, symbol, name,
|
startOffset, endOffset, origin, symbol, name,
|
||||||
// NB: for unknown reason, IR uses 'CLASS' kind for simple anonymous objects
|
// NB: for unknown reason, IR uses 'CLASS' kind for simple anonymous objects
|
||||||
anonymousObject.classKind.takeIf { it == ClassKind.ENUM_ENTRY } ?: ClassKind.CLASS,
|
anonymousObject.classKind.takeIf { it == ClassKind.ENUM_ENTRY } ?: ClassKind.CLASS,
|
||||||
visibility, modality,
|
visibility, modality
|
||||||
isCompanion = false, isInner = false, isData = false,
|
|
||||||
isExternal = false, isInline = false, isExpect = false, isFun = false
|
|
||||||
).apply {
|
).apply {
|
||||||
metadata = FirMetadataSource.Class(anonymousObject, descriptor)
|
metadata = FirMetadataSource.Class(anonymousObject, descriptor)
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
|
|||||||
+1
-8
@@ -288,14 +288,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
nameForCoroutineClass(irFunction),
|
nameForCoroutineClass(irFunction),
|
||||||
ClassKind.CLASS,
|
ClassKind.CLASS,
|
||||||
irFunction.visibility,
|
irFunction.visibility,
|
||||||
Modality.FINAL,
|
Modality.FINAL
|
||||||
isCompanion = false,
|
|
||||||
isInner = false,
|
|
||||||
isData = false,
|
|
||||||
isExternal = false,
|
|
||||||
isInline = false,
|
|
||||||
isExpect = false,
|
|
||||||
isFun = false
|
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = irFunction.parent
|
parent = irFunction.parent
|
||||||
|
|||||||
+1
-3
@@ -125,9 +125,7 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration
|
|||||||
val descriptor = WrappedClassDescriptor()
|
val descriptor = WrappedClassDescriptor()
|
||||||
val declaration = IrClassImpl(
|
val declaration = IrClassImpl(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, IrClassSymbolImpl(descriptor),
|
UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, IrClassSymbolImpl(descriptor),
|
||||||
Name.identifier(boxTypeName), ClassKind.CLASS, Visibilities.PUBLIC, Modality.FINAL,
|
Name.identifier(boxTypeName), ClassKind.CLASS, Visibilities.PUBLIC, Modality.FINAL
|
||||||
isCompanion = false, isInner = false, isData = false, isExternal = false,
|
|
||||||
isInline = false, isExpect = false, isFun = false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
descriptor.bind(declaration)
|
descriptor.bind(declaration)
|
||||||
|
|||||||
+1
-8
@@ -231,14 +231,7 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
nameForCoroutineClass(function),
|
nameForCoroutineClass(function),
|
||||||
ClassKind.CLASS,
|
ClassKind.CLASS,
|
||||||
function.visibility,
|
function.visibility,
|
||||||
Modality.FINAL,
|
Modality.FINAL
|
||||||
isCompanion = false,
|
|
||||||
isInner = false,
|
|
||||||
isData = false,
|
|
||||||
isExternal = false,
|
|
||||||
isInline = false,
|
|
||||||
isExpect = false,
|
|
||||||
isFun = false
|
|
||||||
).apply {
|
).apply {
|
||||||
d.bind(this)
|
d.bind(this)
|
||||||
parent = function.parent
|
parent = function.parent
|
||||||
|
|||||||
+1
-8
@@ -261,14 +261,7 @@ class JvmDeclarationFactory(
|
|||||||
Name.identifier(JvmAbi.DEFAULT_IMPLS_CLASS_NAME),
|
Name.identifier(JvmAbi.DEFAULT_IMPLS_CLASS_NAME),
|
||||||
ClassKind.CLASS,
|
ClassKind.CLASS,
|
||||||
Visibilities.PUBLIC,
|
Visibilities.PUBLIC,
|
||||||
Modality.FINAL,
|
Modality.FINAL
|
||||||
isCompanion = false,
|
|
||||||
isInner = false,
|
|
||||||
isData = false,
|
|
||||||
isExternal = false,
|
|
||||||
isInline = false,
|
|
||||||
isExpect = false,
|
|
||||||
isFun = false
|
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
parent = interfaceClass
|
parent = interfaceClass
|
||||||
|
|||||||
+1
-8
@@ -101,14 +101,7 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa
|
|||||||
name = fileClassInfo.fileClassFqName.shortName(),
|
name = fileClassInfo.fileClassFqName.shortName(),
|
||||||
kind = ClassKind.CLASS,
|
kind = ClassKind.CLASS,
|
||||||
visibility = if (!fileClassInfo.withJvmMultifileClass) Visibilities.PUBLIC else JavaVisibilities.PACKAGE_VISIBILITY,
|
visibility = if (!fileClassInfo.withJvmMultifileClass) Visibilities.PUBLIC else JavaVisibilities.PACKAGE_VISIBILITY,
|
||||||
modality = Modality.FINAL,
|
modality = Modality.FINAL
|
||||||
isCompanion = false,
|
|
||||||
isInner = false,
|
|
||||||
isData = false,
|
|
||||||
isExternal = false,
|
|
||||||
isInline = false,
|
|
||||||
isExpect = false,
|
|
||||||
isFun = false
|
|
||||||
).apply {
|
).apply {
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
superTypes += context.irBuiltIns.anyType
|
superTypes += context.irBuiltIns.anyType
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.backend.common.CodegenUtil
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
|
||||||
import org.jetbrains.kotlin.ir.descriptors.IrImplementingDelegateDescriptorImpl
|
import org.jetbrains.kotlin.ir.descriptors.IrImplementingDelegateDescriptorImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.mapValueParameters
|
import org.jetbrains.kotlin.ir.expressions.mapValueParameters
|
||||||
@@ -80,11 +81,16 @@ class ClassGenerator(
|
|||||||
val startOffset = ktClassOrObject.getStartOffsetOfClassDeclarationOrNull() ?: ktClassOrObject.pureStartOffset
|
val startOffset = ktClassOrObject.getStartOffsetOfClassDeclarationOrNull() ?: ktClassOrObject.pureStartOffset
|
||||||
val endOffset = ktClassOrObject.pureEndOffset
|
val endOffset = ktClassOrObject.pureEndOffset
|
||||||
val visibility = visibility_ ?: classDescriptor.visibility
|
val visibility = visibility_ ?: classDescriptor.visibility
|
||||||
|
val modality = getEffectiveModality(ktClassOrObject, classDescriptor)
|
||||||
|
|
||||||
return context.symbolTable.declareClass(
|
return context.symbolTable.declareClass(classDescriptor) {
|
||||||
startOffset, endOffset, IrDeclarationOrigin.DEFINED, classDescriptor,
|
IrClassImpl(
|
||||||
getEffectiveModality(ktClassOrObject, classDescriptor), visibility
|
startOffset, endOffset, IrDeclarationOrigin.DEFINED, it,
|
||||||
).buildWithScope { irClass ->
|
classDescriptor,
|
||||||
|
context.symbolTable.nameProvider.nameForDeclaration(classDescriptor),
|
||||||
|
visibility = visibility, modality = modality,
|
||||||
|
).apply { metadata = MetadataSource.Class(it.descriptor) }
|
||||||
|
}.buildWithScope { irClass ->
|
||||||
declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters)
|
declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters)
|
||||||
|
|
||||||
irClass.superTypes = classDescriptor.typeConstructor.supertypes.map {
|
irClass.superTypes = classDescriptor.typeConstructor.supertypes.map {
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
|
|||||||
|
|
||||||
fun generateClass(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, symbol: IrClassSymbol): IrClass {
|
fun generateClass(startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor, symbol: IrClassSymbol): IrClass {
|
||||||
|
|
||||||
val irClass = IrClassImpl(startOffset, endOffset, origin, symbol)
|
val irClass = IrClassImpl(startOffset, endOffset, origin, symbol, descriptor)
|
||||||
|
|
||||||
symbolTable.withScope(descriptor) {
|
symbolTable.withScope(descriptor) {
|
||||||
irClass.metadata = MetadataSource.Class(descriptor)
|
irClass.metadata = MetadataSource.Class(descriptor)
|
||||||
|
|||||||
@@ -16,10 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations.impl
|
package org.jetbrains.kotlin.ir.declarations.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ClassCarrier
|
import org.jetbrains.kotlin.ir.declarations.impl.carriers.ClassCarrier
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
@@ -38,43 +35,65 @@ class IrClassImpl(
|
|||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
override val symbol: IrClassSymbol,
|
override val symbol: IrClassSymbol,
|
||||||
override val name: Name = symbol.descriptor.name,
|
override val name: Name,
|
||||||
override val kind: ClassKind = symbol.descriptor.kind,
|
override val kind: ClassKind,
|
||||||
visibility: Visibility = symbol.descriptor.visibility,
|
visibility: Visibility,
|
||||||
modality: Modality = symbol.descriptor.modality,
|
modality: Modality,
|
||||||
override val isCompanion: Boolean = symbol.descriptor.isCompanionObject,
|
override val isCompanion: Boolean = false,
|
||||||
override val isInner: Boolean = symbol.descriptor.isInner,
|
override val isInner: Boolean = false,
|
||||||
override val isData: Boolean = symbol.descriptor.isData,
|
override val isData: Boolean = false,
|
||||||
override val isExternal: Boolean = symbol.descriptor.isEffectivelyExternal(),
|
override val isExternal: Boolean = false,
|
||||||
override val isInline: Boolean = symbol.descriptor.isInline,
|
override val isInline: Boolean = false,
|
||||||
override val isExpect: Boolean = symbol.descriptor.isExpect,
|
override val isExpect: Boolean = false,
|
||||||
override val isFun: Boolean = symbol.descriptor.isFun
|
override val isFun: Boolean = false
|
||||||
) :
|
) :
|
||||||
IrDeclarationBase<ClassCarrier>(startOffset, endOffset, origin),
|
IrDeclarationBase<ClassCarrier>(startOffset, endOffset, origin),
|
||||||
IrClass,
|
IrClass,
|
||||||
ClassCarrier {
|
ClassCarrier {
|
||||||
|
|
||||||
|
@Deprecated(
|
||||||
|
"This constructor is left for native compilation purpose only. " +
|
||||||
|
"It takes class attributes from symbol.descriptor " +
|
||||||
|
"Please either provide class attributes or its descriptor explicitly"
|
||||||
|
)
|
||||||
|
constructor(
|
||||||
|
startOffset: Int,
|
||||||
|
endOffset: Int,
|
||||||
|
origin: IrDeclarationOrigin,
|
||||||
|
symbol: IrClassSymbol
|
||||||
|
) : this(
|
||||||
|
startOffset, endOffset, origin, symbol,
|
||||||
|
name = symbol.descriptor.name,
|
||||||
|
kind = symbol.descriptor.kind,
|
||||||
|
visibility = symbol.descriptor.visibility,
|
||||||
|
modality = symbol.descriptor.modality,
|
||||||
|
isCompanion = symbol.descriptor.isCompanionObject,
|
||||||
|
isInner = symbol.descriptor.isInner,
|
||||||
|
isData = symbol.descriptor.isData,
|
||||||
|
isExternal = symbol.descriptor.isExternal,
|
||||||
|
isInline = symbol.descriptor.isInline,
|
||||||
|
isExpect = symbol.descriptor.isExpect,
|
||||||
|
isFun = symbol.descriptor.isFun
|
||||||
|
)
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
symbol: IrClassSymbol,
|
symbol: IrClassSymbol,
|
||||||
modality: Modality = symbol.descriptor.modality,
|
descriptor: ClassDescriptor,
|
||||||
visibility: Visibility = symbol.descriptor.visibility
|
name: Name = descriptor.name,
|
||||||
) :
|
visibility: Visibility = descriptor.visibility,
|
||||||
this(
|
modality: Modality = descriptor.modality
|
||||||
startOffset, endOffset, origin, symbol,
|
) : this(
|
||||||
symbol.descriptor.name, symbol.descriptor.kind,
|
startOffset, endOffset, origin, symbol,
|
||||||
visibility,
|
name, kind = descriptor.kind,
|
||||||
modality = modality,
|
visibility = visibility, modality = modality,
|
||||||
isCompanion = symbol.descriptor.isCompanionObject,
|
isCompanion = descriptor.isCompanionObject, isInner = descriptor.isInner,
|
||||||
isInner = symbol.descriptor.isInner,
|
isData = descriptor.isData, isExternal = descriptor.isEffectivelyExternal(),
|
||||||
isData = symbol.descriptor.isData,
|
isInline = descriptor.isInline, isExpect = descriptor.isExpect,
|
||||||
isExternal = symbol.descriptor.isEffectivelyExternal(),
|
isFun = descriptor.isFun
|
||||||
isInline = symbol.descriptor.isInline,
|
)
|
||||||
isExpect = symbol.descriptor.isExpect,
|
|
||||||
isFun = symbol.descriptor.isFun
|
|
||||||
)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
symbol.bind(this)
|
symbol.bind(this)
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.builtins.KOTLIN_REFLECT_FQ_NAME
|
|||||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.*
|
import org.jetbrains.kotlin.ir.declarations.impl.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
@@ -40,7 +39,7 @@ abstract class IrAbstractFunctionFactory {
|
|||||||
|
|
||||||
fun functionN(n: Int) = functionN(n) { callback ->
|
fun functionN(n: Int) = functionN(n) { callback ->
|
||||||
val descriptor = functionClassDescriptor(n)
|
val descriptor = functionClassDescriptor(n)
|
||||||
declareClass(offset, offset, classOrigin, descriptor) { symbol ->
|
declareClass(descriptor) { symbol ->
|
||||||
callback(symbol)
|
callback(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,7 +47,7 @@ abstract class IrAbstractFunctionFactory {
|
|||||||
fun kFunctionN(n: Int): IrClass {
|
fun kFunctionN(n: Int): IrClass {
|
||||||
return kFunctionN(n) { callback ->
|
return kFunctionN(n) { callback ->
|
||||||
val descriptor = kFunctionClassDescriptor(n)
|
val descriptor = kFunctionClassDescriptor(n)
|
||||||
declareClass(offset, offset, classOrigin, descriptor) { symbol ->
|
declareClass(descriptor) { symbol ->
|
||||||
callback(symbol)
|
callback(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,14 +55,14 @@ abstract class IrAbstractFunctionFactory {
|
|||||||
|
|
||||||
fun suspendFunctionN(n: Int): IrClass = suspendFunctionN(n) { callback ->
|
fun suspendFunctionN(n: Int): IrClass = suspendFunctionN(n) { callback ->
|
||||||
val descriptor = suspendFunctionClassDescriptor(n)
|
val descriptor = suspendFunctionClassDescriptor(n)
|
||||||
declareClass(offset, offset, classOrigin, descriptor) { symbol ->
|
declareClass(descriptor) { symbol ->
|
||||||
callback(symbol)
|
callback(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun kSuspendFunctionN(n: Int): IrClass = kSuspendFunctionN(n) { callback ->
|
fun kSuspendFunctionN(n: Int): IrClass = kSuspendFunctionN(n) { callback ->
|
||||||
val descriptor = kSuspendFunctionClassDescriptor(n)
|
val descriptor = kSuspendFunctionClassDescriptor(n)
|
||||||
declareClass(offset, offset, classOrigin, descriptor) { symbol ->
|
declareClass(descriptor) { symbol ->
|
||||||
callback(symbol)
|
callback(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -270,7 +269,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
|
|||||||
private fun FunctionClassDescriptor.createFunctionClass(): IrClass {
|
private fun FunctionClassDescriptor.createFunctionClass(): IrClass {
|
||||||
val s = symbolTable.referenceClass(this)
|
val s = symbolTable.referenceClass(this)
|
||||||
if (s.isBound) return s.owner
|
if (s.isBound) return s.owner
|
||||||
return symbolTable.declareClass(offset, offset, classOrigin, this, modality) {
|
return symbolTable.declareClass(this) {
|
||||||
val factory = FunctionDescriptorFactory.RealDescriptorFactory(this, symbolTable)
|
val factory = FunctionDescriptorFactory.RealDescriptorFactory(this, symbolTable)
|
||||||
when (functionKind) {
|
when (functionKind) {
|
||||||
FunctionClassDescriptor.Kind.Function ->
|
FunctionClassDescriptor.Kind.Function ->
|
||||||
@@ -422,14 +421,7 @@ class IrFunctionFactory(private val irBuiltIns: IrBuiltIns, private val symbolTa
|
|||||||
): IrClass {
|
): IrClass {
|
||||||
val name = functionClassName(isK, isSuspend, n)
|
val name = functionClassName(isK, isSuspend, n)
|
||||||
val klass = IrClassImpl(
|
val klass = IrClassImpl(
|
||||||
offset, offset, classOrigin, symbol, Name.identifier(name), ClassKind.INTERFACE, Visibilities.PUBLIC, Modality.ABSTRACT,
|
offset, offset, classOrigin, symbol, Name.identifier(name), ClassKind.INTERFACE, Visibilities.PUBLIC, Modality.ABSTRACT
|
||||||
isCompanion = false,
|
|
||||||
isInner = false,
|
|
||||||
isData = false,
|
|
||||||
isExternal = false,
|
|
||||||
isInline = false,
|
|
||||||
isExpect = false,
|
|
||||||
isFun = false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
val r = klass.createTypeParameters(n, descriptorFactory)
|
val r = klass.createTypeParameters(n, descriptorFactory)
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ class DeclarationStubGenerator(
|
|||||||
return referenceClass.owner
|
return referenceClass.owner
|
||||||
}
|
}
|
||||||
val origin = computeOrigin(descriptor)
|
val origin = computeOrigin(descriptor)
|
||||||
return symbolTable.declareClass(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor) {
|
return symbolTable.declareClass(descriptor) {
|
||||||
IrLazyClass(
|
IrLazyClass(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin,
|
||||||
it, descriptor,
|
it, descriptor,
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ interface ReferenceSymbolTable {
|
|||||||
|
|
||||||
open class SymbolTable(
|
open class SymbolTable(
|
||||||
val signaturer: IdSignatureComposer,
|
val signaturer: IdSignatureComposer,
|
||||||
private val nameProvider: NameProvider = NameProvider.DEFAULT
|
val nameProvider: NameProvider = NameProvider.DEFAULT
|
||||||
) : ReferenceSymbolTable {
|
) : ReferenceSymbolTable {
|
||||||
|
|
||||||
@Suppress("LeakingThis")
|
@Suppress("LeakingThis")
|
||||||
@@ -394,15 +394,8 @@ open class SymbolTable(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun declareClass(
|
fun declareClass(
|
||||||
startOffset: Int, endOffset: Int, origin: IrDeclarationOrigin, descriptor: ClassDescriptor,
|
descriptor: ClassDescriptor,
|
||||||
modality: Modality = descriptor.modality, visibility: Visibility = descriptor.visibility,
|
classFactory: (IrClassSymbol) -> IrClass
|
||||||
classFactory: (IrClassSymbol) -> IrClass = {
|
|
||||||
IrClassImpl(
|
|
||||||
startOffset, endOffset, origin, it,
|
|
||||||
nameProvider.nameForDeclaration(descriptor),
|
|
||||||
visibility = visibility, modality = modality,
|
|
||||||
).apply { metadata = MetadataSource.Class(it.descriptor) }
|
|
||||||
}
|
|
||||||
): IrClass {
|
): IrClass {
|
||||||
return classSymbolTable.declare(
|
return classSymbolTable.declare(
|
||||||
descriptor,
|
descriptor,
|
||||||
|
|||||||
Reference in New Issue
Block a user