[FE] Report ambiguity in all possible cases

This commit is contained in:
Anastasiya Shadrina
2021-06-20 06:27:14 +07:00
committed by TeamCityServer
parent 37495bcba0
commit 814777ba8c
18 changed files with 111 additions and 104 deletions
@@ -1199,6 +1199,7 @@ public interface Errors {
// Context receivers
DiagnosticFactory1<KtElement, String> NO_CONTEXT_RECEIVER = DiagnosticFactory1.create(ERROR);
DiagnosticFactory1<KtElement, String> MULTIPLE_ARGUMENTS_APPLICABLE_FOR_CONTEXT_RECEIVER = DiagnosticFactory1.create(ERROR);
DiagnosticFactory0<KtElement> AMBIBIGUOS_CALL_WITH_IMPLICIT_CONTEXT_RECEIVER = DiagnosticFactory0.create(ERROR);
// Error sets
ImmutableSet<? extends DiagnosticFactory<?>> UNRESOLVED_REFERENCE_DIAGNOSTICS = ImmutableSet.of(
@@ -1090,6 +1090,7 @@ public class DefaultErrorMessages {
MAP.put(NO_CONTEXT_RECEIVER, "No required context receiver found: {0}", TO_STRING);
MAP.put(MULTIPLE_ARGUMENTS_APPLICABLE_FOR_CONTEXT_RECEIVER, "Multiple arguments applicable for context receiver: {0}", TO_STRING);
MAP.put(AMBIBIGUOS_CALL_WITH_IMPLICIT_CONTEXT_RECEIVER, "With implicit context receiver, call is ambiguous. Specify the receiver explicitly");
MAP.setImmutable();
@@ -111,6 +111,10 @@ class DiagnosticReporterByTrackingStrategy(
)
)
}
ContextReceiverAmbiguity::class.java -> {
val callElement = psiKotlinCall.psiCall.callElement
trace.report(AMBIBIGUOS_CALL_WITH_IMPLICIT_CONTEXT_RECEIVER.on(callElement))
}
}
}