@@ -3047,7 +3047,8 @@ private function parsePostfixExpressionRest($expression, $allowUpdateExpression
3047
3047
$ expression instanceof SubscriptExpression ||
3048
3048
$ expression instanceof ScopedPropertyAccessExpression ||
3049
3049
$ expression instanceof StringLiteral ||
3050
- $ expression instanceof ArrayCreationExpression
3050
+ $ expression instanceof ArrayCreationExpression ||
3051
+ $ expression instanceof ObjectCreationExpression
3051
3052
)) {
3052
3053
return $ expression ;
3053
3054
}
@@ -3201,6 +3202,16 @@ private function parseSubscriptExpression($expression) : SubscriptExpression {
3201
3202
return $ subscriptExpression ;
3202
3203
}
3203
3204
3205
+ private function parseNewObjectNoParenthesisMemberAccessExpression ($ expression ):MemberAccessExpression {
3206
+ $ memberAccessExpression = new MemberAccessExpression ();
3207
+ $ memberAccessExpression ->parent = $ expression ;
3208
+
3209
+ $ memberAccessExpression ->dereferencableExpression = $ expression ;
3210
+ $ memberAccessExpression ->arrowToken = $ this ->eat (TokenKind::ArrowToken, TokenKind::QuestionArrowToken);
3211
+ $ memberAccessExpression ->memberName = $ this ->parseMemberName ($ memberAccessExpression );
3212
+
3213
+ return $ memberAccessExpression ;
3214
+ }
3204
3215
private function parseMemberAccessExpression ($ expression ):MemberAccessExpression {
3205
3216
$ memberAccessExpression = new MemberAccessExpression ();
3206
3217
$ memberAccessExpression ->parent = $ expression ->parent ;
@@ -3289,6 +3300,11 @@ private function parseObjectCreationExpression($parentNode) {
3289
3300
$ objectCreationExpression ->classMembers = $ this ->parseClassMembers ($ objectCreationExpression );
3290
3301
}
3291
3302
3303
+ // PHP8.4 new with no parenthesis
3304
+ if ($ this ->getCurrentToken ()->kind === TokenKind::ArrowToken) {
3305
+ return $ this ->parsePostfixExpressionRest ($ objectCreationExpression );
3306
+ }
3307
+
3292
3308
return $ objectCreationExpression ;
3293
3309
}
3294
3310
0 commit comments