[FIR2IR] Introduce FirMetadataSource and use it (KT-38156)
This commit is contained in:
@@ -187,7 +187,7 @@ class Fir2IrClassifierStorage(
|
||||
isExpect = regularClass.isExpect,
|
||||
isFun = false // TODO FirRegularClass.isFun
|
||||
).apply {
|
||||
metadata = MetadataSource.Class(descriptor)
|
||||
metadata = FirMetadataSource.Class(regularClass, descriptor)
|
||||
descriptor.bind(this)
|
||||
}
|
||||
}
|
||||
@@ -222,7 +222,7 @@ class Fir2IrClassifierStorage(
|
||||
isCompanion = false, isInner = false, isData = false,
|
||||
isExternal = false, isInline = false, isExpect = false, isFun = false
|
||||
).apply {
|
||||
metadata = MetadataSource.Class(descriptor)
|
||||
metadata = FirMetadataSource.Class(anonymousObject, descriptor)
|
||||
descriptor.bind(this)
|
||||
setThisReceiver(anonymousObject.typeParameters)
|
||||
if (irParent != null) {
|
||||
|
||||
+7
-5
@@ -437,7 +437,7 @@ class Fir2IrDeclarationStorage(
|
||||
isFakeOverride = updatedOrigin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
isOperator = simpleFunction?.isOperator == true
|
||||
).apply {
|
||||
metadata = MetadataSource.Function(descriptor)
|
||||
metadata = FirMetadataSource.Function(function, descriptor)
|
||||
}
|
||||
}
|
||||
result
|
||||
@@ -501,7 +501,7 @@ class Fir2IrDeclarationStorage(
|
||||
constructor.returnTypeRef.toIrType(),
|
||||
isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = false
|
||||
).apply {
|
||||
metadata = MetadataSource.Function(descriptor)
|
||||
metadata = FirMetadataSource.Function(constructor, descriptor)
|
||||
enterScope(descriptor)
|
||||
}.bindAndDeclareParameters(constructor, descriptor, irParent, isStatic = false).apply {
|
||||
leaveScope(descriptor)
|
||||
@@ -549,7 +549,9 @@ class Fir2IrDeclarationStorage(
|
||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
isOperator = false
|
||||
).apply {
|
||||
metadata = MetadataSource.Function(descriptor)
|
||||
if (propertyAccessor != null) {
|
||||
metadata = FirMetadataSource.Function(propertyAccessor, descriptor)
|
||||
}
|
||||
with(classifierStorage) {
|
||||
setTypeParameters(
|
||||
property, ConversionTypeContext(
|
||||
@@ -637,7 +639,7 @@ class Fir2IrDeclarationStorage(
|
||||
isExpect = property.isExpect,
|
||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||
).apply {
|
||||
metadata = MetadataSource.Property(descriptor)
|
||||
metadata = FirMetadataSource.Variable(property, descriptor)
|
||||
descriptor.bind(this)
|
||||
if (irParent != null) {
|
||||
parent = irParent
|
||||
@@ -721,7 +723,7 @@ class Fir2IrDeclarationStorage(
|
||||
isStatic = field.isStatic,
|
||||
isFakeOverride = false
|
||||
).apply {
|
||||
metadata = MetadataSource.Property(descriptor)
|
||||
metadata = FirMetadataSource.Variable(field, descriptor)
|
||||
descriptor.bind(this)
|
||||
fieldCache[field] = this
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
||||
import org.jetbrains.kotlin.ir.descriptors.WrappedClassDescriptor
|
||||
|
||||
interface FirMetadataSource : MetadataSource {
|
||||
class Class(
|
||||
val klass: FirClass<*>, descriptor: WrappedClassDescriptor
|
||||
) : MetadataSource.Class(descriptor), FirMetadataSource
|
||||
|
||||
class Function(
|
||||
val function: FirFunction<*>, descriptor: FunctionDescriptor
|
||||
) : MetadataSource.Function(descriptor), FirMetadataSource
|
||||
|
||||
class Variable(
|
||||
val variable: FirVariable<*>,
|
||||
descriptor: PropertyDescriptor
|
||||
) : MetadataSource.Property(descriptor), FirMetadataSource
|
||||
}
|
||||
@@ -11,11 +11,11 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
|
||||
interface MetadataSource {
|
||||
class Class(val descriptor: ClassDescriptor) : MetadataSource
|
||||
open class Class(val descriptor: ClassDescriptor) : MetadataSource
|
||||
|
||||
class File(val descriptors: List<DeclarationDescriptor>) : MetadataSource
|
||||
|
||||
class Function(val descriptor: FunctionDescriptor) : MetadataSource
|
||||
open class Function(val descriptor: FunctionDescriptor) : MetadataSource
|
||||
|
||||
class Property(val descriptor: PropertyDescriptor) : MetadataSource
|
||||
open class Property(val descriptor: PropertyDescriptor) : MetadataSource
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user