Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -814,9 +814,11 @@ private static Expression getBinaryExpression(@NotNull PsiBinaryExpression eleme
@Nullable PsiLiteralExpression literalExpression = (PsiLiteralExpression) (element
.getLOperand() instanceof PsiLiteralExpression
? element.getLOperand() : element.getROperand());

if (literalExpression != null && literalExpression.getText().equals("0")
|| literalExpression != null && literalExpression.getText().equals("-1")
|| literalExpression != null && literalExpression.getText().equals("1")) {

@NotNull Optional<PsiElement> identifier = Stream.of(methodCallExpression.getMethodExpression().getChildren())
.filter(c -> c instanceof PsiIdentifier).findAny();
if (identifier.isPresent() && identifier.get().getText().equals("compareTo") && methodCallExpression.getArgumentList().getExpressions().length == 1) {
Expand All @@ -831,39 +833,68 @@ private static Expression getBinaryExpression(@NotNull PsiBinaryExpression eleme
if (qualifier != null) {
@NotNull Expression argument = getAnyExpression(methodCallExpression.getArgumentList()
.getExpressions()[0], document);
switch (element.getOperationSign().getText()) {
case "==":
switch (literalExpression.getText()) {
case "-1":
return new Less(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "0":
return new Equal(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "1":
return new Greater(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
case "!=":
switch (literalExpression.getText()) {
case "1":
return new LessEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "0":
return new NotEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "-1":
return new GreaterEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
case "<":
switch (literalExpression.getText()) {
case "1":
return new LessEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "0":
return new Less(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
case ">":
switch (literalExpression.getText()) {
case "-1":
return new GreaterEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case "0":
return new Greater(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}

String operationSign = element.getOperationSign().getText();

int expression = Integer.parseInt(literalExpression.getText());
String lessOperation = "<";
String greaterOperation = ">";
if (literalExpression == element.getLOperand()) {
lessOperation = ">";
greaterOperation = "<";
}

if (operationSign.equals("==")) {
switch (expression) {
case -1:
return new Less(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new Equal(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 1:
return new Greater(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
} else if (operationSign.equals("!=")) {
switch (expression) {
case 1:
return new LessEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new NotEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case -1:
return new GreaterEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}

}
else if(operationSign.equals(lessOperation)) {
switch (expression) {
case 1:
return new LessEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new Less(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
}
else if(operationSign.equals(greaterOperation)) {
switch (expression) {
case -1:
return new GreaterEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new Greater(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
}
else if(operationSign.equals(lessOperation + "=")) {
switch (expression) {
case -1:
return new Less(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new LessEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
}
else if(operationSign.equals(greaterOperation + "=")) {
switch (expression) {
case 1:
return new Greater(element, element.getTextRange(), Arrays.asList(qualifier, argument));
case 0:
return new GreaterEqual(element, element.getTextRange(), Arrays.asList(qualifier, argument));
}
}
}
}
Expand Down