void (PsiExpression expression) { final PsiElement parent = expression.getParent(); if (parent instanceof PsiParenthesizedExpression) { return; } if (parent instanceof PsiAssignmentExpression assignmentExpression) { if (assignmentExpression.getOperationTokenType() != JavaTokenType.EQ) { if (assignmentExpression.getLExpression() == expression) { final PsiExpression rhs = assignmentExpression.getRExpression(); if (rhs != null) { final PsiType expressionType = expression.getType(); if (!ClassUtils.isPrimitiveNumericType(expressionType)) return; final PsiType rhsType = rhs.getType(); if (!ClassUtils.isPrimitiveNumericType(rhsType)) return; final PsiType promotedType = TypeConversionUtil.binaryNumericPromotion(expressionType, rhsType); if (checkTypes(assignmentExpression, promotedType, expressionType)) return; if (ignoreWideningConversions) return; checkTypes(rhs, rhsType, promotedType); } } return; } } if (ignoreWideningConversions) { // Further analysis could be quite slow, especially in batch mode, as type of almost every expression is queried. // So stop here if ignoreWideningConversions is on. return; } final PsiType expressionType = expression.getType(); if (!ClassUtils.isPrimitiveNumericType(expressionType)) { return; } final PsiType expectedType = ExpectedTypeUtils.findExpectedType(expression, true); if (!ClassUtils.isPrimitiveNumericType(expectedType)) { return; } checkTypes(expression, expressionType, expectedType); }