FIR: handle synthetic properties with unstable smartcast

Synthetic properties from Java getter/setters need to be specially
handled so that candidates from such symbols are marked with unstable.
This commit is contained in:
Tianyu Geng
2021-06-09 15:25:16 -07:00
committed by TeamCityServer
parent ce767046eb
commit 3c8693758b
9 changed files with 90 additions and 40 deletions
@@ -45,7 +45,7 @@ class FirUnstableSmartcastTypeScope(
}
smartcastScope.process(name) {
if (it !in unique) {
symbolsFromUnstableSmartcast += it
markSymbolFromUnstableSmartcast(it)
processor(it)
}
}
@@ -72,7 +72,7 @@ class FirUnstableSmartcastTypeScope(
smartcastScope.process(name) { symbol, firTypeScope ->
if (symbol !in unique) {
symbolsFromUnstableSmartcast += symbol
markSymbolFromUnstableSmartcast(symbol)
processor(symbol, firTypeScope)
} else {
ProcessorAction.NEXT
@@ -83,6 +83,10 @@ class FirUnstableSmartcastTypeScope(
fun isSymbolFromUnstableSmartcast(symbol: AbstractFirBasedSymbol<*>) = symbol in symbolsFromUnstableSmartcast
fun markSymbolFromUnstableSmartcast(symbol: FirCallableSymbol<*>) {
symbolsFromUnstableSmartcast += symbol
}
override fun processDirectOverriddenFunctionsWithBaseScope(
functionSymbol: FirNamedFunctionSymbol,
processor: (FirNamedFunctionSymbol, FirTypeScope) -> ProcessorAction