'operator' checks
This commit is contained in:
@@ -564,8 +564,8 @@ public interface Errors {
|
||||
|
||||
DiagnosticFactory0<PsiElement> UNDERSCORE_IS_DEPRECATED = DiagnosticFactory0.create(WARNING);
|
||||
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_OPERATOR_MODIFIER = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_INFIX_MODIFIER = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_OPERATOR_MODIFIER = DiagnosticFactory0.create(WARNING);
|
||||
DiagnosticFactory0<PsiElement> INAPPLICABLE_INFIX_MODIFIER = DiagnosticFactory0.create(WARNING);
|
||||
|
||||
DiagnosticFactory2<PsiElement, FunctionDescriptor, String> OPERATOR_MODIFIER_REQUIRED = DiagnosticFactory2.create(WARNING);
|
||||
DiagnosticFactory2<JetOperationReferenceExpression, FunctionDescriptor, String> INFIX_MODIFIER_REQUIRED = DiagnosticFactory2.create(WARNING);
|
||||
|
||||
@@ -43,20 +43,10 @@ public class InfixModifierChecker : DeclarationChecker {
|
||||
|
||||
private fun isApplicable(descriptor: FunctionDescriptor): Boolean {
|
||||
if (descriptor.dispatchReceiverParameter == null && descriptor.extensionReceiverParameter == null) return false
|
||||
val paramCount = descriptor.valueParameters.size()
|
||||
return when (paramCount) {
|
||||
0 -> false
|
||||
1 -> true
|
||||
else -> {
|
||||
val params = descriptor.valueParameters
|
||||
for (i in 1..params.lastIndex) {
|
||||
if (!params[i].hasDefaultValue()) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
if (descriptor.valueParameters.size != 1) return false
|
||||
|
||||
val singleParameter = descriptor.valueParameters.first()
|
||||
return !singleParameter.hasDefaultValue() && singleParameter.varargElementType == null
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||
import org.jetbrains.kotlin.util.OperatorChecks
|
||||
|
||||
public class OperatorModifierChecker : DeclarationChecker {
|
||||
override fun check(
|
||||
@@ -51,7 +51,7 @@ public class OperatorModifierChecker : DeclarationChecker {
|
||||
if (!functionDescriptor.isOperator) return
|
||||
val modifier = declaration.modifierList?.getModifier(JetTokens.OPERATOR_KEYWORD) ?: return
|
||||
|
||||
if (!OperatorNameConventions.canBeOperator(functionDescriptor)) {
|
||||
if (!OperatorChecks.canBeOperator(functionDescriptor)) {
|
||||
diagnosticHolder.report(Errors.INAPPLICABLE_OPERATOR_MODIFIER.on(modifier))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user