[FIR] Unwrap substitution overrides for multiple default values
Otherwise, duplicate diagnostics may be reported on subtypes of the type that actually declares the problematic override.
This commit is contained in:
committed by
Space Team
parent
76fa812949
commit
2801db0e59
+5
-2
@@ -20,16 +20,19 @@ import org.jetbrains.kotlin.fir.isSubstitutionOverride
|
||||
import org.jetbrains.kotlin.fir.scopes.processAllFunctions
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object FirMultipleDefaultsInheritedFromSupertypesChecker : FirRegularClassChecker() {
|
||||
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
declaration.unsubstitutedScope(context).processAllFunctions {
|
||||
if (it.containingClassLookupTag() != declaration.symbol.toLookupTag()) {
|
||||
val originalIfSubstitutionOverride = it.unwrapSubstitutionOverrides()
|
||||
|
||||
if (originalIfSubstitutionOverride.containingClassLookupTag() != declaration.symbol.toLookupTag()) {
|
||||
return@processAllFunctions
|
||||
}
|
||||
|
||||
checkFunction(declaration, it, context, reporter)
|
||||
checkFunction(declaration, originalIfSubstitutionOverride, context, reporter)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user