Skip to content

Commit 284a4c8

Browse files
committed
SONARJAVA-1227 Expose kind() in Tree interface
1 parent 5a35690 commit 284a4c8

71 files changed

Lines changed: 111 additions & 113 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

java-checks/src/main/java/org/sonar/java/checks/AssignmentInSubExpressionCheck.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,13 @@ private static AssignmentExpressionTree getInnerAssignmentExpression(ExpressionT
119119
}
120120

121121
private static boolean isRelationalExpression(Tree tree) {
122-
return tree.is(Kind.EQUAL_TO) ||
123-
tree.is(Kind.NOT_EQUAL_TO) ||
124-
tree.is(Kind.LESS_THAN) ||
125-
tree.is(Kind.LESS_THAN_OR_EQUAL_TO) ||
126-
tree.is(Kind.GREATER_THAN) ||
127-
tree.is(Kind.GREATER_THAN_OR_EQUAL_TO);
122+
return tree.is(
123+
Kind.EQUAL_TO,
124+
Kind.NOT_EQUAL_TO,
125+
Kind.LESS_THAN,
126+
Kind.LESS_THAN_OR_EQUAL_TO,
127+
Kind.GREATER_THAN,
128+
Kind.GREATER_THAN_OR_EQUAL_TO);
128129
}
129130

130131
@Override

java-checks/src/main/java/org/sonar/java/checks/CastArithmeticOperandCheck.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.sonar.api.server.rule.RulesDefinition;
2525
import org.sonar.check.Priority;
2626
import org.sonar.check.Rule;
27-
import org.sonar.java.model.JavaTree;
2827
import org.sonar.java.model.declaration.MethodTreeImpl;
2928
import org.sonar.plugins.java.api.semantic.Symbol;
3029
import org.sonar.plugins.java.api.semantic.Type;
@@ -40,7 +39,6 @@
4039
import org.sonar.squidbridge.annotations.SqaleSubCharacteristic;
4140

4241
import javax.annotation.Nullable;
43-
4442
import java.util.List;
4543
import java.util.Map;
4644

