[IR] Introduce new IdSignatures
FileSignature, CompositeSignature, LocalSignature They are needed to make possible reference any non-local declaration via signature, including private signature, type parameters and so on. - Support those new signatures in proto and klibs - Rename `isPublic` -> `isPubliclyVisible` due to changed semantic - Fix FIR - clean up code
This commit is contained in:
committed by
TeamCityServer
parent
7139785036
commit
6cdac22a23
+9
-6
@@ -669,7 +669,6 @@ class Fir2IrDeclarationStorage(
|
||||
internal fun IrProperty.createBackingField(
|
||||
property: FirProperty,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
visibility: DescriptorVisibility,
|
||||
name: Name,
|
||||
isFinal: Boolean,
|
||||
@@ -677,9 +676,7 @@ class Fir2IrDeclarationStorage(
|
||||
type: IrType? = null
|
||||
): IrField = convertCatching(property) {
|
||||
val inferredType = type ?: firInitializerExpression!!.typeRef.toIrType()
|
||||
return symbolTable.declareField(
|
||||
startOffset, endOffset, origin, descriptor, inferredType
|
||||
) { symbol ->
|
||||
return declareIrField(null) { symbol ->
|
||||
irFactory.createField(
|
||||
startOffset, endOffset, origin, symbol,
|
||||
name, inferredType,
|
||||
@@ -713,6 +710,12 @@ class Fir2IrDeclarationStorage(
|
||||
else
|
||||
symbolTable.declareProperty(signature, { Fir2IrPropertySymbol(signature, containerSource) }, factory)
|
||||
|
||||
private fun declareIrField(signature: IdSignature?, factory: (IrFieldSymbol) -> IrField): IrField =
|
||||
if (signature == null)
|
||||
factory(IrFieldSymbolImpl())
|
||||
else
|
||||
symbolTable.declareField(signature, { IrFieldPublicSymbolImpl(signature) }, factory)
|
||||
|
||||
fun getOrCreateIrProperty(
|
||||
property: FirProperty,
|
||||
irParent: IrDeclarationParent?,
|
||||
@@ -797,13 +800,13 @@ class Fir2IrDeclarationStorage(
|
||||
if (delegate != null || property.hasBackingField) {
|
||||
backingField = if (delegate != null) {
|
||||
createBackingField(
|
||||
property, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor,
|
||||
property, IrDeclarationOrigin.PROPERTY_DELEGATE,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(property.fieldVisibility),
|
||||
Name.identifier("${property.name}\$delegate"), true, delegate
|
||||
)
|
||||
} else {
|
||||
createBackingField(
|
||||
property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor,
|
||||
property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(property.fieldVisibility),
|
||||
property.name, property.isVal, initializer, type
|
||||
).also { field ->
|
||||
|
||||
@@ -5,13 +5,19 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.lazy
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.fir.backend.ConversionTypeContext
|
||||
import org.jetbrains.kotlin.fir.backend.ConversionTypeOrigin
|
||||
import org.jetbrains.kotlin.fir.backend.Fir2IrComponents
|
||||
import org.jetbrains.kotlin.fir.backend.toIrConst
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.lazyVar
|
||||
@@ -21,11 +27,8 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.isInterface
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.fir.backend.*
|
||||
import org.jetbrains.kotlin.fir.backend.ConversionTypeOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
|
||||
class Fir2IrLazyProperty(
|
||||
@@ -96,7 +99,7 @@ class Fir2IrLazyProperty(
|
||||
fir.initializer != null || fir.getter is FirDefaultPropertyGetter || fir.isVar && fir.setter is FirDefaultPropertySetter -> {
|
||||
with(declarationStorage) {
|
||||
createBackingField(
|
||||
fir, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor,
|
||||
fir, IrDeclarationOrigin.PROPERTY_BACKING_FIELD,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(fir.visibility), fir.name, fir.isVal, fir.initializer,
|
||||
type
|
||||
).also { field ->
|
||||
@@ -112,7 +115,7 @@ class Fir2IrLazyProperty(
|
||||
fir.delegate != null -> {
|
||||
with(declarationStorage) {
|
||||
createBackingField(
|
||||
fir, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor,
|
||||
fir, IrDeclarationOrigin.PROPERTY_DELEGATE,
|
||||
components.visibilityConverter.convertToDescriptorVisibility(fir.visibility),
|
||||
Name.identifier("${fir.name}\$delegate"), true, fir.delegate
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user