Add compatibility warning for SAM conversions
This commit is contained in:
@@ -761,6 +761,7 @@ public interface Errors {
|
||||
DiagnosticFactory1<PsiElement, KotlinType> REIFIED_TYPE_UNSAFE_SUBSTITUTION = DiagnosticFactory1.create(WARNING);
|
||||
DiagnosticFactory0<KtElement> CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION = DiagnosticFactory0.create(WARNING);
|
||||
|
||||
DiagnosticFactory0<KtElement> COMPATIBILITY_WARNING = DiagnosticFactory0.create(WARNING);
|
||||
|
||||
DiagnosticFactory3<KtReferenceExpression, ClassifierDescriptor, WrongResolutionToClassifier, String> RESOLUTION_TO_CLASSIFIER =
|
||||
DiagnosticFactory3.create(ERROR);
|
||||
|
||||
+2
@@ -898,6 +898,8 @@ public class DefaultErrorMessages {
|
||||
MAP.put(TYPE_PARAMETERS_NOT_ALLOWED, "Type parameters are not allowed here");
|
||||
MAP.put(CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION, "Candidate was choosen only by @OverloadResolutionByLambdaReturnType annotation");
|
||||
|
||||
MAP.put(COMPATIBILITY_WARNING, "Candidate was chosen to preserve compatibility");
|
||||
|
||||
MAP.put(TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER, "Type parameter of a property must be used in its receiver type");
|
||||
|
||||
MAP.put(SUPERTYPES_FOR_ANNOTATION_CLASS, "Annotation class cannot have supertypes");
|
||||
|
||||
+3
@@ -80,6 +80,9 @@ class DiagnosticReporterByTrackingStrategy(
|
||||
CandidateChosenUsingOverloadResolutionByLambdaAnnotation::class.java -> {
|
||||
trace.report(CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION.on(psiKotlinCall.psiCall.callElement))
|
||||
}
|
||||
CompatibilityWarning::class.java -> {
|
||||
trace.report(COMPATIBILITY_WARNING.on(psiKotlinCall.psiCall.callElement))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -422,6 +422,10 @@ class NewResolutionOldInference(
|
||||
getResultApplicability(diagnostics)
|
||||
}
|
||||
|
||||
override fun addCompatibilityWarning(other: Candidate) {
|
||||
// Only applicable for new inference
|
||||
}
|
||||
|
||||
override val isSuccessful = getResultApplicability(eagerDiagnostics).isSuccess
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user