Skip to content

Commit 9fda41a

Browse files
committed
Convert UnsetIntrinsicExpression to UnsetStatement
1 parent d536a80 commit 9fda41a

14 files changed

+362
-420
lines changed

src/Node/Expression/UnsetIntrinsicExpression.php renamed to src/Node/Statement/UnsetStatement.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
* Licensed under the MIT License. See License.txt in the project root for license information.
55
*--------------------------------------------------------------------------------------------*/
66

7-
namespace Microsoft\PhpParser\Node\Expression;
7+
namespace Microsoft\PhpParser\Node\Statement;
88

99
use Microsoft\PhpParser\Node\DelimitedList;
1010
use Microsoft\PhpParser\Node\Expression;
1111
use Microsoft\PhpParser\Token;
1212

13-
class UnsetIntrinsicExpression extends Expression {
13+
class UnsetStatement extends Expression {
1414

1515
/** @var Token */
1616
public $unsetKeyword;
@@ -24,10 +24,14 @@ class UnsetIntrinsicExpression extends Expression {
2424
/** @var Token */
2525
public $closeParen;
2626

27+
/** @var Token */
28+
public $semicolon;
29+
2730
const CHILD_NAMES = [
2831
'unsetKeyword',
2932
'openParen',
3033
'expressions',
31-
'closeParen'
34+
'closeParen',
35+
'semicolon',
3236
];
3337
}

src/Parser.php

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
ThrowExpression,
4949
UnaryExpression,
5050
UnaryOpExpression,
51-
UnsetIntrinsicExpression,
5251
Variable,
5352
YieldExpression
5453
};
@@ -103,6 +102,7 @@
103102
SwitchStatementNode,
104103
TraitDeclaration,
105104
TryStatement,
105+
UnsetStatement,
106106
WhileStatement
107107
};
108108
use Microsoft\PhpParser\Node\TraitMembers;
@@ -2604,20 +2604,6 @@ private function parseEchoStatement($parentNode) {
26042604
return $echoStatement;
26052605
}
26062606

2607-
/** @return ExpressionStatement */
2608-
private function parseUnsetStatement($parentNode) {
2609-
$expressionStatement = new ExpressionStatement();
2610-
2611-
// FIXME: flatten into UnsetStatement instead?
2612-
$unsetExpression = $this->parseUnsetIntrinsicExpression($expressionStatement);
2613-
2614-
$expressionStatement->parent = $parentNode;
2615-
$expressionStatement->expression = $unsetExpression;
2616-
$expressionStatement->semicolon = $this->eatSemicolonOrAbortStatement();
2617-
2618-
return $expressionStatement;
2619-
}
2620-
26212607
private function parseListIntrinsicExpression($parentNode) {
26222608
$listExpression = new ListIntrinsicExpression();
26232609
$listExpression->parent = $parentNode;
@@ -2682,16 +2668,16 @@ private function parseExpressionList($parentExpression) {
26822668
);
26832669
}
26842670

