Report NON_VARARG_SPREAD on missed cases
^KT-48162 Fixed
This commit is contained in:
@@ -755,7 +755,7 @@ public interface Errors {
|
||||
}
|
||||
|
||||
DiagnosticFactory0<KtExpression> VARARG_OUTSIDE_PARENTHESES = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<LeafPsiElement> NON_VARARG_SPREAD = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactoryForDeprecation0<LeafPsiElement> NON_VARARG_SPREAD = DiagnosticFactoryForDeprecation0.create(LanguageFeature.ReportNonVarargSpreadOnGenericCalls);
|
||||
DiagnosticFactory0<LeafPsiElement> SPREAD_OF_NULLABLE = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<LeafPsiElement> SPREAD_OF_LAMBDA_OR_CALLABLE_REFERENCE = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
|
||||
+13
-3
@@ -280,9 +280,19 @@ class DiagnosticReporterByTrackingStrategy(
|
||||
override fun onCallArgumentSpread(callArgument: KotlinCallArgument, diagnostic: KotlinCallDiagnostic) {
|
||||
when (diagnostic.javaClass) {
|
||||
NonVarargSpread::class.java -> {
|
||||
val spreadElement = callArgument.safeAs<ExpressionKotlinCallArgumentImpl>()?.valueArgument?.getSpreadElement()
|
||||
if (spreadElement != null) {
|
||||
trace.report(NON_VARARG_SPREAD.on(spreadElement))
|
||||
val castedPsiCallArgument = callArgument.safeAs<PSIKotlinCallArgument>()
|
||||
val castedCallArgument = callArgument.safeAs<ExpressionKotlinCallArgumentImpl>()
|
||||
|
||||
if (castedCallArgument != null) {
|
||||
val spreadElement = castedCallArgument.valueArgument.getSpreadElement()
|
||||
if (spreadElement != null) {
|
||||
trace.report(NON_VARARG_SPREAD.onError(spreadElement))
|
||||
}
|
||||
} else if (castedPsiCallArgument != null) {
|
||||
val spreadElement = castedPsiCallArgument.valueArgument.getSpreadElement()
|
||||
if (spreadElement != null) {
|
||||
trace.report(NON_VARARG_SPREAD.on(context.languageVersionSettings, spreadElement))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -349,7 +349,7 @@ public class ValueArgumentsToParametersMapper {
|
||||
else {
|
||||
LeafPsiElement spread = valueArgument.getSpreadElement();
|
||||
if (spread != null) {
|
||||
candidateCall.getTrace().report(NON_VARARG_SPREAD.on(spread));
|
||||
candidateCall.getTrace().report(NON_VARARG_SPREAD.onError(spread));
|
||||
setStatus(WEAK_ERROR);
|
||||
}
|
||||
ResolvedValueArgument argument = new ExpressionValueArgument(valueArgument);
|
||||
|
||||
Reference in New Issue
Block a user