void (@NotNull GrBinaryExpression expression) { IElementType tokenType = expression.getOperationTokenType(); if (!EQUALITY_OPERATORS.contains(tokenType)) return; PsiType leftType = expression.getLeftType(); if (leftType == null) return; PsiType rightType = expression.getRightType(); if (rightType == null) return; if (TypeUtils.areConvertible(rightType, leftType)) return; if (isInheritor(leftType, JAVA_LANG_NUMBER)) { if (isInheritor(rightType, JAVA_LANG_NUMBER)) return; if (isInheritor(rightType, JAVA_LANG_CHARACTER)) return; if (isInheritor(rightType, JAVA_LANG_STRING)) return; // Number == "1" } else if (isInheritor(leftType, JAVA_LANG_CHARACTER)) { if (isInheritor(rightType, JAVA_LANG_NUMBER)) return; if (isInheritor(rightType, JAVA_LANG_STRING)) return; // Character == "1" } else if (isInheritor(leftType, JAVA_LANG_STRING)) { if (isInheritor(rightType, JAVA_LANG_NUMBER)) return; // "1" : Number if (isInheritor(rightType, JAVA_LANG_CHARACTER)) return; if (isInheritor(rightType, GROOVY_LANG_GSTRING)) return; } else if (isInheritor(leftType, GROOVY_LANG_GSTRING)) { if (isInheritor(rightType, JAVA_LANG_STRING)) return; } registerError(expression.getOperationToken(), tokenType, leftType.getPresentableText(), rightType.getPresentableText()); }