,error_levels?:string[]}> */ public function providerValidCodeParse(): iterable { return [ 'classAndPropertyAttributesExists' => [ ' [ ' [ ' [ 'getAttributes(BaseAttribute::class, 2) as $attr) { $attribute = $attr->newInstance(); echo $attribute->name; } }', [], [], '8.0' ], 'convertKeyedArray' => [ 'methods = $methods; } } #[Route(methods: ["GET"])] class HealthController {}', [], [], '8.0' ], 'allowsRepeatableFlag' => [ ' [ ' $_className */ public function __construct(string $_className) { } } #[Foo(_className: Baz::class)] class Baz {}', [], [], '8.0' ], 'allowsClassStringFromDifferentNamespace' => [ ' $className */ public function __construct(string $className) { $this->className = $className; } } interface FoobarInterface {} class Bar implements FoobarInterface {} } namespace NamespaceTwo { use NamespaceOne\FooAttribute; use NamespaceOne\Bar as ZZ; #[FooAttribute(className: ZZ::class)] class Baz {} } ' ], 'returnTypeWillChange7.1' => [ ' [ ' */ public function providerInvalidCodeParse(): iterable { return [ 'attributeClassHasNoAttributeAnnotation' => [ ' 'InvalidAttribute', [], false, '8.0' ], 'missingAttributeOnClass' => [ ' 'UndefinedAttributeClass', [], false, '8.0' ], 'missingAttributeOnFunction' => [ ' 'UndefinedAttributeClass', [], false, '8.0' ], 'missingAttributeOnParam' => [ ' 'UndefinedAttributeClass', [], false, '8.0' ], 'tooFewArgumentsToAttributeConstructor' => [ ' 'TooFewArguments', [], false, '8.0' ], 'invalidArgument' => [ ' 'InvalidScalarArgument', [], false, '8.0' ], 'classAttributeUsedOnFunction' => [ ' 'InvalidAttribute', [], false, '8.0' ], 'interfaceCannotBeAttributeClass' => [ ' 'InvalidAttribute', [], false, '8.0' ], 'traitCannotBeAttributeClass' => [ ' 'InvalidAttribute', [], false, '8.0' ], 'abstractClassCannotBeAttributeClass' => [ ' 'InvalidAttribute', [], false, '8.0' ], 'abstractClassCannotHavePrivateConstructor' => [ ' 'InvalidAttribute', [], false, '8.0' ], ]; } }