Unable to parse files that contain namespaces and variables passed by reference
If I place a single use statement at the top of a file, none of the actions or filters get parsed.
This wouldn't find the example filter:
<?php // Just an example
use GV\Utils;
apply_filters( 'example', 'just an' );
But this would:
<?php // Just an example
apply_filters( 'example', 'just an' );
This also applies to namespaces inside _deprecated_function() calls. This blocks all filters for the file:
_deprecated_function( __METHOD__, '2.0', '\GV\Widget::registered()' );
but removing the namespace fixes it:
_deprecated_function( __METHOD__, '2.0', 'Widget::registered()' );
Same with variables passed by reference. This blocks all parsing for a file:
foreach( $examples as &$example ) {
and this works:
foreach( $examples as $example ) {
When running the command (./vendor/bin/wp-hooks-generator --input ./ --output docs), I get many errors like this:
Warning: Undefined array key 265 in [path]/wp-content/plugins/GravityView/vendor/nikic/php-parser/lib/PhpParser/Lexer.php on line 195
Warning: Undefined array key "" in [path]/wp-content/plugins/GravityView/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php on line 173
Warning: Undefined array key "" in [path]/wp-content/plugins/GravityView/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php on line 335
Parse Error: Syntax error, unexpected , expecting T_STRING or T_NS_SEPARATOR or '{' on line 10
Here's my composer.json and composer.lock file. Hopefully that helps. Please let me know if I'm able to help figure out what's going on here.
I see this is actually an issue with https://github.com/WordPress/phpdoc-parser/issues/231
And the pass-by-reference issue may somehow be related to https://github.com/WordPress/phpdoc-parser/issues/176
And the PHP warnings are all PHP 8 issues (switching to 7.4 removed them all).
@zackkatz Would you like to try version 1.0.0 to see if this has been fixed?
Hi @johnbillion, thanks for following up!
I'm afraid the use issue and the & issue are both still happening for me. Too bad #19 didn't fix it 😞
Ok thanks! We should be in a better position to deal with it now though.