2685-
private function parseUnsetIntrinsicExpression($parentNode) {
2686-
$unsetExpression = new UnsetIntrinsicExpression();
2687-
$unsetExpression->parent = $parentNode;
2688-
2689-
$unsetExpression->unsetKeyword = $this->eat1(TokenKind::UnsetKeyword);
2690-
$unsetExpression->openParen = $this->eat1(TokenKind::OpenParenToken);
2691-
$unsetExpression->expressions = $this->parseExpressionList($unsetExpression);
2692-
$unsetExpression->closeParen = $this->eat1(TokenKind::CloseParenToken);
2693-
2694-
return $unsetExpression;
2671+
private function parseUnsetStatement($parentNode) {
2672+
$unsetStatement = new UnsetStatement();
2673+
$unsetStatement->parent = $parentNode;
2674+
2675+
$unsetStatement->unsetKeyword = $this->eat1(TokenKind::UnsetKeyword);
2676+
$unsetStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
2677+
$unsetStatement->expressions = $this->parseExpressionList($unsetStatement);
2678+
$unsetStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
2679+
$unsetStatement->semicolon = $this->eatSemicolonOrAbortStatement();
2680+
return $unsetStatement;
26952681
}
26962682

26972683
private function parseArrayCreationExpression($parentNode) {

tests/cases/parser/unsetIntrinsicExpression1.php.tree

Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,51 +12,47 @@
1212
}
1313
},
1414
{
15-
"ExpressionStatement": {
16-
"expression": {
17-
"UnsetIntrinsicExpression": {
18-
"unsetKeyword": {
19-
"kind": "UnsetKeyword",
20-
"textLength": 5
21-
},
22-
"openParen": {
23-
"kind": "OpenParenToken",
24-
"textLength": 1
25-
},
26-
"expressions": {
27-
"ExpressionList": {
28-
"children": [
29-
{
30-
"Variable": {
31-
"dollar": null,
32-
"name": {
33-
"kind": "VariableName",
34-
"textLength": 2
35-
}
36-
}
37-
},
38-
{
39-
"kind": "CommaToken",
40-
"textLength": 1
41-
},
42-
{
43-
"Variable": {
44-
"dollar": null,
45-
"name": {
46-
"kind": "VariableName",
47-
"textLength": 2
48-
}
49-
}
15+
"UnsetStatement": {
16+
"unsetKeyword": {
17+
"kind": "UnsetKeyword",
18+
"textLength": 5
19+
},
20+
"openParen": {
21+
"kind": "OpenParenToken",
22+
"textLength": 1
23+
},
24+
"expressions": {
25+
"ExpressionList": {
26+
"children": [
27+
{
28+
"Variable": {
29+
"dollar": null,
30+
"name": {
31+
"kind": "VariableName",
32+
"textLength": 2
5033
}
51-
]
34+
}
35+
},
36+
{
37+
"kind": "CommaToken",
38+
"textLength": 1
39+
},
40+
{
41+
"Variable": {
42+
"dollar": null,
43+
"name": {
44+
"kind": "VariableName",
45+
"textLength": 2
46+
}
47+
}
5248
}
53-
},
54-
"closeParen": {
55-
"kind": "CloseParenToken",
56-
"textLength": 1
57-
}
49+
]
5850
}
5951
},
52+
"closeParen": {
53+
"kind": "CloseParenToken",
54+
"textLength": 1
55+
},
6056
"semicolon": {
6157
"kind": "SemicolonToken",
6258
"textLength": 1

tests/cases/parser/unsetIntrinsicExpression10.php.tree

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,20 @@
1212
}
1313
},
1414
{
15-
"ExpressionStatement": {
16-
"expression": {
17-
"UnsetIntrinsicExpression": {
18-
"unsetKeyword": {
19-
"kind": "UnsetKeyword",
20-
"textLength": 5
21-
},
22-
"openParen": {
23-
"kind": "OpenParenToken",
24-
"textLength": 1
25-
},
26-
"expressions": null,
27-
"closeParen": {
28-
"error": "MissingToken",
29-
"kind": "CloseParenToken",
30-
"textLength": 0
31-
}
32-
}
15+
"UnsetStatement": {
16+
"unsetKeyword": {
17+
"kind": "UnsetKeyword",
18+
"textLength": 5
19+
},
20+
"openParen": {
21+
"kind": "OpenParenToken",
22+
"textLength": 1
23+
},
24+
"expressions": null,
25+
"closeParen": {
26+
"error": "MissingToken",
27+
"kind": "CloseParenToken",
28+
"textLength": 0
3329
},
3430
"semicolon": {
3531
"error": "MissingToken",

tests/cases/parser/unsetIntrinsicExpression11.php.tree

Lines changed: 37 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,51 +12,47 @@
1212
}
1313
},
1414
{
15-
"ExpressionStatement": {
16-
"expression": {
17-
"UnsetIntrinsicExpression": {
18-
"unsetKeyword": {
19-
"kind": "UnsetKeyword",
20-
"textLength": 5
21-
},
22-
"openParen": {
23-
"kind": "OpenParenToken",
24-
"textLength": 1
25-
},
26-
"expressions": {
27-
"ExpressionList": {
28-
"children": [
29-
{
30-
"Variable": {
31-
"dollar": null,
32-
"name": {
33-
"kind": "VariableName",
34-
"textLength": 2
35-
}
36-
}
37-
},
38-
{
39-
"kind": "CommaToken",
40-
"textLength": 1
41-
},
42-
{
43-
"Variable": {
44-
"dollar": null,
45-
"name": {
46-
"kind": "VariableName",
47-
"textLength": 2
48-
}
49-
}
15+
"UnsetStatement": {
16+
"unsetKeyword": {
17+
"kind": "UnsetKeyword",
18+
"textLength": 5
19+
},
20+
"openParen": {
21+
"kind": "OpenParenToken",
22+
"textLength": 1
23+
},
24+
"expressions": {
25+
"ExpressionList": {
26+
"children": [
27+
{
28+
"Variable": {
29+
"dollar": null,
30+
"name": {
31+
"kind": "VariableName",
32+
"textLength": 2
5033
}
51-
]
34+
}
35+
},
36+
{
37+
"kind": "CommaToken",
38+
"textLength": 1
39+
},
40+
{
41+
"Variable": {
42+
"dollar": null,
43+
"name": {
44+
"kind": "VariableName",
45+
"textLength": 2
46+
}
47+
}
5248
}
53-
},
54-
"closeParen": {
55-
"kind": "CloseParenToken",
56-
"textLength": 1
57-
}
49+
]
5850
}
5951
},
52+
"closeParen": {
53+
"kind": "CloseParenToken",
54+
"textLength": 1
55+
},
6056
"semicolon": {
6157
"error": "MissingToken",
6258
"kind": "SemicolonToken",

tests/cases/parser/unsetIntrinsicExpression12.php.tree

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,38 +42,34 @@
4242
}
4343
},
4444
{
45-
"ExpressionStatement": {
46-
"expression": {
47-
"UnsetIntrinsicExpression": {
48-
"unsetKeyword": {
49-
"kind": "UnsetKeyword",
50-
"textLength": 5
51-
},
52-
"openParen": {
53-
"kind": "OpenParenToken",
54-
"textLength": 1
55-
},
56-
"expressions": {
57-
"ExpressionList": {
58-
"children": [
59-
{
60-
"Variable": {
61-
"dollar": null,
62-
"name": {
63-
"kind": "VariableName",
64-
"textLength": 2
65-
}
66-
}
45+
"UnsetStatement": {
46+
"unsetKeyword": {
47+
"kind": "UnsetKeyword",
48+
"textLength": 5
49+
},
50+
"openParen": {
51+
"kind": "OpenParenToken",
52+
"textLength": 1
53+
},
54+
"expressions": {
55+
"ExpressionList": {
56+
"children": [
57+
{
58+
"Variable": {
59+
"dollar": null,
60+
"name": {
61+
"kind": "VariableName",
62+
"textLength": 2
6763
}
68-
]
64+
}
6965
}
70-
},
71-
"closeParen": {
72-
"kind": "CloseParenToken",
73-
"textLength": 1
74-
}
66+
]
7567
}
7668
},
69+
"closeParen": {
70+
"kind": "CloseParenToken",
71+
"textLength": 1
72+
},
7773
"semicolon": {
7874
"kind": "SemicolonToken",
7975
"textLength": 1

0 commit comments

Comments
 (0)