diff --git a/lib/WorseReflection/Bridge/TolerantParser/Reflection/TraitImport/TraitImports.php b/lib/WorseReflection/Bridge/TolerantParser/Reflection/TraitImport/TraitImports.php index 4bf546548..bfeb4a325 100644 --- a/lib/WorseReflection/Bridge/TolerantParser/Reflection/TraitImport/TraitImports.php +++ b/lib/WorseReflection/Bridge/TolerantParser/Reflection/TraitImport/TraitImports.php @@ -15,6 +15,7 @@ use Microsoft\PhpParser\Node\TraitUseClause; use Microsoft\PhpParser\TokenKind; use Phpactor\WorseReflection\Bridge\TolerantParser\Patch\TolerantQualifiedNameResolver; +use Phpactor\WorseReflection\Core\Exception\NotFound; use Phpactor\WorseReflection\Core\Util\QualifiedNameListUtil; use Phpactor\WorseReflection\Core\Visibility; use RuntimeException; @@ -107,7 +108,9 @@ private function __construct(array $declarations) public static function forClassDeclaration(ClassDeclaration|ObjectCreationExpression $classDeclaration): self { - assert($classDeclaration->classMembers instanceof ClassMembersNode, 'ObjectCreationExpression does not contain anonymous class'); + if (!$classDeclaration->classMembers instanceof ClassMembersNode) { + throw new NotFound('ObjectCreationExpression does not contain anonymous class'); + } return new self($classDeclaration->classMembers->classMemberDeclarations); } diff --git a/lib/WorseReflection/Core/Reflection/Collection/ClassLikeReflectionMemberCollection.php b/lib/WorseReflection/Core/Reflection/Collection/ClassLikeReflectionMemberCollection.php index 7c4d6ccc5..9bbdffdd9 100644 --- a/lib/WorseReflection/Core/Reflection/Collection/ClassLikeReflectionMemberCollection.php +++ b/lib/WorseReflection/Core/Reflection/Collection/ClassLikeReflectionMemberCollection.php @@ -25,6 +25,7 @@ use Phpactor\WorseReflection\Bridge\TolerantParser\Reflection\ReflectionPromotedProperty; use Phpactor\WorseReflection\Bridge\TolerantParser\Reflection\ReflectionProperty; use Phpactor\WorseReflection\Core\ClassName; +use Phpactor\WorseReflection\Core\Exception\NotFound; use Phpactor\WorseReflection\Core\Reflection\ReflectionClass; use Phpactor\WorseReflection\Core\Reflection\ReflectionClassLike; use Phpactor\WorseReflection\Core\Reflection\ReflectionConstant as PhpactorReflectionConstant; @@ -73,7 +74,9 @@ public static function fromClassMemberDeclarations( ClassDeclaration|ObjectCreationExpression $class, ReflectionClass $reflectionClass ): self { - assert($class->classMembers instanceof ClassMembersNode, 'ObjectCreationExpression does not contain anonymous class'); + if (!$class->classMembers instanceof ClassMembersNode) { + throw new NotFound('ObjectCreationExpression does not contain anonymous class'); + } return self::fromDeclarations( $serviceLocator, diff --git a/lib/WorseReflection/Core/Reflection/Collection/ReflectionTraitCollection.php b/lib/WorseReflection/Core/Reflection/Collection/ReflectionTraitCollection.php index aefbf733d..22e32faca 100644 --- a/lib/WorseReflection/Core/Reflection/Collection/ReflectionTraitCollection.php +++ b/lib/WorseReflection/Core/Reflection/Collection/ReflectionTraitCollection.php @@ -23,7 +23,9 @@ public static function fromClassDeclaration( ServiceLocator $serviceLocator, ClassDeclaration|ObjectCreationExpression $class, ): self { - assert($class->classMembers instanceof ClassMembersNode, 'ObjectCreationExpression does not contain anonymous class'); + if (!$class->classMembers instanceof ClassMembersNode) { + throw new NotFound('ObjectCreationExpression does not contain anonymous class'); + } $items = []; foreach ($class->classMembers->classMemberDeclarations as $memberDeclaration) { diff --git a/lib/WorseReflection/Core/Reflector/CoreReflector.php b/lib/WorseReflection/Core/Reflector/CoreReflector.php index 6c576df84..0b398be35 100644 --- a/lib/WorseReflection/Core/Reflector/CoreReflector.php +++ b/lib/WorseReflection/Core/Reflector/CoreReflector.php @@ -5,6 +5,7 @@ use Amp\Promise; use Generator; use Microsoft\PhpParser\Node; +use Microsoft\PhpParser\Node\Expression\ObjectCreationExpression; use Phpactor\TextDocument\ByteOffset; use Phpactor\WorseReflection\Bridge\TolerantParser\Reflection\ReflectionNavigation; use Phpactor\WorseReflection\Core\ClassName; @@ -38,6 +39,11 @@ public function __construct(private SourceCodeReflector $sourceReflector, privat { } + public static function getAnonymousClassName(ObjectCreationExpression $class): string + { + + } + /** * Reflect class. *