Merge pull request #294 from TysonAndre/arrow-spread-operator

Support the array spread operator
This commit is contained in:
Rob Lourens 2019-06-30 18:56:09 -07:00 коммит произвёл GitHub
Родитель 5457e822b2 3f4f381cf3
Коммит 0cf8b8450a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
125 изменённых файлов: 1059 добавлений и 1 удалений

Просмотреть файл

@ -20,6 +20,9 @@ class ArrayElement extends Node {
/** @var Token|null */
public $byRef;
/** @var Token|null if this is set for PHP 7.4's array spread operator, then other preceding tokens aren't */
public $dotDotDot;
/** @var Expression */
public $elementValue;
@ -27,6 +30,7 @@ class ArrayElement extends Node {
'elementKey',
'arrowToken',
'byRef',
'dotDotDot',
'elementValue'
];
}

Просмотреть файл

@ -2324,7 +2324,7 @@ class Parser {
private function isArrayElementStartFn() {
return function ($token) {
return $token->kind === TokenKind::AmpersandToken || $this->isExpressionStart($token);
return $token->kind === TokenKind::AmpersandToken || $token->kind === TokenKind::DotDotDotToken || $this->isExpressionStart($token);
};
}
@ -2340,6 +2340,9 @@ class Parser {
if ($this->checkToken(TokenKind::AmpersandToken)) {
$arrayElement->byRef = $this->eat1(TokenKind::AmpersandToken);
$arrayElement->elementValue = $this->parseExpression($arrayElement);
} elseif ($this->checkToken(TokenKind::DotDotDotToken)) {
$arrayElement->dotDotDot = $this->eat1(TokenKind::DotDotDotToken);
$arrayElement->elementValue = $this->parseExpression($arrayElement);
} else {
$expression = $this->parseExpression($arrayElement);
if ($this->checkToken(TokenKind::DoubleArrowToken)) {

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -48,6 +49,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -74,6 +76,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -58,6 +60,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -58,6 +60,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -48,6 +49,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -68,6 +70,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -68,6 +69,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -98,6 +100,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -74,6 +76,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -40,6 +40,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -58,6 +59,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -68,6 +69,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -98,6 +100,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -38,6 +38,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -68,6 +69,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -114,6 +116,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -54,6 +54,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -84,6 +85,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -114,6 +116,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -31,6 +31,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -32,6 +32,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -42,6 +42,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -36,6 +36,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -28,6 +28,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
@ -43,6 +44,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -80,6 +82,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -67,6 +69,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -67,6 +69,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -71,6 +73,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -32,6 +32,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -52,6 +53,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -71,6 +72,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -101,6 +103,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -80,6 +82,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -61,6 +62,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -71,6 +72,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -101,6 +103,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -71,6 +72,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -117,6 +119,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -57,6 +57,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -87,6 +88,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -117,6 +119,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -34,6 +34,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -35,6 +35,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -45,6 +45,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -34,6 +34,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -39,6 +39,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -49,6 +50,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -0,0 +1,4 @@
<?php
$a = [...$argv];
$a = array('first', ...['other'], 'rest');
[...'error but parseable'];

Просмотреть файл

@ -0,0 +1 @@
[]

Просмотреть файл

@ -0,0 +1,273 @@
{
"SourceFileNode": {
"statementList": [
{
"InlineHtml": {
"scriptSectionEndTag": null,
"text": null,
"scriptSectionStartTag": {
"kind": "ScriptSectionStartTag",
"textLength": 6
}
}
},
{
"ExpressionStatement": {
"expression": {
"AssignmentExpression": {
"leftOperand": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 2
}
}
},
"operator": {
"kind": "EqualsToken",
"textLength": 1
},
"byRef": null,
"rightOperand": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 5
}
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
}
}
},
"semicolon": {
"kind": "SemicolonToken",
"textLength": 1
}
}
},
{
"ExpressionStatement": {
"expression": {
"AssignmentExpression": {
"leftOperand": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 2
}
}
},
"operator": {
"kind": "EqualsToken",
"textLength": 1
},
"byRef": null,
"rightOperand": {
"ArrayCreationExpression": {
"arrayKeyword": {
"kind": "ArrayKeyword",
"textLength": 5
},
"openParenOrBracket": {
"kind": "OpenParenToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"StringLiteral": {
"startQuote": null,
"children": {
"kind": "StringLiteralToken",
"textLength": 7
},
"endQuote": null
}
}
}
},
{
"kind": "CommaToken",
"textLength": 1
},
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"StringLiteral": {
"startQuote": null,
"children": {
"kind": "StringLiteralToken",
"textLength": 7
},
"endQuote": null
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
}
}
},
{
"kind": "CommaToken",
"textLength": 1
},
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"StringLiteral": {
"startQuote": null,
"children": {
"kind": "StringLiteralToken",
"textLength": 6
},
"endQuote": null
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseParenToken",
"textLength": 1
}
}
}
}
},
"semicolon": {
"kind": "SemicolonToken",
"textLength": 1
}
}
},
{
"ExpressionStatement": {
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"StringLiteral": {
"startQuote": null,
"children": {
"kind": "StringLiteralToken",
"textLength": 21
},
"endQuote": null
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
},
"semicolon": {
"kind": "SemicolonToken",
"textLength": 1
}
}
}
],
"endOfFileToken": {
"kind": "EndOfFileToken",
"textLength": 0
}
}
}

