[FIR] Add two kinds of Java origin to distinguish source and library declarations

This commit is contained in:
Dmitriy Novozhilov
2022-05-26 12:04:36 +03:00
committed by teamcity
parent 26df9d74e8
commit fb57e1ecd5
21 changed files with 84 additions and 47 deletions
@@ -5,12 +5,21 @@
package org.jetbrains.kotlin.fir.declarations
sealed class FirDeclarationOrigin(private val displayName: String? = null, val fromSupertypes: Boolean = false, val generated: Boolean = false) {
object Source : FirDeclarationOrigin()
sealed class FirDeclarationOrigin(
private val displayName: String? = null,
val fromSupertypes: Boolean = false,
val generated: Boolean = false,
val fromSource: Boolean = false
) {
object Source : FirDeclarationOrigin(fromSource = true)
object Library : FirDeclarationOrigin()
object Precompiled : FirDeclarationOrigin() // currently used for incremental compilation
object BuiltIns : FirDeclarationOrigin()
object Java : FirDeclarationOrigin()
sealed class Java(displayName: String, fromSource: Boolean = false) : FirDeclarationOrigin(displayName, fromSource = fromSource) {
object Source : Java("Java(Source)", fromSource = true)
object Library : Java("Java(Library)")
}
object Synthetic : FirDeclarationOrigin()
object DynamicScope : FirDeclarationOrigin()
object SamConstructor : FirDeclarationOrigin()
@@ -47,16 +47,18 @@ val FirQualifiedAccess.referredPropertySymbol: FirPropertySymbol?
}
inline val FirDeclaration.isJava: Boolean
get() = origin == FirDeclarationOrigin.Java
get() = origin is FirDeclarationOrigin.Java
inline val FirDeclaration.isJavaSource: Boolean
get() = origin == FirDeclarationOrigin.Java.Source
inline val FirDeclaration.isFromLibrary: Boolean
get() = origin == FirDeclarationOrigin.Library
get() = origin == FirDeclarationOrigin.Library || origin == FirDeclarationOrigin.Java.Library
inline val FirDeclaration.isPrecompiled: Boolean
get() = origin == FirDeclarationOrigin.Precompiled
inline val FirDeclaration.isSynthetic: Boolean
get() = origin == FirDeclarationOrigin.Synthetic
inline val FirDeclaration.isJavaOrEnhancement: Boolean
get() = origin == FirDeclarationOrigin.Java || origin == FirDeclarationOrigin.Enhancement
get() = origin is FirDeclarationOrigin.Java || origin == FirDeclarationOrigin.Enhancement
inline val FirBasedSymbol<*>.isJavaOrEnhancement: Boolean
get() = origin == FirDeclarationOrigin.Java || origin == FirDeclarationOrigin.Enhancement
get() = origin is FirDeclarationOrigin.Java || origin == FirDeclarationOrigin.Enhancement