Skip to content

Commit b618c26

Browse files
cirrasfourls
authored andcommitted
Migrate to ArgumentListNode::getArgumentNodes
1 parent 5327397 commit b618c26

File tree

15 files changed

+91
-49
lines changed

15 files changed

+91
-49
lines changed

delphi-checks/src/main/java/au/com/integradev/delphi/checks/AbstractFormatArgumentCheck.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import java.util.List;
2525
import java.util.Optional;
2626
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
27+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2728
import org.sonar.plugins.communitydelphi.api.ast.ArrayConstructorNode;
28-
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
2929
import org.sonar.plugins.communitydelphi.api.ast.ExpressionNode;
3030
import org.sonar.plugins.communitydelphi.api.ast.NameReferenceNode;
3131
import org.sonar.plugins.communitydelphi.api.ast.PrimaryExpressionNode;
@@ -61,7 +61,7 @@ private void checkViolation(NameReferenceNode nameReference, DelphiCheckContext
6161
return;
6262
}
6363

64-
List<ExpressionNode> arguments = argumentList.getArguments();
64+
List<ArgumentNode> arguments = argumentList.getArgumentNodes();
6565
if (arguments.size() < 2) {
6666
return;
6767
}
@@ -90,19 +90,23 @@ protected void checkFormatStringViolation(
9090
ArrayConstructorNode arrayConstructor,
9191
DelphiCheckContext context) {}
9292