@@ -109,7 +107,7 @@ private void checkMethodInvocationArgument(MethodInvocationTree mit) {
109107

110108
private void checkExpression(Type varType, @Nullable ExpressionTree expr) {
111109
if (isVarTypeErrorProne(varType) && expressionIsOperationToInt(expr)) {
112-
addIssue(expr, "Cast one of the operands of this " + OPERATION_BY_KIND.get(((JavaTree) expr).getKind()) + " operation to a \"" + varType.name() + "\".");
110+
addIssue(expr, "Cast one of the operands of this " + OPERATION_BY_KIND.get(expr.kind()) + " operation to a \"" + varType.name() + "\".");
113111
}
114112
}
115113

java-checks/src/main/java/org/sonar/java/checks/ConstantsShouldBeStaticFinalCheck.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
3737
import org.sonar.squidbridge.annotations.SqaleSubCharacteristic;
3838

39+
import java.util.Arrays;
3940
import java.util.Iterator;
4041
import java.util.List;
4142

@@ -110,10 +111,8 @@ private static boolean hasConstantInitializer(VariableTree variableTree) {
110111
}
111112

112113
private static boolean containsChildrenOfKind(JavaTree tree, Tree.Kind... kinds) {
113-
for (Tree.Kind kind : kinds) {
114-
if (tree.is(kind)) {
115-
return true;
116-
}
114+
if (Arrays.asList(kinds).contains(tree.kind())) {
115+
return true;
117116
}
118117
if (!tree.isLeaf()) {
119118
Iterator<Tree> treeIterator = tree.childrenIterator();

java-checks/src/main/java/org/sonar/java/checks/FloatEqualityCheck.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.sonar.api.server.rule.RulesDefinition;
2424
import org.sonar.check.Priority;
2525
import org.sonar.check.Rule;
26-
import org.sonar.java.model.JavaTree;
2726
import org.sonar.java.model.SyntacticEquivalence;
2827
import org.sonar.plugins.java.api.semantic.Type;
2928
import org.sonar.plugins.java.api.tree.BinaryExpressionTree;
@@ -71,7 +70,7 @@ private static boolean isIndirectEquality(BinaryExpressionTree binaryExpressionT
7170
BinaryExpressionTree leftOp = (BinaryExpressionTree) binaryExpressionTree.leftOperand();
7271
if (binaryExpressionTree.rightOperand().is(comparator1, comparator2)) {
7372
BinaryExpressionTree rightOp = (BinaryExpressionTree) binaryExpressionTree.rightOperand();
74-
if (((JavaTree) leftOp).getKind().equals(((JavaTree) rightOp).getKind())) {
73+
if (leftOp.kind().equals(rightOp.kind())) {
7574
//same operator
7675
return SyntacticEquivalence.areEquivalent(leftOp.leftOperand(), rightOp.rightOperand())
7776
&& SyntacticEquivalence.areEquivalent(leftOp.rightOperand(), rightOp.leftOperand());

java-checks/src/main/java/org/sonar/java/checks/ForLoopFalseConditionCheck.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,22 @@ private static boolean isConditionFalseAtInitialization(ForStatementTree forStat
8989
}
9090

9191
private static boolean evaluateCondition(ExpressionTree condition, int leftOperand, int rightOperand) {
92-
boolean conditionValue = true;
93-
if (condition.is(Tree.Kind.GREATER_THAN)) {
94-
conditionValue = leftOperand > rightOperand;
95-
} else if (condition.is(Tree.Kind.GREATER_THAN_OR_EQUAL_TO)) {
96-
conditionValue = leftOperand >= rightOperand;
97-
} else if (condition.is(Tree.Kind.LESS_THAN)) {
98-
conditionValue = leftOperand < rightOperand;
99-
} else if (condition.is(Tree.Kind.LESS_THAN_OR_EQUAL_TO)) {
100-
conditionValue = leftOperand <= rightOperand;
92+
boolean conditionValue;
93+
switch (condition.kind()) {
94+
case GREATER_THAN:
95+
conditionValue = leftOperand > rightOperand;
96+
break;
97+
case GREATER_THAN_OR_EQUAL_TO:
98+
conditionValue = leftOperand >= rightOperand;
99+
break;
100+
case LESS_THAN:
101+
conditionValue = leftOperand < rightOperand;
102+
break;
103+
case LESS_THAN_OR_EQUAL_TO:
104+
conditionValue = leftOperand <= rightOperand;
105+
break;
106+
default:
107+
conditionValue = true;
101108
}
102109
return conditionValue;
103110
}

java-checks/src/main/java/org/sonar/java/checks/HiddenFieldCheck.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,11 @@ private void visitChildren(Tree tree) {
185185
}
186186

187187
private boolean isSubscribed(Tree tree) {
188-
return visitNodes.contains(((JavaTree) tree).getKind());
188+
return visitNodes.contains(tree.kind());
189189
}
190190

191191
private boolean isExcluded(Tree tree) {
192-
return excludedNodes.contains(((JavaTree) tree).getKind());
192+
return excludedNodes.contains(tree.kind());
193193
}
194194
}
195195

java-checks/src/main/java/org/sonar/java/checks/IdenticalOperandOnBinaryExpressionCheck.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.sonar.api.server.rule.RulesDefinition;
2424
import org.sonar.check.Priority;
2525
import org.sonar.check.Rule;
26-
import org.sonar.java.model.JavaTree;
2726
import org.sonar.java.model.SyntacticEquivalence;
2827
import org.sonar.plugins.java.api.semantic.Type;
2928
import org.sonar.plugins.java.api.tree.BinaryExpressionTree;
@@ -94,7 +93,7 @@ public static boolean hasEquivalentOperand(BinaryExpressionTree tree) {
9493
if (isNanTest(tree) || isLeftShiftOnOne(tree)) {
9594
return false;
9695
}
97-
Tree.Kind binaryKind = ((JavaTree) tree).getKind();
96+
Tree.Kind binaryKind = tree.kind();
9897
return areOperandEquivalent(tree.leftOperand(), tree.rightOperand(), binaryKind);
9998
}
10099

java-checks/src/main/java/org/sonar/java/checks/MissingCurlyBraces_S00121_Check.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.sonar.api.server.rule.RulesDefinition;
2424
import org.sonar.check.Priority;
2525
import org.sonar.check.Rule;
26-
import org.sonar.java.model.JavaTree;
2726
import org.sonar.plugins.java.api.tree.DoWhileStatementTree;
2827
import org.sonar.plugins.java.api.tree.ForEachStatement;
2928
import org.sonar.plugins.java.api.tree.ForStatementTree;
@@ -52,7 +51,7 @@ public List<Tree.Kind> nodesToVisit() {
5251

5352
@Override
5453
public void visitNode(Tree tree) {
55-
switch (((JavaTree) tree).getKind()) {
54+
switch (tree.kind()) {
5655
case WHILE_STATEMENT:
5756
checkStatement(((WhileStatementTree) tree).statement(), tree);
5857
break;

java-checks/src/main/java/org/sonar/java/checks/OperatorPrecedenceCheck.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.sonar.api.server.rule.RulesDefinition;
2828
import org.sonar.check.Priority;
2929
import org.sonar.check.Rule;
30-
import org.sonar.java.model.JavaTree;
3130
import org.sonar.java.syntaxtoken.FirstSyntaxTokenFinder;
3231
import org.sonar.plugins.java.api.JavaFileScanner;
3332
import org.sonar.plugins.java.api.JavaFileScannerContext;
@@ -148,7 +147,7 @@ public void visitArrayAccessExpression(ArrayAccessExpressionTree tree) {
148147
@Override
149148
public void visitBinaryExpression(BinaryExpressionTree tree) {
150149
Tree.Kind peek = stack.peek();
151-
Tree.Kind kind = getKind(tree);
150+
Tree.Kind kind = tree.kind();
152151
if (requiresParenthesis(peek, kind)) {
153152
raiseIssue(tree.operatorToken().line(), tree);
154153
}
@@ -165,7 +164,7 @@ private static boolean requiresParenthesis(Tree.Kind kind1, Tree.Kind kind2) {
165164
public void visitIfStatement(IfStatementTree tree) {
166165
super.visitIfStatement(tree);
167166
ExpressionTree condition = tree.condition();
168-
if (condition.is(Tree.Kind.ASSIGNMENT) && EQUALITY_RELATIONAL_OPERATORS.contains(getKind(((AssignmentExpressionTree) condition).expression()))) {
167+
if (condition.is(Tree.Kind.ASSIGNMENT) && EQUALITY_RELATIONAL_OPERATORS.contains(((AssignmentExpressionTree) condition).expression().kind())) {
169168
raiseIssue(((AssignmentExpressionTree) condition).operatorToken().line(), tree);
170169
}
171170
}
@@ -221,8 +220,4 @@ private void raiseIssue(int line, Tree tree) {
221220
}
222221
}
223222

224-
private static Tree.Kind getKind(Tree tree) {
225-
return ((JavaTree) tree).getKind();
226-
}
227-
228223
}

java-squid/src/main/java/org/sonar/java/ast/parser/ArgumentListTreeImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public SyntaxToken closeParenToken() {
7575
}
7676

7777
@Override
78-
public Tree.Kind getKind() {
78+
public Tree.Kind kind() {
7979
return Tree.Kind.ARGUMENTS;
8080
}
8181

0 commit comments

Comments
 (0)