mirror of
https://github.com/github/codeql.git
synced 2026-04-30 19:26:02 +02:00
TS: reorganize convertBinaryExpression and create AssignmentExpression when appropriate
This commit is contained in:
@@ -826,8 +826,9 @@ public class TypeScriptASTConverter {
|
||||
Expression left = convertChild(node, "left");
|
||||
Expression right = convertChild(node, "right");
|
||||
JsonObject operatorToken = node.get("operatorToken").getAsJsonObject();
|
||||
String operatorKind = getKind(operatorToken);
|
||||
if ("CommaToken".equals(operatorKind)) {
|
||||
String operator = getSourceLocation(operatorToken).getSource();
|
||||
switch (operator) {
|
||||
case ",":
|
||||
List<Expression> expressions = new ArrayList<Expression>();
|
||||
if (left instanceof SequenceExpression)
|
||||
expressions.addAll(((SequenceExpression) left).getExpressions());
|
||||
@@ -838,13 +839,30 @@ public class TypeScriptASTConverter {
|
||||
else
|
||||
expressions.add(right);
|
||||
return new SequenceExpression(loc, expressions);
|
||||
} else {
|
||||
String operator = getSourceLocation(operatorToken).getSource();
|
||||
if ("||".equals(operator) || "&&".equals(operator)) {
|
||||
return new LogicalExpression(loc, operator, left, right);
|
||||
}
|
||||
if ("EqualsToken".equals(operatorKind))
|
||||
left = convertLValue(left);
|
||||
|
||||
case "||":
|
||||
case "&&":
|
||||
return new LogicalExpression(loc, operator, left, right);
|
||||
|
||||
case "=":
|
||||
left = convertLValue(left); // For plain assignments, the lhs can be a destructuring pattern.
|
||||
return new AssignmentExpression(loc, operator, left, right);
|
||||
|
||||
case "+=":
|
||||
case "-=":
|
||||
case "*=":
|
||||
case "**=":
|
||||
case "/=":
|
||||
case "%=":
|
||||
case "^=":
|
||||
case "&=":
|
||||
case "|=":
|
||||
case ">>=":
|
||||
case "<<=":
|
||||
case ">>>=":
|
||||
return new AssignmentExpression(loc, operator, convertLValue(left), right);
|
||||
|
||||
default:
|
||||
return new BinaryExpression(loc, operator, left, right);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,11 +326,11 @@ hasLocation(#20098,#20096)
|
||||
exit_cfg_node(#20099,#20004)
|
||||
hasLocation(#20099,#20094)
|
||||
successor(#20012,#20017)
|
||||
successor(#20033,#20037)
|
||||
successor(#20043,#20035)
|
||||
successor(#20033,#20043)
|
||||
successor(#20037,#20039)
|
||||
successor(#20041,#20043)
|
||||
successor(#20041,#20035)
|
||||
successor(#20039,#20041)
|
||||
successor(#20043,#20037)
|
||||
successor(#20035,#20099)
|
||||
successor(#20025,#20027)
|
||||
successor(#20027,#20029)
|
||||
|
||||
Reference in New Issue
Block a user