knuckleswtf / scribe

Generate API documentation for humans from your Laravel codebase.✍
https://scribe.knuckles.wtf/laravel/
MIT License
1.58k stars 280 forks source link

GetFromInlineValidatorBase::extractEnumClassFromArrayItem Argument #1 ($arrayItem) must be of type PhpParser\\Node\\ArrayItem, PhpParser\\Node\\Expr\\ArrayItem given #832

Open wilecoyte78 opened 3 months ago

wilecoyte78 commented 3 months ago

Scribe version

4.34.0

PHP version

8.1

Framework

Laravel

Framework version

10.46.0

Scribe config

------ SAME AS DEFAULT CONFIG ------

What happened?

I ran php artisan scribe:generate and then I get an error:

Knuckles\Scribe\Extracting\Strategies\GetFromInlineValidatorBase::extractEnumClassFromArrayItem(): Argument #1 ($arrayItem) must be of type PhpParser\Node\ArrayItem, PhpParser\Node\Expr\ArrayItem given, called in vendor/knuckleswtf/scribe/src/Extracting/Strategies/GetFromInlineValidatorBase.php on line 88

at vendor/knuckleswtf/scribe/src/Extracting/Strategies/GetFromInlineValidatorBase.php:127 123▕ 124▕ return [$rules, $customParameterData]; 125▕ } 126▕ ➜ 127▕ protected function extractEnumClassFromArrayItem(Node\ArrayItem $arrayItem): ?string 128▕ { 129▕ $args = []; 130▕ 131▕ // Enum rule with the form "new Enum(...)"

Docs

shalvah commented 3 months ago

Hmm, that sounds like you're using an older version of nikic/php-parser, which shouldn't be happening. Can you try running composer show nikic/php-parser?

wilecoyte78 commented 3 months ago

$ composer show nikic/php-parser name : nikic/php-parser descrip. : A PHP parser written in PHP keywords : parser, php versions : * v5.0.1 type : library license : BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) (OSI approved) https://spdx.org/licenses/BSD-3-Clause.html#licenseText homepage : source : [git] https://github.com/nikic/PHP-Parser.git 2218c2252c874a4624ab2f613d86ac32d227bc69 dist : [zip] https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69 2218c2252c874a4624ab2f613d86ac32d227bc69 path : names : nikic/php-parser

support issues : https://github.com/nikic/PHP-Parser/issues source : https://github.com/nikic/PHP-Parser/tree/v5.0.1

autoload psr-4 PhpParser\ => lib/PhpParser

requires ext-ctype ext-json ext-tokenizer * php >=7.4

requires (dev) ircmaxell/php-yacc ^0.0.7 phpunit/phpunit ^7.0 || ^8.0 || ^9.0

shalvah commented 3 months ago

No idea. Can't reproduce it. Try updating nikic/php-parser to the latest version. If it doesn't work, please share the code being parsed (it appears to be an inline validator) that leads to a crash (you can figure it out by looking at the logs to see what endpoint was being processed).