Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -31,94 +31,94 @@
import consulo.localize.LocalizeValue;
import consulo.project.Project;
import jakarta.annotation.Nonnull;
import org.intellij.lang.annotations.Pattern;

import javax.swing.*;

@ExtensionImpl
public class NegatedConditionalInspection extends BaseInspection {
/**
* @noinspection PublicField
*/
public boolean m_ignoreNegatedNullComparison = true;

/**
* @noinspection PublicField
*/
public boolean m_ignoreNegatedNullComparison = true;

@Override
@Nonnull
public String getDisplayName() {
return InspectionGadgetsLocalize.negatedConditionalDisplayName().get();
}

@Override
@Nonnull
public String getID() {
return "ConditionalExpressionWithNegatedCondition";
}

@Override
@Nonnull
protected String buildErrorString(Object... infos) {
return InspectionGadgetsLocalize.negatedConditionalProblemDescriptor().get();
}

@Override
public BaseInspectionVisitor buildVisitor() {
return new NegatedConditionalVisitor();
}

@Override
public JComponent createOptionsPanel() {
LocalizeValue message = InspectionGadgetsLocalize.negatedConditionalIgnoreOption();
return new SingleCheckboxOptionsPanel(message.get(), this, "m_ignoreNegatedNullComparison");
}

@Override
protected InspectionGadgetsFix buildFix(Object... infos) {
return new NegatedConditionalFix();
}
@Nonnull
@Override
@Pattern(VALID_ID_PATTERN)
public String getID() {
return "ConditionalExpressionWithNegatedCondition";
}

private static class NegatedConditionalFix extends InspectionGadgetsFix {
@Nonnull
@Override
public LocalizeValue getDisplayName() {
return InspectionGadgetsLocalize.negatedConditionalDisplayName();
}

@Override
@Nonnull
public String getName() {
return InspectionGadgetsLocalize.negatedConditionalInvertQuickfix().get();
protected String buildErrorString(Object... infos) {
return InspectionGadgetsLocalize.negatedConditionalProblemDescriptor().get();
}

@Override
public void doFix(Project project, ProblemDescriptor descriptor)
throws IncorrectOperationException {
final PsiElement element = descriptor.getPsiElement();
final PsiConditionalExpression conditionalExpression = (PsiConditionalExpression)element.getParent();
assert conditionalExpression != null;
final PsiExpression elseBranch = conditionalExpression.getElseExpression();
final PsiExpression thenBranch = conditionalExpression.getThenExpression();
final PsiExpression condition = conditionalExpression.getCondition();
final String negatedCondition = BoolUtils.getNegatedExpressionText(condition);
assert elseBranch != null;
assert thenBranch != null;
final String newStatement = negatedCondition + '?' + elseBranch.getText() + ':' + thenBranch.getText();
replaceExpression(conditionalExpression, newStatement);
public BaseInspectionVisitor buildVisitor() {
return new NegatedConditionalVisitor();
}
}

private class NegatedConditionalVisitor extends BaseInspectionVisitor {
@Override
public JComponent createOptionsPanel() {
LocalizeValue message = InspectionGadgetsLocalize.negatedConditionalIgnoreOption();
return new SingleCheckboxOptionsPanel(message.get(), this, "m_ignoreNegatedNullComparison");
}

@Override
public void visitConditionalExpression(PsiConditionalExpression expression) {
super.visitConditionalExpression(expression);
final PsiExpression thenBranch = expression.getThenExpression();
if (thenBranch == null) {
return;
}
final PsiExpression elseBranch = expression.getElseExpression();
if (elseBranch == null) {
return;
}
final PsiExpression condition = expression.getCondition();
if (!ExpressionUtils.isNegation(condition, m_ignoreNegatedNullComparison, false)) {
return;
}
registerError(condition);
protected InspectionGadgetsFix buildFix(Object... infos) {
return new NegatedConditionalFix();
}

private static class NegatedConditionalFix extends InspectionGadgetsFix {
@Nonnull
@Override
public LocalizeValue getName() {
return InspectionGadgetsLocalize.negatedConditionalInvertQuickfix();
}

@Override
public void doFix(Project project, ProblemDescriptor descriptor)
throws IncorrectOperationException {
final PsiElement element = descriptor.getPsiElement();
final PsiConditionalExpression conditionalExpression = (PsiConditionalExpression) element.getParent();
assert conditionalExpression != null;
final PsiExpression elseBranch = conditionalExpression.getElseExpression();
final PsiExpression thenBranch = conditionalExpression.getThenExpression();
final PsiExpression condition = conditionalExpression.getCondition();
final String negatedCondition = BoolUtils.getNegatedExpressionText(condition);
assert elseBranch != null;
assert thenBranch != null;
final String newStatement = negatedCondition + '?' + elseBranch.getText() + ':' + thenBranch.getText();
replaceExpression(conditionalExpression, newStatement);
}
}

private class NegatedConditionalVisitor extends BaseInspectionVisitor {

@Override
public void visitConditionalExpression(PsiConditionalExpression expression) {
super.visitConditionalExpression(expression);
final PsiExpression thenBranch = expression.getThenExpression();
if (thenBranch == null) {
return;
}
final PsiExpression elseBranch = expression.getElseExpression();
if (elseBranch == null) {
return;
}
final PsiExpression condition = expression.getCondition();
if (!ExpressionUtils.isNegation(condition, m_ignoreNegatedNullComparison, false)) {
return;
}
registerError(condition);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import consulo.language.editor.inspection.ProblemDescriptor;
import consulo.language.psi.PsiElement;
import consulo.language.util.IncorrectOperationException;
import consulo.localize.LocalizeValue;
import consulo.project.Project;
import jakarta.annotation.Nonnull;

Expand All @@ -37,92 +38,90 @@
*/
@ExtensionImpl
public class NegatedEqualityExpressionInspection extends BaseInspection {

@Override
@Nonnull
public String getDisplayName() {
return InspectionGadgetsLocalize.negatedEqualityExpressionDisplayName().get();
}

@Nonnull
@Override
protected String buildErrorString(Object... infos) {
return InspectionGadgetsLocalize.negatedEqualityExpressionProblemDescriptor(infos[0]).get();
}

@Override
protected InspectionGadgetsFix buildFix(Object... infos) {
return new NegatedEqualityExpressionFix();
}

private static class NegatedEqualityExpressionFix extends InspectionGadgetsFix {
@Nonnull
@Override
public LocalizeValue getDisplayName() {
return InspectionGadgetsLocalize.negatedEqualityExpressionDisplayName();
}

@Nonnull
@Override
public String getName() {
return InspectionGadgetsLocalize.negatedEqualityExpressionQuickfix().get();
protected String buildErrorString(Object... infos) {
return InspectionGadgetsLocalize.negatedEqualityExpressionProblemDescriptor(infos[0]).get();
}

@Override
protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
final PsiElement element = descriptor.getPsiElement();
final PsiElement parent = element.getParent();
if (!(parent instanceof PsiPrefixExpression)) {
return;
}
final PsiPrefixExpression prefixExpression = (PsiPrefixExpression)parent;
if (!JavaTokenType.EXCL.equals(prefixExpression.getOperationTokenType())) {
return;
}
final PsiExpression operand = ParenthesesUtils.stripParentheses(prefixExpression.getOperand());
if (!(operand instanceof PsiBinaryExpression)) {
return;
}
final PsiBinaryExpression binaryExpression = (PsiBinaryExpression)operand;
final IElementType tokenType = binaryExpression.getOperationTokenType();
StringBuilder text = new StringBuilder(binaryExpression.getLOperand().getText());
if (JavaTokenType.EQEQ.equals(tokenType)) {
text.append("!=");
}
else if (JavaTokenType.NE.equals(tokenType)) {
text.append("==");
}
else {
return;
}
final PsiExpression rhs = binaryExpression.getROperand();
if (rhs != null) {
text.append(rhs.getText());
}
replaceExpression(prefixExpression, text.toString());
protected InspectionGadgetsFix buildFix(Object... infos) {
return new NegatedEqualityExpressionFix();
}
}

@Override
public BaseInspectionVisitor buildVisitor() {
return new NegatedEqualsVisitor();
}
private static class NegatedEqualityExpressionFix extends InspectionGadgetsFix {
@Nonnull
@Override
public LocalizeValue getName() {
return InspectionGadgetsLocalize.negatedEqualityExpressionQuickfix();
}

private static class NegatedEqualsVisitor extends BaseInspectionVisitor {
@Override
protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
final PsiElement element = descriptor.getPsiElement();
final PsiElement parent = element.getParent();
if (!(parent instanceof PsiPrefixExpression)) {
return;
}
final PsiPrefixExpression prefixExpression = (PsiPrefixExpression) parent;
if (!JavaTokenType.EXCL.equals(prefixExpression.getOperationTokenType())) {
return;
}
final PsiExpression operand = ParenthesesUtils.stripParentheses(prefixExpression.getOperand());
if (!(operand instanceof PsiBinaryExpression)) {
return;
}
final PsiBinaryExpression binaryExpression = (PsiBinaryExpression) operand;
final IElementType tokenType = binaryExpression.getOperationTokenType();
StringBuilder text = new StringBuilder(binaryExpression.getLOperand().getText());
if (JavaTokenType.EQEQ.equals(tokenType)) {
text.append("!=");
}
else if (JavaTokenType.NE.equals(tokenType)) {
text.append("==");
}
else {
return;
}
final PsiExpression rhs = binaryExpression.getROperand();
if (rhs != null) {
text.append(rhs.getText());
}
replaceExpression(prefixExpression, text.toString());
}
}

@Override
public void visitPrefixExpression(PsiPrefixExpression expression) {
super.visitPrefixExpression(expression);
if (!JavaTokenType.EXCL.equals(expression.getOperationTokenType())) {
return;
}
final PsiExpression operand = ParenthesesUtils.stripParentheses(expression.getOperand());
if (!(operand instanceof PsiBinaryExpression)) {
return;
}
final PsiBinaryExpression binaryExpression = (PsiBinaryExpression)operand;
final IElementType tokenType = binaryExpression.getOperationTokenType();
if (JavaTokenType.EQEQ.equals(tokenType)) {
registerError(expression.getOperationSign(), "==");
}
else if (JavaTokenType.NE.equals(tokenType)) {
registerError(expression.getOperationSign(), "!=");
}
public BaseInspectionVisitor buildVisitor() {
return new NegatedEqualsVisitor();
}

private static class NegatedEqualsVisitor extends BaseInspectionVisitor {

@Override
public void visitPrefixExpression(PsiPrefixExpression expression) {
super.visitPrefixExpression(expression);
if (!JavaTokenType.EXCL.equals(expression.getOperationTokenType())) {
return;
}
final PsiExpression operand = ParenthesesUtils.stripParentheses(expression.getOperand());
if (!(operand instanceof PsiBinaryExpression)) {
return;
}
final PsiBinaryExpression binaryExpression = (PsiBinaryExpression) operand;
final IElementType tokenType = binaryExpression.getOperationTokenType();
if (JavaTokenType.EQEQ.equals(tokenType)) {
registerError(expression.getOperationSign(), "==");
}
else if (JavaTokenType.NE.equals(tokenType)) {
registerError(expression.getOperationSign(), "!=");
}
}
}
}
}
Loading
Loading