void (@NotNull PsiPolyadicExpression expression) { super.visitPolyadicExpression(expression); final IElementType tokenType = expression.getOperationTokenType(); if (ComparisonUtils.isComparisonOperation(tokenType)) { return; } final PsiExpression[] operands = expression.getOperands(); PsiType leftType = operands[0].getType(); for (int i = 1; i < operands.length; i++) { final PsiExpression operand = operands[i]; final PsiType rightType = operand.getType(); final PsiType expressionType = TypeConversionUtil.calcTypeForBinaryExpression(leftType, rightType, tokenType, true); if (TypeUtils.isJavaLangString(expressionType)) { return; } if (PsiTypes.charType().equals(rightType)) { registerError(operand, operand); } if (PsiTypes.charType().equals(leftType) && i == 1) { registerError(operands[0], operands[0]); } leftType = rightType; } }