semantic
semantic copied to clipboard
PHP dowhile body/condition loops are reversed
I'm using the 'latest' docker tag. PHP dowhile loops have the body/condition inverted (the condition is listed in the body and the body in the condition).
<?php
$i = 0;
$sum = 0;
do{
$sum = $sum + 1;
$i = $i + 1;
}while($i < 3);
Results in the following --json output (note doWhileBody and doWhileCondition.
I'm currently using 'latest' since the current docker listed here https://github.com/github/semantic/packages/11609 does not support --json anymore.
[{'term': 'Empty',
'sourceRange': [10, 10],
'sourceSpan': {'start': [2, 5], 'end': [2, 5]}},
{'term': 'Assignment',
'assignmentContext': [],
'assignmentTarget': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'i',
'sourceRange': [11, 12],
'sourceSpan': {'start': [2, 6], 'end': [2, 7]}},
'sourceRange': [10, 12],
'sourceSpan': {'start': [2, 5], 'end': [2, 7]}},
'assignmentValue': {'term': 'Integer',
'integerContent': '0',
'sourceRange': [15, 16],
'sourceSpan': {'start': [2, 10], 'end': [2, 11]}},
'sourceRange': [10, 16],
'sourceSpan': {'start': [2, 5], 'end': [2, 11]}},
{'term': 'Assignment',
'assignmentContext': [],
'assignmentTarget': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'sum',
'sourceRange': [23, 26],
'sourceSpan': {'start': [3, 6], 'end': [3, 9]}},
'sourceRange': [22, 26],
'sourceSpan': {'start': [3, 5], 'end': [3, 9]}},
'assignmentValue': {'term': 'Integer',
'integerContent': '0',
'sourceRange': [29, 30],
'sourceSpan': {'start': [3, 12], 'end': [3, 13]}},
'sourceRange': [22, 30],
'sourceSpan': {'start': [3, 5], 'end': [3, 13]}},
{'term': 'DoWhile',
'doWhileBody': {'term': 'LessThan',
'lhs': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'i',
'sourceRange': [98, 99],
'sourceSpan': {'start': [7, 13], 'end': [7, 14]}},
'sourceRange': [97, 99],
'sourceSpan': {'start': [7, 12], 'end': [7, 14]}},
'rhs': {'term': 'Integer',
'integerContent': '3',
'sourceRange': [102, 103],
'sourceSpan': {'start': [7, 17], 'end': [7, 18]}},
'sourceRange': [97, 103],
'sourceSpan': {'start': [7, 12], 'end': [7, 18]}},
'doWhileCondition': {'children': [{'term': 'Assignment',
'assignmentContext': [],
'assignmentTarget': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'sum',
'sourceRange': [49, 52],
'sourceSpan': {'start': [5, 10], 'end': [5, 13]}},
'sourceRange': [48, 52],
'sourceSpan': {'start': [5, 9], 'end': [5, 13]}},
'assignmentValue': {'term': 'Plus',
'lhs': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'sum',
'sourceRange': [56, 59],
'sourceSpan': {'start': [5, 17], 'end': [5, 20]}},
'sourceRange': [55, 59],
'sourceSpan': {'start': [5, 16], 'end': [5, 20]}},
'rhs': {'term': 'Integer',
'integerContent': '1',
'sourceRange': [62, 63],
'sourceSpan': {'start': [5, 23], 'end': [5, 24]}},
'sourceRange': [55, 63],
'sourceSpan': {'start': [5, 16], 'end': [5, 24]}},
'sourceRange': [48, 63],
'sourceSpan': {'start': [5, 9], 'end': [5, 24]}},
{'term': 'Assignment',
'assignmentContext': [],
'assignmentTarget': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'i',
'sourceRange': [74, 75],
'sourceSpan': {'start': [6, 10], 'end': [6, 11]}},
'sourceRange': [73, 75],
'sourceSpan': {'start': [6, 9], 'end': [6, 11]}},
'assignmentValue': {'term': 'Plus',
'lhs': {'term': 'VariableName',
'value': {'term': 'Identifier',
'name': 'i',
'sourceRange': [79, 80],
'sourceSpan': {'start': [6, 15], 'end': [6, 16]}},
'sourceRange': [78, 80],
'sourceSpan': {'start': [6, 14], 'end': [6, 16]}},
'rhs': {'term': 'Integer',
'integerContent': '1',
'sourceRange': [83, 84],
'sourceSpan': {'start': [6, 19], 'end': [6, 20]}},
'sourceRange': [78, 84],
'sourceSpan': {'start': [6, 14], 'end': [6, 20]}},
'sourceRange': [73, 84],
'sourceSpan': {'start': [6, 9], 'end': [6, 20]}}],
'sourceRange': [38, 91],
'sourceSpan': {'start': [4, 7], 'end': [7, 6]}},
'sourceRange': [36, 105],
'sourceSpan': {'start': [4, 5], 'end': [7, 20]}},
{'term': 'Empty',
'sourceRange': [105, 105],
'sourceSpan': {'start': [7, 20], 'end': [7, 20]}}]
This may just need a tree-sitter bump.