[FIR] Introduce different synthetic origins for FIR declarations

This is needed to be able to precisely distinguish different synthetic
  declarations (like fields for delegates and functions for data classes)
  in fir2ir
This commit is contained in:
Dmitriy Novozhilov
2023-07-27 15:07:29 +03:00
committed by Space Team
parent 5b7b885dac
commit 69a35970eb
20 changed files with 45 additions and 27 deletions
@@ -23,7 +23,17 @@ sealed class FirDeclarationOrigin(
object Library : Java("Java(Library)")
}
object Synthetic : FirDeclarationOrigin()
sealed class Synthetic : FirDeclarationOrigin() {
object DataClassMember : Synthetic()
object ValueClassMember : Synthetic()
object JavaProperty : Synthetic()
object DelegateField : Synthetic()
object PluginFile : Synthetic()
object Error : Synthetic()
object TypeAliasConstructor : Synthetic()
object FakeFunction : Synthetic()
object ForwardDeclaration : Synthetic()
}
object DynamicScope : FirDeclarationOrigin()
object SamConstructor : FirDeclarationOrigin()
object Enhancement : FirDeclarationOrigin()
@@ -51,7 +51,7 @@ class FirSyntheticProperty(
get() = null
override val origin: FirDeclarationOrigin
get() = FirDeclarationOrigin.Synthetic
get() = FirDeclarationOrigin.Synthetic.JavaProperty
override val initializer: FirExpression?
get() = null
@@ -34,7 +34,7 @@ class FirSyntheticPropertyAccessor(
get() = delegate.moduleData
override val origin: FirDeclarationOrigin
get() = FirDeclarationOrigin.Synthetic
get() = FirDeclarationOrigin.Synthetic.JavaProperty
override val returnTypeRef: FirTypeRef
get() = delegate.returnTypeRef
@@ -34,7 +34,7 @@ inline val FirDeclaration.isFromLibrary: Boolean
inline val FirDeclaration.isPrecompiled: Boolean
get() = origin == FirDeclarationOrigin.Precompiled
inline val FirDeclaration.isSynthetic: Boolean
get() = origin == FirDeclarationOrigin.Synthetic
get() = origin is FirDeclarationOrigin.Synthetic
// NB: This function checks transitive localness. That is,
// if a declaration `isNonLocal`, then its parent also `isNonLocal`.