Open shufo opened 1 year ago
When php code like ($value ?: null)?->someProperty; passed to parser, it throws unexpected Syntax exception.
($value ?: null)?->someProperty;
$ node Welcome to Node.js v16.16.0. Type ".help" for more information. > const parser = require('php-parser') undefined > const target = `($value ?: null)?->someProperty;`; undefined > const eval = parser.parseEval(target) Uncaught: [SyntaxError: Parse Error : syntax error, unexpected '?->' (T_NULLSAFE_OBJECT_OPERATOR), expecting ';' on line 1 ] { lineNumber: 1, fileName: 'eval', columnNumber: 16 }
But its syntax is valid in php.
$ php -v PHP 8.1.2-1ubuntu2.10 (cli) (built: Jan 16 2023 15:19:49) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2-1ubuntu2.10, Copyright (c), by Zend Technologies $ cat test.php <?php echo ($value ?: null)?->someProperty; $ php --syntax-check test.php No syntax errors detected in test.php
test.js
const parser = require("."); const target = `($value ?: null)?->someProperty;`; const eval = parser.parseEval(target);
$ node test.js
Context
Problems
When php code like
($value ?: null)?->someProperty;
passed to parser, it throws unexpected Syntax exception.But its syntax is valid in php.
Repro:
test.js