Просмотреть файл

@ -0,0 +1,5 @@
<?php
// This should detect and handle the syntax errors in the following expressions
['key' => ...$argv]
array(=> ...[])
[...];

Просмотреть файл

@ -0,0 +1,80 @@
[
{
"kind": 0,
"message": "'Expression' expected.",
"start": 95,
"length": 0
},
{
"kind": 0,
"message": "']' expected.",
"start": 95,
"length": 0
},
{
"kind": 0,
"message": "';' expected.",
"start": 95,
"length": 0
},
{
"kind": 0,
"message": "Unexpected '...'",
"start": 96,
"length": 3
},
{
"kind": 0,
"message": "';' expected.",
"start": 104,
"length": 0
},
{
"kind": 0,
"message": "Unexpected ']'",
"start": 104,
"length": 1
},
{
"kind": 0,
"message": "')' expected.",
"start": 112,
"length": 0
},
{
"kind": 0,
"message": "';' expected.",
"start": 112,
"length": 0
},
{
"kind": 0,
"message": "Unexpected '=>'",
"start": 112,
"length": 2
},
{
"kind": 0,
"message": "Unexpected '...'",
"start": 115,
"length": 3
},
{
"kind": 0,
"message": "';' expected.",
"start": 120,
"length": 0
},
{
"kind": 0,
"message": "Unexpected ')'",
"start": 120,
"length": 1
},
{
"kind": 0,
"message": "'Expression' expected.",
"start": 126,
"length": 0
}
]

Просмотреть файл

@ -0,0 +1,210 @@
{
"SourceFileNode": {
"statementList": [
{
"InlineHtml": {
"scriptSectionEndTag": null,
"text": null,
"scriptSectionStartTag": {
"kind": "ScriptSectionStartTag",
"textLength": 6
}
}
},
{
"ExpressionStatement": {
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": {
"StringLiteral": {
"startQuote": null,
"children": {
"kind": "StringLiteralToken",
"textLength": 5
},
"endQuote": null
}
},
"arrowToken": {
"kind": "DoubleArrowToken",
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"error": "MissingToken",
"kind": "Expression",
"textLength": 0
}
}
}
]
}
},
"closeParenOrBracket": {
"error": "MissingToken",
"kind": "CloseBracketToken",
"textLength": 0
}
}
},
"semicolon": {
"error": "MissingToken",
"kind": "SemicolonToken",
"textLength": 0
}
}
},
{
"error": "SkippedToken",
"kind": "DotDotDotToken",
"textLength": 3
},
{
"ExpressionStatement": {
"expression": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 5
}
}
},
"semicolon": {
"error": "MissingToken",
"kind": "SemicolonToken",
"textLength": 0
}
}
},
{
"error": "SkippedToken",
"kind": "CloseBracketToken",
"textLength": 1
},
{
"ExpressionStatement": {
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": {
"kind": "ArrayKeyword",
"textLength": 5
},
"openParenOrBracket": {
"kind": "OpenParenToken",
"textLength": 1
},
"arrayElements": null,
"closeParenOrBracket": {
"error": "MissingToken",
"kind": "CloseParenToken",
"textLength": 0
}
}
},
"semicolon": {
"error": "MissingToken",
"kind": "SemicolonToken",
"textLength": 0
}
}
},
{
"error": "SkippedToken",
"kind": "DoubleArrowToken",
"textLength": 2
},
{
"error": "SkippedToken",
"kind": "DotDotDotToken",
"textLength": 3
},
{
"ExpressionStatement": {
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": null,
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
},
"semicolon": {
"error": "MissingToken",
"kind": "SemicolonToken",
"textLength": 0
}
}
},
{
"error": "SkippedToken",
"kind": "CloseParenToken",
"textLength": 1
},
{
"ExpressionStatement": {
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"error": "MissingToken",
"kind": "Expression",
"textLength": 0
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
},
"semicolon": {
"kind": "SemicolonToken",
"textLength": 1
}
}
}
],
"endOfFileToken": {
"kind": "EndOfFileToken",
"textLength": 0
}
}
}

Просмотреть файл

