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