93-
private Optional<TextLiteralNode> getLiteralArgument(DelphiNode argument) {
94-
if (argument instanceof PrimaryExpressionNode
95-
&& argument.getChild(0) instanceof TextLiteralNode) {
96-
return Optional.of((TextLiteralNode) argument.getChild(0));
93+
private Optional<TextLiteralNode> getLiteralArgument(ArgumentNode argument) {
94+
ExpressionNode expression = argument.getExpression();
95+
96+
if (expression instanceof PrimaryExpressionNode
97+
&& expression.getChild(0) instanceof TextLiteralNode) {
98+
return Optional.of((TextLiteralNode) expression.getChild(0));
9799
}
98100

99101
return Optional.empty();
100102
}
101103

102-
private Optional<ArrayConstructorNode> getArrayConstructorArgument(DelphiNode argument) {
103-
if (argument instanceof PrimaryExpressionNode
104-
&& argument.getChild(0) instanceof ArrayConstructorNode) {
105-
return Optional.of((ArrayConstructorNode) argument.getChild(0));
104+
private Optional<ArrayConstructorNode> getArrayConstructorArgument(ArgumentNode argument) {
105+
ExpressionNode expression = argument.getExpression();
106+
107+
if (expression instanceof PrimaryExpressionNode
108+
&& expression.getChild(0) instanceof ArrayConstructorNode) {
109+
return Optional.of((ArrayConstructorNode) expression.getChild(0));
106110
}
107111

108112
return Optional.empty();

delphi-checks/src/main/java/au/com/integradev/delphi/checks/AssertMessageCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private static boolean isAssert(NameReferenceNode nameNode) {
5151
private static boolean isMissingErrorMessage(NameReferenceNode nameNode) {
5252
ArgumentListNode argumentList = getArgumentList(nameNode);
5353
if (argumentList != null) {
54-
return argumentList.getArguments().size() < 2;
54+
return argumentList.getArgumentNodes().size() < 2;
5555
}
5656
return false;
5757
}

delphi-checks/src/main/java/au/com/integradev/delphi/checks/AssignedAndFreeCheck.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ private static String findVariableNameForAssigned(ExpressionNode guard) {
8484
Node sibling = guard.getChild(1);
8585
if (sibling instanceof ArgumentListNode) {
8686
ArgumentListNode argumentList = (ArgumentListNode) sibling;
87-
if (!argumentList.getArguments().isEmpty()) {
88-
return argumentList.getChild(0).getImage();
87+
if (!argumentList.isEmpty()) {
88+
return argumentList.getArgumentNodes().get(0).getExpression().getImage();
8989
}
9090
}
9191

delphi-checks/src/main/java/au/com/integradev/delphi/checks/FreeAndNilTObjectCheck.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,16 @@ private static boolean isViolation(PrimaryExpressionNode expression) {
5959
return false;
6060
}
6161

62+
ArgumentListNode argumentList = (ArgumentListNode) expression.getChild(1);
63+
if (argumentList.getArgumentNodes().size() != 1) {
64+
return false;
65+
}
66+
6267
NameDeclaration declaration = reference.getNameDeclaration();
6368
if (declaration instanceof RoutineNameDeclaration) {
6469
RoutineNameDeclaration routine = (RoutineNameDeclaration) declaration;
6570
if (routine.fullyQualifiedName().equals("System.SysUtils.FreeAndNil")) {
66-
ArgumentListNode argumentList = (ArgumentListNode) expression.getChild(1);
67-
ExpressionNode argument = argumentList.getArguments().get(0);
71+
ExpressionNode argument = argumentList.getArgumentNodes().get(0).getExpression();
6872
return !argument.getType().isUnresolved()
6973
&& !argument.getType().isUnknown()
7074
&& !argument.getType().isClass();

delphi-checks/src/main/java/au/com/integradev/delphi/checks/IfThenShortCircuitCheck.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@
2222
import java.util.List;
2323
import java.util.Set;
2424
import java.util.TreeSet;
25+
import java.util.stream.Collectors;
2526
import org.apache.commons.lang3.StringUtils;
2627
import org.sonar.check.Rule;
2728
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
29+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2830
import org.sonar.plugins.communitydelphi.api.ast.BinaryExpressionNode;
2931
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
3032
import org.sonar.plugins.communitydelphi.api.ast.ExpressionNode;
@@ -51,7 +53,11 @@ public DelphiCheckContext visit(NameReferenceNode nameReference, DelphiCheckCont
5153
&& nameReference.getLastName().getIdentifier().getImage().equalsIgnoreCase("IfThen")) {
5254
DelphiNode argumentList = parent.getChild(nameReference.getChildIndex() + 1);
5355
if (argumentList instanceof ArgumentListNode) {
54-
List<ExpressionNode> arguments = ((ArgumentListNode) argumentList).getArguments();
56+
List<ExpressionNode> arguments =
57+
((ArgumentListNode) argumentList)
58+
.getArgumentNodes().stream()
59+
.map(ArgumentNode::getExpression)
60+
.collect(Collectors.toUnmodifiableList());
5561
if (isViolation(arguments)) {
5662
reportIssue(context, nameReference, MESSAGE);
5763
}
@@ -107,8 +113,12 @@ private static Set<String> findImagesInBinaryExpressions(ExpressionNode expressi
107113
&& ((RoutineNameDeclaration) declaration)
108114
.fullyQualifiedName()
109115
.equals("System.Assigned")) {
110-
ExpressionNode argument = ((ArgumentListNode) argumentList).getArguments().get(0);
111-
images.add(argument.getImage());
116+
images.add(
117+
((ArgumentListNode) argumentList)
118+
.getArgumentNodes()
119+
.get(0)
120+
.getExpression()
121+
.getImage());
112122
}
113123
}
114124
}

delphi-checks/src/main/java/au/com/integradev/delphi/checks/InheritedMethodWithNoCodeCheck.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.stream.Stream;
2727
import org.sonar.check.Rule;
2828
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
29+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2930
import org.sonar.plugins.communitydelphi.api.ast.AssignmentStatementNode;
3031
import org.sonar.plugins.communitydelphi.api.ast.CompoundStatementNode;
3132
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
@@ -177,15 +178,19 @@ private static boolean isInheritedCall(RoutineImplementationNode method, Express
177178
private static boolean argumentSignaturesMatch(
178179
RoutineNode routine, ArgumentListNode argumentList) {
179180
List<FormalParameterData> parameters = routine.getParameters();
180-
List<ExpressionNode> arguments =
181-
(argumentList == null) ? Collections.emptyList() : argumentList.getArguments();
181+
List<ArgumentNode> arguments =
182+
(argumentList == null) ? Collections.emptyList() : argumentList.getArgumentNodes();
182183

183184
if (arguments.size() != parameters.size()) {
184185
return false;
185186
}
186187

187188
for (int i = 0; i < arguments.size(); ++i) {
188-
if (!arguments.get(i).getImage().equalsIgnoreCase(parameters.get(i).getImage())) {
189+
if (!arguments
190+
.get(i)
191+
.getExpression()
192+
.getImage()
193+
.equalsIgnoreCase(parameters.get(i).getImage())) {
189194
return false;
190195
}
191196
}

delphi-checks/src/main/java/au/com/integradev/delphi/checks/PlatformDependentCastCheck.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import org.sonar.check.Rule;
2323
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
24+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2425
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
2526
import org.sonar.plugins.communitydelphi.api.ast.ExpressionNode;
2627
import org.sonar.plugins.communitydelphi.api.ast.NameReferenceNode;
@@ -47,9 +48,9 @@ public class PlatformDependentCastCheck extends DelphiCheck {
4748

4849
@Override
4950
public DelphiCheckContext visit(ArgumentListNode argumentList, DelphiCheckContext context) {
50-
List<ExpressionNode> arguments = argumentList.getArguments();
51+
List<ArgumentNode> arguments = argumentList.getArgumentNodes();
5152
if (arguments.size() == 1) {
52-
ExpressionNode expression = arguments.get(0);
53+
ExpressionNode expression = arguments.get(0).getExpression();
5354
if (!ExpressionNodeUtils.isNilLiteral(expression)
5455
&& !ExpressionNodeUtils.isIntegerLiteral(expression)) {
5556
Type originalType = getOriginalType(expression);

delphi-checks/src/main/java/au/com/integradev/delphi/checks/PlatformDependentTruncationCheck.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import org.sonar.check.Rule;
2323
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
24+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2425
import org.sonar.plugins.communitydelphi.api.ast.AssignmentStatementNode;
2526
import org.sonar.plugins.communitydelphi.api.ast.ExpressionNode;
2627
import org.sonar.plugins.communitydelphi.api.ast.NameReferenceNode;
@@ -61,10 +62,10 @@ public DelphiCheckContext visit(ArgumentListNode argumentList, DelphiCheckContex
6162
return super.visit(argumentList, context);
6263
}
6364

64-
List<ExpressionNode> arguments = argumentList.getArguments();
65+
List<ArgumentNode> arguments = argumentList.getArgumentNodes();
6566
List<Parameter> parameters = procedural.parameters();
6667
for (int i = 0; i < arguments.size() && i < parameters.size(); ++i) {
67-
ExpressionNode argument = arguments.get(i);
68+
ExpressionNode argument = arguments.get(i).getExpression();
6869
if (isViolation(argument.getType(), parameters.get(i).getType())) {
6970
reportIssue(context, argument, MESSAGE);
7071
}

delphi-checks/src/main/java/au/com/integradev/delphi/checks/RoutineResultAssignedCheck.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.stream.Collectors;
3030
import org.sonar.check.Rule;
3131
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
32+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
3233
import org.sonar.plugins.communitydelphi.api.ast.AsmStatementNode;
3334
import org.sonar.plugins.communitydelphi.api.ast.AssignmentStatementNode;
3435
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
@@ -101,7 +102,8 @@ public DelphiCheckContext visit(StatementNode statement, DelphiCheckContext cont
101102

102103
@Override
103104
public DelphiCheckContext visit(ArgumentListNode argumentList, DelphiCheckContext context) {
104-
argumentList.getArguments().stream()
105+
argumentList.getArgumentNodes().stream()
106+
.map(ArgumentNode::getExpression)
105107
.map(RoutineResultAssignedCheck::skipParenthesesAndAddressOperators)
106108
.forEach(this::handleResultReference);
107109
return super.visit(argumentList, context);

delphi-checks/src/main/java/au/com/integradev/delphi/utils/CastUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import java.util.Optional;
2323
import org.sonar.plugins.communitydelphi.api.ast.ArgumentListNode;
24+
import org.sonar.plugins.communitydelphi.api.ast.ArgumentNode;
2425
import org.sonar.plugins.communitydelphi.api.ast.BinaryExpressionNode;
2526
import org.sonar.plugins.communitydelphi.api.ast.DelphiNode;
2627
import org.sonar.plugins.communitydelphi.api.ast.ExpressionNode;
@@ -61,11 +62,11 @@ public static Optional<DelphiCast> readHardCast(
6162
}
6263

6364
ArgumentListNode argumentList = (ArgumentListNode) primaryExpression.getChild(1);
64-
List<ExpressionNode> arguments = argumentList.getArguments();
65+
List<ArgumentNode> arguments = argumentList.getArgumentNodes();
6566
if (arguments.size() != 1) {
6667
return Optional.empty();
6768
}
68-
Type originalType = getOriginalType(arguments.get(0));
69+
Type originalType = getOriginalType(arguments.get(0).getExpression());
6970

7071
DelphiNode nameReference = primaryExpression.getChild(0);
7172
Type castedType = getHardCastedType(nameReference, typeFactory);

0 commit comments

Comments
 (0)