@ -0,0 +1,4 @@
<?php
// Can be parsed, but causes "Fatal error: Spread operator is not supported in assignments"
foreach ([[1]] as [...$x]) {}
list(...$x) = [1, 2];

Просмотреть файл

@ -0,0 +1 @@
[]

Просмотреть файл

@ -0,0 +1,277 @@
{
"SourceFileNode": {
"statementList": [
{
"InlineHtml": {
"scriptSectionEndTag": null,
"text": null,
"scriptSectionStartTag": {
"kind": "ScriptSectionStartTag",
"textLength": 6
}
}
},
{
"ForeachStatement": {
"foreach": {
"kind": "ForeachKeyword",
"textLength": 7
},
"openParen": {
"kind": "OpenParenToken",
"textLength": 1
},
"forEachCollectionName": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
"kind": "IntegerLiteralToken",
"textLength": 1
}
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
},
"asKeyword": {
"kind": "AsKeyword",
"textLength": 2
},
"foreachKey": null,
"foreachValue": {
"ForeachValue": {
"ampersand": null,
"expression": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 2
}
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
}
}
},
"closeParen": {
"kind": "CloseParenToken",
"textLength": 1
},
"colon": null,
"statements": {
"CompoundStatementNode": {
"openBrace": {
"kind": "OpenBraceToken",
"textLength": 1
},
"statements": [],
"closeBrace": {
"kind": "CloseBraceToken",
"textLength": 1
}
}
},
"endForeach": null,
"endForeachSemicolon": null
}
},
{
"ExpressionStatement": {
"expression": {
"AssignmentExpression": {
"leftOperand": {
"ListIntrinsicExpression": {
"listKeyword": {
"kind": "ListKeyword",
"textLength": 4
},
"openParen": {
"kind": "OpenParenToken",
"textLength": 1
},
"listElements": {
"ListExpressionList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": {
"kind": "DotDotDotToken",
"textLength": 3
},
"elementValue": {
"Variable": {
"dollar": null,
"name": {
"kind": "VariableName",
"textLength": 2
}
}
}
}
}
]
}
},
"closeParen": {
"kind": "CloseParenToken",
"textLength": 1
}
}
},
"operator": {
"kind": "EqualsToken",
"textLength": 1
},
"byRef": null,
"rightOperand": {
"ArrayCreationExpression": {
"arrayKeyword": null,
"openParenOrBracket": {
"kind": "OpenBracketToken",
"textLength": 1
},
"arrayElements": {
"ArrayElementList": {
"children": [
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
"kind": "IntegerLiteralToken",
"textLength": 1
}
}
}
}
},
{
"kind": "CommaToken",
"textLength": 1
},
{
"ArrayElement": {
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
"kind": "IntegerLiteralToken",
"textLength": 1
}
}
}
}
}
]
}
},
"closeParenOrBracket": {
"kind": "CloseBracketToken",
"textLength": 1
}
}
}
}
},
"semicolon": {
"kind": "SemicolonToken",
"textLength": 1
}
}
}
],
"endOfFileToken": {
"kind": "EndOfFileToken",
"textLength": 0
}
}
}

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -53,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -109,6 +111,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -127,6 +130,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -109,6 +111,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -127,6 +130,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -69,6 +71,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -138,6 +141,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -156,6 +160,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -69,6 +71,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -138,6 +141,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -156,6 +160,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ArrayCreationExpression": {
"arrayKeyword": {
@ -174,6 +179,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -53,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -73,6 +75,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -116,6 +119,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
@ -135,6 +139,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
@ -154,6 +159,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
@ -173,6 +179,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -32,6 +32,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -52,6 +53,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {
@ -75,6 +76,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -73,6 +74,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -103,6 +105,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -82,6 +84,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -45,6 +45,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -63,6 +64,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -43,6 +43,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -73,6 +74,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,
@ -103,6 +105,7 @@
"textLength": 2
},
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -34,6 +34,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -37,6 +37,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -45,6 +45,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -34,6 +34,7 @@
"kind": "AmpersandToken",
"textLength": 1
},
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -41,6 +41,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -51,6 +52,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -61,6 +61,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"ListIntrinsicExpression": {
"listKeyword": {
@ -79,6 +80,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"Variable": {
"dollar": null,

Просмотреть файл

@ -31,6 +31,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -45,6 +45,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -33,6 +33,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -24,6 +24,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"NumericLiteral": {
"children": {

Просмотреть файл

@ -58,6 +58,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"error": "MissingToken",
"kind": "Expression",

Просмотреть файл

@ -54,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -54,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -54,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"BinaryExpression": {
"leftOperand": {

Просмотреть файл

@ -54,6 +54,7 @@
"elementKey": null,
"arrowToken": null,
"byRef": null,
"dotDotDot": null,
"elementValue": {
"PostfixUpdateExpression": {
"operand": {

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше