FIR: look for conflicting declarations more precisely
This commit is contained in:
committed by
teamcity
parent
3092a84b6b
commit
4737bb07df
+1
-12
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirVisibilityChecker
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInfix
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isOperator
|
||||
@@ -33,8 +32,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visibilityChecker
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.isSubtypeConstraintCompatible
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.SimpleConstraintSystemConstraintPosition
|
||||
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind.*
|
||||
@@ -542,9 +539,6 @@ internal object CheckVisibility : CheckerStage() {
|
||||
}
|
||||
|
||||
internal object CheckLowPriorityInOverloadResolution : CheckerStage() {
|
||||
private val LOW_PRIORITY_IN_OVERLOAD_RESOLUTION_CLASS_ID: ClassId =
|
||||
ClassId(FqName("kotlin.internal"), Name.identifier("LowPriorityInOverloadResolution"))
|
||||
|
||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||
val annotations = when (val fir = candidate.symbol.fir) {
|
||||
is FirSimpleFunction -> fir.annotations
|
||||
@@ -553,12 +547,7 @@ internal object CheckLowPriorityInOverloadResolution : CheckerStage() {
|
||||
else -> return
|
||||
}
|
||||
|
||||
val hasLowPriorityAnnotation = annotations.any {
|
||||
val lookupTag = it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag ?: return@any false
|
||||
lookupTag.classId == LOW_PRIORITY_IN_OVERLOAD_RESOLUTION_CLASS_ID
|
||||
}
|
||||
|
||||
if (hasLowPriorityAnnotation) {
|
||||
if (hasLowPriorityAnnotation(annotations)) {
|
||||
sink.reportDiagnostic(ResolvedWithLowPriority)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user