FIR: suppress CONFLICTING_OVERLOADS diagnostic properly
This commit is contained in:
committed by
teamcity
parent
33fb49f20d
commit
07b5bd72ae
+17
-14
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
|||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||||
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
|
import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef
|
||||||
import org.jetbrains.kotlin.fir.resolve.getContainingDeclaration
|
import org.jetbrains.kotlin.fir.resolve.getContainingDeclaration
|
||||||
@@ -227,21 +228,23 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
inspector.declarationConflictingSymbols.forEach { (conflictingDeclaration, symbols) ->
|
inspector.declarationConflictingSymbols.forEach { (conflictingDeclaration, symbols) ->
|
||||||
val source = conflictingDeclaration.source
|
val source = conflictingDeclaration.source
|
||||||
if (source != null && symbols.isNotEmpty()) {
|
if (source != null && symbols.isNotEmpty()) {
|
||||||
when (conflictingDeclaration) {
|
withSuppressedDiagnostics(conflictingDeclaration, context) { ctx ->
|
||||||
is FirSimpleFunction,
|
when (conflictingDeclaration) {
|
||||||
is FirConstructor -> {
|
is FirSimpleFunction,
|
||||||
reporter.reportOn(source, FirErrors.CONFLICTING_OVERLOADS, symbols, context)
|
is FirConstructor -> {
|
||||||
}
|
reporter.reportOn(source, FirErrors.CONFLICTING_OVERLOADS, symbols, ctx)
|
||||||
else -> {
|
}
|
||||||
val factory = if (conflictingDeclaration is FirClassLikeDeclaration &&
|
else -> {
|
||||||
conflictingDeclaration.getContainingDeclaration(context.session) == null &&
|
val factory = if (conflictingDeclaration is FirClassLikeDeclaration &&
|
||||||
symbols.any { it is FirClassLikeSymbol<*> }
|
conflictingDeclaration.getContainingDeclaration(ctx.session) == null &&
|
||||||
) {
|
symbols.any { it is FirClassLikeSymbol<*> }
|
||||||
FirErrors.PACKAGE_OR_CLASSIFIER_REDECLARATION
|
) {
|
||||||
} else {
|
FirErrors.PACKAGE_OR_CLASSIFIER_REDECLARATION
|
||||||
FirErrors.REDECLARATION
|
} else {
|
||||||
|
FirErrors.REDECLARATION
|
||||||
|
}
|
||||||
|
reporter.reportOn(source, factory, symbols, ctx)
|
||||||
}
|
}
|
||||||
reporter.reportOn(source, factory, symbols, context)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user