,error_levels?:string[]}> */ public function providerValidCodeParse(): iterable { return [ 'internalMethodWithCall' => [ ' [ ' [ 'barBar(); } } }', ], 'internalClassWithPropertyFetch' => [ 'barBar; } } }', ], 'internalClassExtendingNamespaceWithStaticCall' => [ ' [ ' [ ' [ 'foo; } } }', ], 'internalPropertySet' => [ 'foo = 5; } } }', ], 'internalMethodInTraitWithCall' => [ ' [ 'foo; } } }', ], 'constInternalClass' => [ ' [ ' [ ' [ ' [ ' [ ' [ 'barBar(); } } }', ], 'psalmInternalClassWithPropertyFetch' => [ 'barBar; } } }', ], 'psalmInternalClassExtendingNamespaceWithStaticCall' => [ ' [ ' [ ' [ ' [ ' [ 'foo; } } }', ], 'psalmInternalPropertySet' => [ 'foo = 5; } } }', ], 'psalmInternalPropertyWithTrailingWhitespace' => [ 'foo = 42; } } }', ], 'psalmInternalMethodInTraitWithCall' => [ ' [ ' [ 'bar(); } } } ' ], ]; } /** * @return iterable */ public function providerInvalidCodeParse(): iterable { return [ 'internalMethodWithCall' => [ ' 'The method A\Foo::barBar is internal to A but called from B\Bat', ], 'internalMethodWithCallFromRootNamespace' => [ ' 'The method A\Foo::barBar is internal to A but called from root namespace', ], 'internalClassWithStaticCall' => [ ' 'InternalClass', ], 'internalClassWithInstanceCall' => [ 'barBar(); } } }', 'error_message' => 'InternalMethod', ], 'internalClassWithPropertyFetch' => [ 'barBar; } } }', 'error_message' => 'A\B\Foo::$barBar is internal', ], 'internalClassWithNew' => [ ' 'InternalClass', ], 'internalClassWithExtends' => [ ' 'InternalClass', ], 'internalPropertyGet' => [ 'foo; } } }', 'error_message' => 'InternalProperty', ], 'internalPropertySet' => [ 'foo = 5; } } }', 'error_message' => 'InternalProperty', ], 'magicPropertyGetInternalExplicit' => [ '__get("foo"); } } }', 'error_message' => 'InternalMethod', ], 'constInternalClass' => [ ' 'InternalClass', ], 'psalmInternalMethodWithCall' => [ ' 'The method A\B\Foo::barBar is internal to A\B', ], 'psalmInternalToClassMethodWithCall' => [ ' 'The method A\B\Foo::barBar is internal to A\B\Foo', ], 'psalmInternalClassWithStaticCall' => [ ' 'InternalClass', ], 'psalmInternalClassWithPropertyFetch' => [ 'barBar; } } }', 'error_message' => 'A\B\Foo::$barBar is internal to A\B', ], 'psalmInternalClassWithInstanceCall' => [ 'barBar(); } } }', 'error_message' => 'The method A\B\Foo::barBar is internal to A\B', ], 'psalmInternalClassWithNew' => [ ' 'InternalClass', ], 'psalmInternalClassWithExtends' => [ ' 'A\B\Foo is internal to A\B', ], 'psalmInternalPropertyGet' => [ 'foo; } } }', 'error_message' => 'A\B\Foo::$foo is internal to A\B', ], 'psalmInternalPropertySet' => [ 'foo = 5; } } }', 'error_message' => 'A\B\Foo::$foo is internal to A\B', ], 'psalmInternalClassMissingNamespace' => [ ' 'psalm-internal annotation used without specifying namespace', ], 'psalmInternalPropertyMissingNamespace' => [ ' 'psalm-internal annotation used without specifying namespace', ], 'psalmInternalMethodMissingNamespace' => [ ' 'psalm-internal annotation used without specifying namespace', ], 'internalConstructor' => [ ' 'InternalMethod', ], ]; } }