phpstan-src
phpstan-src copied to clipboard
Generated baseline can't be used if regex can't be compilated to UTF-8 chars
closes https://github.com/phpstan/phpstan/issues/12629
observations:
- baseline generation crashed PHPStan before this fix
Fatal error: Uncaught Nette\Neon\Exception: Invalid UTF-8 sequence: #^Regex pattern is invalid\: Compilation failed\: UTF\-8 error\: byte 2 top bits not 0x80 at offset 0 in pattern\: \!�\[�\-�\]\!u$# in /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/StringNode.php:84
Stack trace:
#0 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\StringNode->toString()
#1 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#2 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#3 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#4 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#5 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#6 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#7 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#8 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Encoder.php(35): Nette\Neon\Node\BlockArrayNode->toString()
#9 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Neon.php(32): Nette\Neon\Encoder->encode(Array)
#10 /Users/staabm/workspace/phpstan-src/src/Command/ErrorFormatter/BaselineNeonErrorFormatter.php(76): Nette\Neon\Neon::encode(Array, true)
This pull request has been marked as ready for review.
(sorry for too many pushes. trial and error debugging in github actions is sometimes not avoidable)
I feel like this can happen in any rule that will report something about a ConstantStringType and prints it with VerbosityLevel::value().
This needs a fix in the neon library directly, or when encoding/decoding the value.
Maybe in ConstantStringType::describe(). Not sure.
I just found https://github.com/nette/neon/issues/72 in which there was a similar discussion with other control characters. will investigate. opened a new upstream issue in https://github.com/nette/neon/issues/76