[IR] support storing signatures for non-public symbols
This commit is contained in:
committed by
TeamCityServer
parent
d74ab1538b
commit
33cd7e982c
@@ -48,6 +48,9 @@ abstract class Fir2IrBindableSymbol<out D : DeclarationDescriptor, B : IrDeclara
|
|||||||
return "Unbound public symbol for $signature"
|
return "Unbound public symbol for $signature"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val isPublicApi: Boolean
|
||||||
|
get() = true
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val GETTER_PREFIX = "<get"
|
private const val GETTER_PREFIX = "<get"
|
||||||
private const val SETTER_PREFIX = "<set"
|
private const val SETTER_PREFIX = "<set"
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ abstract class IrDelegatingSymbol<S : IrBindableSymbol<D, B>, B : IrSymbolOwner,
|
|||||||
if (delegate === other) return true
|
if (delegate === other) return true
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val isPublicApi: Boolean
|
||||||
|
get() = delegate.isPublicApi
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrDelegatingClassSymbolImpl(delegate: IrClassSymbol) :
|
class IrDelegatingClassSymbolImpl(delegate: IrClassSymbol) :
|
||||||
|
|||||||
@@ -36,10 +36,9 @@ interface IrSymbol {
|
|||||||
val isBound: Boolean
|
val isBound: Boolean
|
||||||
|
|
||||||
val signature: IdSignature?
|
val signature: IdSignature?
|
||||||
}
|
|
||||||
|
|
||||||
val IrSymbol.isPublicApi: Boolean
|
val isPublicApi: Boolean
|
||||||
get() = signature != null
|
}
|
||||||
|
|
||||||
interface IrBindableSymbol<out D : DeclarationDescriptor, B : IrSymbolOwner> : IrSymbol {
|
interface IrBindableSymbol<out D : DeclarationDescriptor, B : IrSymbolOwner> : IrSymbol {
|
||||||
override val owner: B
|
override val owner: B
|
||||||
|
|||||||
+3
@@ -30,4 +30,7 @@ class DescriptorlessExternalPackageFragmentSymbol : IrExternalPackageFragmentSym
|
|||||||
override fun bind(owner: IrExternalPackageFragment) {
|
override fun bind(owner: IrExternalPackageFragment) {
|
||||||
_owner = owner
|
_owner = owner
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val isPublicApi: Boolean
|
||||||
|
get() = TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
|
|||||||
+37
-37
@@ -33,7 +33,7 @@ abstract class IrSymbolBase<out D : DeclarationDescriptor>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class IrBindableSymbolBase<out D : DeclarationDescriptor, B : IrSymbolOwner>(descriptor: D?) :
|
abstract class IrBindableSymbolBase<out D : DeclarationDescriptor, B : IrSymbolOwner>(descriptor: D?, override val signature: IdSignature?) :
|
||||||
IrBindableSymbol<D, B>, IrSymbolBase<D>(descriptor) {
|
IrBindableSymbol<D, B>, IrSymbolBase<D>(descriptor) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -65,75 +65,75 @@ abstract class IrBindableSymbolBase<out D : DeclarationDescriptor, B : IrSymbolO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val signature: IdSignature?
|
|
||||||
get() = null
|
|
||||||
|
|
||||||
override val isBound: Boolean
|
override val isBound: Boolean
|
||||||
get() = _owner != null
|
get() = _owner != null
|
||||||
|
|
||||||
|
override val isPublicApi: Boolean
|
||||||
|
get() = false
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrFileSymbolImpl(descriptor: PackageFragmentDescriptor? = null) :
|
class IrFileSymbolImpl(descriptor: PackageFragmentDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<PackageFragmentDescriptor, IrFile>(descriptor),
|
IrBindableSymbolBase<PackageFragmentDescriptor, IrFile>(descriptor, signature),
|
||||||
IrFileSymbol
|
IrFileSymbol
|
||||||
|
|
||||||
class IrExternalPackageFragmentSymbolImpl(descriptor: PackageFragmentDescriptor? = null) :
|
class IrExternalPackageFragmentSymbolImpl(descriptor: PackageFragmentDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<PackageFragmentDescriptor, IrExternalPackageFragment>(descriptor),
|
IrBindableSymbolBase<PackageFragmentDescriptor, IrExternalPackageFragment>(descriptor, signature),
|
||||||
IrExternalPackageFragmentSymbol
|
IrExternalPackageFragmentSymbol
|
||||||
|
|
||||||
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
@OptIn(ObsoleteDescriptorBasedAPI::class)
|
||||||
class IrAnonymousInitializerSymbolImpl(descriptor: ClassDescriptor? = null) :
|
class IrAnonymousInitializerSymbolImpl(descriptor: ClassDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<ClassDescriptor, IrAnonymousInitializer>(descriptor),
|
IrBindableSymbolBase<ClassDescriptor, IrAnonymousInitializer>(descriptor, signature),
|
||||||
IrAnonymousInitializerSymbol {
|
IrAnonymousInitializerSymbol {
|
||||||
constructor(irClassSymbol: IrClassSymbol) : this(irClassSymbol.descriptor)
|
constructor(irClassSymbol: IrClassSymbol, signature: IdSignature? = null) : this(irClassSymbol.descriptor, signature)
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrClassSymbolImpl(descriptor: ClassDescriptor? = null) :
|
class IrClassSymbolImpl(descriptor: ClassDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<ClassDescriptor, IrClass>(descriptor),
|
IrBindableSymbolBase<ClassDescriptor, IrClass>(descriptor, signature),
|
||||||
IrClassSymbol
|
IrClassSymbol
|
||||||
|
|
||||||
class IrEnumEntrySymbolImpl(descriptor: ClassDescriptor? = null) :
|
class IrEnumEntrySymbolImpl(descriptor: ClassDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<ClassDescriptor, IrEnumEntry>(descriptor),
|
IrBindableSymbolBase<ClassDescriptor, IrEnumEntry>(descriptor, signature),
|
||||||
IrEnumEntrySymbol
|
IrEnumEntrySymbol
|
||||||
|
|
||||||
class IrFieldSymbolImpl(descriptor: PropertyDescriptor? = null) :
|
class IrFieldSymbolImpl(descriptor: PropertyDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<PropertyDescriptor, IrField>(descriptor),
|
IrBindableSymbolBase<PropertyDescriptor, IrField>(descriptor, signature),
|
||||||
IrFieldSymbol
|
IrFieldSymbol
|
||||||
|
|
||||||
class IrTypeParameterSymbolImpl(descriptor: TypeParameterDescriptor? = null) :
|
class IrTypeParameterSymbolImpl(descriptor: TypeParameterDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<TypeParameterDescriptor, IrTypeParameter>(descriptor),
|
IrBindableSymbolBase<TypeParameterDescriptor, IrTypeParameter>(descriptor, signature),
|
||||||
IrTypeParameterSymbol
|
IrTypeParameterSymbol
|
||||||
|
|
||||||
class IrValueParameterSymbolImpl(descriptor: ParameterDescriptor? = null) :
|
class IrValueParameterSymbolImpl(descriptor: ParameterDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<ParameterDescriptor, IrValueParameter>(descriptor),
|
IrBindableSymbolBase<ParameterDescriptor, IrValueParameter>(descriptor, signature),
|
||||||
IrValueParameterSymbol
|
IrValueParameterSymbol
|
||||||
|
|
||||||
class IrVariableSymbolImpl(descriptor: VariableDescriptor? = null) :
|
class IrVariableSymbolImpl(descriptor: VariableDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<VariableDescriptor, IrVariable>(descriptor),
|
IrBindableSymbolBase<VariableDescriptor, IrVariable>(descriptor, signature),
|
||||||
IrVariableSymbol
|
IrVariableSymbol
|
||||||
|
|
||||||
class IrSimpleFunctionSymbolImpl(descriptor: FunctionDescriptor? = null) :
|
class IrSimpleFunctionSymbolImpl(descriptor: FunctionDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<FunctionDescriptor, IrSimpleFunction>(descriptor),
|
IrBindableSymbolBase<FunctionDescriptor, IrSimpleFunction>(descriptor, signature),
|
||||||
IrSimpleFunctionSymbol
|
IrSimpleFunctionSymbol
|
||||||
|
|
||||||
class IrConstructorSymbolImpl(descriptor: ClassConstructorDescriptor? = null) :
|
class IrConstructorSymbolImpl(descriptor: ClassConstructorDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<ClassConstructorDescriptor, IrConstructor>(descriptor),
|
IrBindableSymbolBase<ClassConstructorDescriptor, IrConstructor>(descriptor, signature),
|
||||||
IrConstructorSymbol
|
IrConstructorSymbol
|
||||||
|
|
||||||
class IrReturnableBlockSymbolImpl(descriptor: FunctionDescriptor? = null) :
|
class IrReturnableBlockSymbolImpl(descriptor: FunctionDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<FunctionDescriptor, IrReturnableBlock>(descriptor),
|
IrBindableSymbolBase<FunctionDescriptor, IrReturnableBlock>(descriptor, signature),
|
||||||
IrReturnableBlockSymbol
|
IrReturnableBlockSymbol
|
||||||
|
|
||||||
class IrPropertySymbolImpl(descriptor: PropertyDescriptor? = null) :
|
class IrPropertySymbolImpl(descriptor: PropertyDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<PropertyDescriptor, IrProperty>(descriptor),
|
IrBindableSymbolBase<PropertyDescriptor, IrProperty>(descriptor, signature),
|
||||||
IrPropertySymbol
|
IrPropertySymbol
|
||||||
|
|
||||||
class IrLocalDelegatedPropertySymbolImpl(descriptor: VariableDescriptorWithAccessors? = null) :
|
class IrLocalDelegatedPropertySymbolImpl(descriptor: VariableDescriptorWithAccessors? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<VariableDescriptorWithAccessors, IrLocalDelegatedProperty>(descriptor),
|
IrBindableSymbolBase<VariableDescriptorWithAccessors, IrLocalDelegatedProperty>(descriptor, signature),
|
||||||
IrLocalDelegatedPropertySymbol
|
IrLocalDelegatedPropertySymbol
|
||||||
|
|
||||||
class IrTypeAliasSymbolImpl(descriptor: TypeAliasDescriptor? = null) :
|
class IrTypeAliasSymbolImpl(descriptor: TypeAliasDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrBindableSymbolBase<TypeAliasDescriptor, IrTypeAlias>(descriptor),
|
IrBindableSymbolBase<TypeAliasDescriptor, IrTypeAlias>(descriptor, signature),
|
||||||
IrTypeAliasSymbol
|
IrTypeAliasSymbol
|
||||||
|
|
||||||
class IrScriptSymbolImpl(descriptor: ScriptDescriptor? = null) :
|
class IrScriptSymbolImpl(descriptor: ScriptDescriptor? = null, signature: IdSignature? = null) :
|
||||||
IrScriptSymbol, IrBindableSymbolBase<ScriptDescriptor, IrScript>(descriptor)
|
IrScriptSymbol, IrBindableSymbolBase<ScriptDescriptor, IrScript>(descriptor, signature)
|
||||||
|
|||||||
@@ -61,6 +61,9 @@ abstract class IrBindablePublicSymbolBase<out D : DeclarationDescriptor, B : IrS
|
|||||||
|
|
||||||
override val isBound: Boolean
|
override val isBound: Boolean
|
||||||
get() = _owner != null
|
get() = _owner != null
|
||||||
|
|
||||||
|
override val isPublicApi: Boolean
|
||||||
|
get() = true
|
||||||
}
|
}
|
||||||
|
|
||||||
class IrClassPublicSymbolImpl(sig: IdSignature, descriptor: ClassDescriptor? = null) :
|
class IrClassPublicSymbolImpl(sig: IdSignature, descriptor: ClassDescriptor? = null) :
|
||||||
|
|||||||
Reference in New Issue
Block a user