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