Skip to content

Commit

Permalink
Manually check all built-in classes to ignore them
Browse files Browse the repository at this point in the history
  • Loading branch information
carlosas authored Dec 29, 2024
1 parent 0e95b5b commit e801cc6
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 1 deletion.
100 changes: 100 additions & 0 deletions src/Parser/BuiltInClasses.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php declare(strict_types=1);

namespace PHPat\Parser;

final class BuiltInClasses
{
public const PHP_8_BUILT_IN_CLASSES = [
'iterable',
'stdClass',
'Serializable',
'Stringable',
'Throwable',
'Error',
'Countable',
'ArrayAccess',
'Closure',
'Iterator',
'AllowDynamicProperties',
'ArgumentCountError',
'ArithmeticError',
'CompileError',
'DivisionByZeroError',
'ErrorException',
'Exception',
'Fiber',
'FiberError',
'Enum',
'UnitEnum',
'BackedEnum',
'StringBackedEnum',
'IntBackedEnum',
'InternalIterator',
'IteratorAggregate',
'Attribute',
'ParseError',
'ReturnTypeWillChange',
'SensitiveParameter',
'SensitiveParameterValue',
'Traversable',
'TypeError',
'UnhandledMatchError',
'WeakMap',
'WeakReference',
'ValueError',
'PhpToken',
'Deprecated',
'JsonException',
'Override',
'Random\Randomizer',
'Random\Engine\Mt19937',
'Random\Engine\Xoshiro256StarStar',
'Random\Engine\Secure',
'Random\Randomizer',
'RequestParseBodyException',
'BcMath\Number',
'Dba\Connection',
'Dom\HTMLDocument',
'Dom\XMLDocument',
'Dom\Document',
'Dom\ParentNode',
'Dom\ChildNode',
'Dom\Implementation',
'Dom\Node',
'Dom\NodeList',
'Dom\NamedNodeMap',
'Dom\DtdNamedNodeMap',
'Dom\HTMLCollection',
'Dom\AdjacentPosition',
'Dom\Element',
'Dom\HTMLElement',
'Dom\Attr',
'Dom\CharacterData',
'Dom\Text',
'Dom\CDATASection',
'Dom\ProcessingInstruction',
'Dom\Comment',
'Dom\DocumentType',
'Dom\DocumentFragment',
'Dom\Entity',
'Dom\EntityReference',
'Dom\Notation',
'Dom\TokenList',
'Dom\NamespaceInfo',
'Dom\XPath',
'Odbc\Connection',
'Odbc\Result',
'Pcntl\QosClass',
'Pdo\DbLib',
'Pdo\Firebird',
'Pdo\Mysql',
'Pdo\Odbc',
'Pdo\Pgsql',
'Pdo\Sqlite',
'ReflectionConstant',
'Soap\Url',
'Soap\Sdl',
'RoundingMode',
'StreamBucket',
];
}
3 changes: 2 additions & 1 deletion src/Rule/Assertion/Relation/RelationAssertion.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace PHPat\Rule\Assertion\Relation;

use PHPat\Configuration;
use PHPat\Parser\BuiltInClasses;
use PHPat\Rule\Assertion\Assertion;
use PHPat\Rule\Assertion\Relation\ShouldApplyAttribute\ShouldApplyAttribute;
use PHPat\Rule\Assertion\Relation\ShouldExtend\ShouldExtend;
Expand Down Expand Up @@ -175,7 +176,7 @@ private function removeBuiltInClasses(array $nodes): array

private function isBuiltInClass(string $node): bool
{
return $node === 'Stringable'
return in_array($node, BuiltInClasses::PHP_8_BUILT_IN_CLASSES, true)
|| ($this->reflectionProvider->hasClass($node) && $this->reflectionProvider->getClass($node)->isBuiltin());
}
}

0 comments on commit e801cc6

Please sign in to comment.