Transform VisibilityError diagnostic for callable references to further report it on the corresponding argument of a base call
^KT-46437 Fixed
This commit is contained in:
+3
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.resolve.calls.components
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.components.NewTypeSubstitutor
|
||||
import org.jetbrains.kotlin.resolve.calls.model.*
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.VisibilityError
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.VisibilityErrorOnArgument
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.isInapplicable
|
||||
|
||||
class CallableReferenceArgumentResolver(val callableReferenceOverloadConflictResolver: CallableReferenceOverloadConflictResolver) {
|
||||
@@ -43,6 +45,7 @@ class CallableReferenceArgumentResolver(val callableReferenceOverloadConflictRes
|
||||
chosenCandidate.diagnostics.forEach {
|
||||
val transformedDiagnostic = when (it) {
|
||||
is CompatibilityWarning -> CompatibilityWarningOnArgument(argument, it.candidate)
|
||||
is VisibilityError -> VisibilityErrorOnArgument(argument, it.invisibleMember)
|
||||
else -> it
|
||||
}
|
||||
diagnosticsHolder.addDiagnostic(transformedDiagnostic)
|
||||
|
||||
+10
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintSystemError
|
||||
import org.jetbrains.kotlin.resolve.calls.model.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.resolve.calls.model.KotlinCallArgument
|
||||
import org.jetbrains.kotlin.resolve.calls.model.KotlinCallDiagnostic
|
||||
import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability.*
|
||||
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
|
||||
@@ -111,6 +112,15 @@ class VisibilityError(val invisibleMember: DeclarationDescriptorWithVisibility)
|
||||
}
|
||||
}
|
||||
|
||||
class VisibilityErrorOnArgument(
|
||||
val argument: KotlinCallArgument,
|
||||
val invisibleMember: DeclarationDescriptorWithVisibility
|
||||
) : ResolutionDiagnostic(RUNTIME_ERROR) {
|
||||
override fun report(reporter: DiagnosticReporter) {
|
||||
reporter.onCallArgument(argument, this)
|
||||
}
|
||||
}
|
||||
|
||||
class NestedClassViaInstanceReference(val classDescriptor: ClassDescriptor) : ResolutionDiagnostic(IMPOSSIBLE_TO_GENERATE)
|
||||
class InnerClassViaStaticReference(val classDescriptor: ClassDescriptor) : ResolutionDiagnostic(IMPOSSIBLE_TO_GENERATE)
|
||||
class UnsupportedInnerClassCall(val message: String) : ResolutionDiagnostic(IMPOSSIBLE_TO_GENERATE)
|
||||
|
||||
Reference in New Issue
Block a user