generator icon indicating copy to clipboard operation
generator copied to clipboard

Unable to parse files that contain namespaces and variables passed by reference

Open zackkatz opened this issue 2 years ago • 4 comments

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.

zackkatz avatar May 26 '23 17:05 zackkatz

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 avatar May 26 '23 17:05 zackkatz

@zackkatz Would you like to try version 1.0.0 to see if this has been fixed?

johnbillion avatar Dec 19 '24 01:12 johnbillion

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 😞

zackkatz avatar Dec 19 '24 03:12 zackkatz

Ok thanks! We should be in a better position to deal with it now though.

johnbillion avatar Dec 19 '24 11:12 johnbillion