From 5bd9b282a0f41638d5d1c14bd3eedaadcf9b1d77 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 20 Oct 2023 14:13:01 +0200 Subject: [PATCH] K2/JS: fix JS_NAME_CLASH positioning as source was changed for callable copies --- .../declaration/FirJsNameClashClassMembersChecker.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNameClashClassMembersChecker.kt b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNameClashClassMembersChecker.kt index 89ce055d249..6abd0dbed77 100644 --- a/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNameClashClassMembersChecker.kt +++ b/compiler/fir/checkers/checkers.js/src/org/jetbrains/kotlin/fir/analysis/js/checkers/declaration/FirJsNameClashClassMembersChecker.kt @@ -20,10 +20,12 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.utils.isFinal import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol +import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.unwrapFakeOverridesOrDelegated import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addToStdlib.popLast @@ -179,7 +181,12 @@ object FirJsNameClashClassMembersChecker : FirClassChecker() { val nonFakeOverrideClashes = stableNames.collectNonFakeOverrideClashes { it in fakeOverrideStableNames } for ((symbol, clashedWith) in nonFakeOverrideClashes) { - reporter.reportOn(symbol.source ?: declaration.source, FirJsErrors.JS_NAME_CLASH, name, clashedWith, context) + @OptIn(SymbolInternals::class) + val source = when (symbol) { + is FirCallableSymbol<*> -> symbol.fir.unwrapFakeOverridesOrDelegated().source + else -> symbol.source + } ?: declaration.source + reporter.reportOn(source, FirJsErrors.JS_NAME_CLASH, name, clashedWith, context) } fakeOverrideStableNames.findFirstFakeOverrideClash(stableNameCollector)?.let { (fakeOverrideSymbol, clashedWith) ->