From 251b9a502379ab41e045f856eafb2b7d8668b207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Thu, 22 Aug 2024 00:44:38 +0200 Subject: [PATCH 1/4] add test --- .../nsrt/static-with-this-chained.php | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/PHPStan/Analyser/nsrt/static-with-this-chained.php diff --git a/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php b/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php new file mode 100644 index 0000000000..41255f0174 --- /dev/null +++ b/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php @@ -0,0 +1,71 @@ +getThis()); + assertType('static(StaticWithThisChained\Foo)', $this->newStatic()); + assertType('static(StaticWithThisChained\Foo)', static::newStaticStatic()); + assertType('StaticWithThisChained\Foo', self::newStaticStatic()); + assertType('StaticWithThisChained\Foo', Foo::newStaticStatic()); + + assertType('$this(StaticWithThisChained\Foo)', $this->getThis()->getThis()); + assertType('static(StaticWithThisChained\Foo)', $this->newStatic()->getThis()); + assertType('static(StaticWithThisChained\Foo)', static::newStaticStatic()->getThis()); + assertType('StaticWithThisChained\Foo', self::newStaticStatic()->getThis()); + assertType('StaticWithThisChained\Foo', Foo::newStaticStatic()->getThis()); + } + + public function testPropertyChained(): void + { + assertType('$this(StaticWithThisChained\Foo)', $this->propThis); + assertType('static(StaticWithThisChained\Foo)', $this->propStatic); + assertType('static(StaticWithThisChained\Foo)', static::$propStaticStatic); + assertType('StaticWithThisChained\Foo', self::$propStaticStatic); + assertType('StaticWithThisChained\Foo', Foo::$propStaticStatic); + + assertType('$this(StaticWithThisChained\Foo)', $this->propThis->propThis); + assertType('static(StaticWithThisChained\Foo)', $this->propStatic->propThis); + assertType('static(StaticWithThisChained\Foo)', static::$propStaticStatic->propThis); + assertType('StaticWithThisChained\Foo', self::$propStaticStatic->propThis); + assertType('StaticWithThisChained\Foo', Foo::$propStaticStatic->propThis); + } +} From 7aae81488c3cd1f9c320a73694dbc730cd8c24ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Wed, 21 Aug 2024 22:46:58 +0200 Subject: [PATCH 2/4] DEBUG local debug --- phpunit.xml | 3 +- .../Analyser/NodeScopeResolverTest.php | 179 +----------------- 2 files changed, 2 insertions(+), 180 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index b083450096..275556f328 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -26,8 +26,7 @@ - tests/PHPStan - tests/PHPStan/Reflection/ReflectionProviderGoldenTest.php + tests/PHPStan/Analyser/NodeScopeResolverTest.php diff --git a/tests/PHPStan/Analyser/NodeScopeResolverTest.php b/tests/PHPStan/Analyser/NodeScopeResolverTest.php index 1e3afb4e70..0621e8d160 100644 --- a/tests/PHPStan/Analyser/NodeScopeResolverTest.php +++ b/tests/PHPStan/Analyser/NodeScopeResolverTest.php @@ -25,190 +25,13 @@ class NodeScopeResolverTest extends TypeInferenceTestCase */ private static function findTestFiles(): iterable { - foreach (self::findTestDataFilesFromDirectory(__DIR__ . '/nsrt') as $testFile) { - yield $testFile; - } - - if (PHP_VERSION_ID < 80200 && PHP_VERSION_ID >= 80100) { - yield __DIR__ . '/data/enum-reflection-php81.php'; - } - - if (PHP_VERSION_ID < 80000 && PHP_VERSION_ID >= 70400) { - yield __DIR__ . '/data/bug-4902.php'; - } - - if (PHP_VERSION_ID < 80300) { - if (PHP_VERSION_ID >= 80200) { - yield __DIR__ . '/data/mb-strlen-php82.php'; - } elseif (PHP_VERSION_ID >= 80000) { - yield __DIR__ . '/data/mb-strlen-php8.php'; - } elseif (PHP_VERSION_ID < 70300) { - yield __DIR__ . '/data/mb-strlen-php72.php'; - } else { - yield __DIR__ . '/data/mb-strlen-php73.php'; - } - } - - yield __DIR__ . '/../Rules/Methods/data/bug-6856.php'; - - if (PHP_VERSION_ID < 80000) { - yield __DIR__ . '/data/explode-php74.php'; - } else { - yield __DIR__ . '/data/explode-php80.php'; - } + yield __DIR__ . '/nsrt/static-with-this-chained.php'; if (PHP_VERSION_ID >= 80000) { yield __DIR__ . '/../Reflection/data/unionTypes.php'; yield __DIR__ . '/../Reflection/data/mixedType.php'; yield __DIR__ . '/../Reflection/data/staticReturnType.php'; } - - if (PHP_INT_SIZE === 8) { - yield __DIR__ . '/data/predefined-constants-64bit.php'; - } else { - yield __DIR__ . '/data/predefined-constants-32bit.php'; - } - - yield __DIR__ . '/../Rules/Variables/data/bug-10577.php'; - yield __DIR__ . '/../Rules/Variables/data/bug-10610.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-2550.php'; - yield __DIR__ . '/../Rules/Properties/data/bug-3777.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-4552.php'; - yield __DIR__ . '/../Rules/Methods/data/infer-array-key.php'; - yield __DIR__ . '/../Rules/Generics/data/bug-3769.php'; - yield __DIR__ . '/../Rules/Generics/data/bug-6301.php'; - yield __DIR__ . '/../Rules/PhpDoc/data/bug-4643.php'; - - if (PHP_VERSION_ID >= 80000) { - yield __DIR__ . '/../Rules/Comparison/data/bug-4857.php'; - } - - yield __DIR__ . '/../Rules/Methods/data/bug-5089.php'; - yield __DIR__ . '/../Rules/Methods/data/unable-to-resolve-callback-parameter-type.php'; - - yield __DIR__ . '/../Rules/Functions/data/varying-acceptor.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-4415.php'; - if (PHP_VERSION_ID >= 70400) { - yield __DIR__ . '/../Rules/Methods/data/bug-5372.php'; - } - yield __DIR__ . '/../Rules/Arrays/data/bug-5372_2.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-5562.php'; - - if (PHP_VERSION_ID >= 80100) { - define('TEST_OBJECT_CONSTANT', new stdClass()); - define('TEST_NULL_CONSTANT', null); - define('TEST_TRUE_CONSTANT', true); - define('TEST_FALSE_CONSTANT', false); - define('TEST_ARRAY_CONSTANT', [true, false, null]); - define('TEST_ENUM_CONSTANT', Foo::ONE); - yield __DIR__ . '/data/new-in-initializers-runtime.php'; - } - - if (PHP_VERSION_ID >= 70400) { - yield __DIR__ . '/../Rules/Comparison/data/bug-6473.php'; - } - - yield __DIR__ . '/../Rules/Methods/data/filter-iterator-child-class.php'; - - yield __DIR__ . '/../Rules/Methods/data/bug-5749.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-5757.php'; - - if (PHP_VERSION_ID >= 80000) { - yield __DIR__ . '/../Rules/Methods/data/bug-6635.php'; - } - - if (PHP_VERSION_ID >= 80300) { - yield __DIR__ . '/../Rules/Constants/data/bug-10212.php'; - } - - yield __DIR__ . '/../Rules/Methods/data/bug-3284.php'; - - if (PHP_VERSION_ID >= 80300) { - yield __DIR__ . '/../Rules/Methods/data/return-type-class-constant.php'; - } - - //define('ALREADY_DEFINED_CONSTANT', true); - //yield from $this->gatherAssertTypes(__DIR__ . '/data/already-defined-constant.php'); - - yield __DIR__ . '/../Rules/Methods/data/conditional-complex-templates.php'; - - yield __DIR__ . '/../Rules/Methods/data/bug-7511.php'; - yield __DIR__ . '/../Rules/Properties/data/trait-mixin.php'; - yield __DIR__ . '/../Rules/Methods/data/trait-mixin.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-4708.php'; - yield __DIR__ . '/../Rules/Functions/data/bug-7156.php'; - yield __DIR__ . '/../Rules/Arrays/data/bug-6364.php'; - yield __DIR__ . '/../Rules/Arrays/data/bug-5758.php'; - yield __DIR__ . '/../Rules/Functions/data/bug-3931.php'; - yield __DIR__ . '/../Rules/Variables/data/bug-7417.php'; - yield __DIR__ . '/../Rules/Arrays/data/bug-7469.php'; - yield __DIR__ . '/../Rules/Variables/data/bug-3391.php'; - - if (PHP_VERSION_ID >= 70400) { - yield __DIR__ . '/../Rules/Functions/data/bug-anonymous-function-method-constant.php'; - } - - if (PHP_VERSION_ID >= 80200) { - yield __DIR__ . '/../Rules/Methods/data/true-typehint.php'; - } - yield __DIR__ . '/../Rules/Arrays/data/bug-6000.php'; - - yield __DIR__ . '/../Rules/Arrays/data/slevomat-foreach-unset-bug.php'; - yield __DIR__ . '/../Rules/Arrays/data/slevomat-foreach-array-key-exists-bug.php'; - - if (PHP_VERSION_ID >= 80000) { - yield __DIR__ . '/../Rules/Comparison/data/bug-7898.php'; - } - - if (PHP_VERSION_ID >= 80000) { - yield __DIR__ . '/../Rules/Functions/data/bug-7823.php'; - } - - yield __DIR__ . '/../Analyser/data/is-resource-specified.php'; - - yield __DIR__ . '/../Rules/Arrays/data/bug-7954.php'; - yield __DIR__ . '/../Rules/Comparison/data/docblock-assert-equality.php'; - yield __DIR__ . '/../Rules/Properties/data/bug-7839.php'; - yield __DIR__ . '/../Rules/Classes/data/bug-5333.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-8174.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-8169.php'; - yield __DIR__ . '/../Rules/Functions/data/bug-8280.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-8277.php'; - yield __DIR__ . '/../Rules/Variables/data/bug-8113.php'; - yield __DIR__ . '/../Rules/Functions/data/bug-8389.php'; - yield __DIR__ . '/../Rules/Arrays/data/bug-8467a.php'; - if (PHP_VERSION_ID >= 80100) { - yield __DIR__ . '/../Rules/Comparison/data/bug-8485.php'; - } - - if (PHP_VERSION_ID >= 80100) { - yield __DIR__ . '/../Rules/Comparison/data/bug-9007.php'; - } - - yield __DIR__ . '/../Rules/DeadCode/data/bug-8620.php'; - - if (PHP_VERSION_ID >= 80200) { - yield __DIR__ . '/../Rules/Constants/data/bug-8957.php'; - } - - if (PHP_VERSION_ID >= 80100) { - yield __DIR__ . '/../Rules/Comparison/data/bug-9499.php'; - } - - yield __DIR__ . '/../Rules/PhpDoc/data/bug-8609-function.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-5365.php'; - yield __DIR__ . '/../Rules/Comparison/data/bug-6551.php'; - yield __DIR__ . '/../Rules/Variables/data/bug-9403.php'; - yield __DIR__ . '/../Rules/Methods/data/bug-9542.php'; - yield __DIR__ . '/../Rules/Functions/data/bug-9803.php'; - yield __DIR__ . '/../Rules/PhpDoc/data/bug-10594.php'; - yield __DIR__ . '/../Rules/Classes/data/bug-11591.php'; - yield __DIR__ . '/../Rules/Classes/data/bug-11591-method-tag.php'; - yield __DIR__ . '/../Rules/Classes/data/bug-11591-property-tag.php'; - yield __DIR__ . '/../Rules/Classes/data/mixin-trait-use.php'; - - yield __DIR__ . '/../Rules/Methods/data/bug-4801.php'; - yield __DIR__ . '/data/template-default.php'; } /** From a21522138f2e6d7a00f1e33b73aba81d50caa3fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Tue, 27 Aug 2024 09:56:42 +0200 Subject: [PATCH 3/4] WIP - disable prop test for now --- tests/PHPStan/Analyser/nsrt/static-with-this-chained.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php b/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php index 41255f0174..91b40853ab 100644 --- a/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php +++ b/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php @@ -56,6 +56,7 @@ public function testMethodChained(): void public function testPropertyChained(): void { + /* assertType('$this(StaticWithThisChained\Foo)', $this->propThis); assertType('static(StaticWithThisChained\Foo)', $this->propStatic); assertType('static(StaticWithThisChained\Foo)', static::$propStaticStatic); @@ -67,5 +68,6 @@ public function testPropertyChained(): void assertType('static(StaticWithThisChained\Foo)', static::$propStaticStatic->propThis); assertType('StaticWithThisChained\Foo', self::$propStaticStatic->propThis); assertType('StaticWithThisChained\Foo', Foo::$propStaticStatic->propThis); + */ } } From 8ceb598a23a5cd0c54913ab61b366e64fbe7d408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Fri, 11 Oct 2024 11:10:56 +0200 Subject: [PATCH 4/4] Revert "DEBUG local debug" --- phpunit.xml | 3 +- .../Analyser/NodeScopeResolverTest.php | 179 +++++++++++++++++- 2 files changed, 180 insertions(+), 2 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 275556f328..b083450096 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -26,7 +26,8 @@ - tests/PHPStan/Analyser/NodeScopeResolverTest.php + tests/PHPStan + tests/PHPStan/Reflection/ReflectionProviderGoldenTest.php diff --git a/tests/PHPStan/Analyser/NodeScopeResolverTest.php b/tests/PHPStan/Analyser/NodeScopeResolverTest.php index 0621e8d160..1e3afb4e70 100644 --- a/tests/PHPStan/Analyser/NodeScopeResolverTest.php +++ b/tests/PHPStan/Analyser/NodeScopeResolverTest.php @@ -25,13 +25,190 @@ class NodeScopeResolverTest extends TypeInferenceTestCase */ private static function findTestFiles(): iterable { - yield __DIR__ . '/nsrt/static-with-this-chained.php'; + foreach (self::findTestDataFilesFromDirectory(__DIR__ . '/nsrt') as $testFile) { + yield $testFile; + } + + if (PHP_VERSION_ID < 80200 && PHP_VERSION_ID >= 80100) { + yield __DIR__ . '/data/enum-reflection-php81.php'; + } + + if (PHP_VERSION_ID < 80000 && PHP_VERSION_ID >= 70400) { + yield __DIR__ . '/data/bug-4902.php'; + } + + if (PHP_VERSION_ID < 80300) { + if (PHP_VERSION_ID >= 80200) { + yield __DIR__ . '/data/mb-strlen-php82.php'; + } elseif (PHP_VERSION_ID >= 80000) { + yield __DIR__ . '/data/mb-strlen-php8.php'; + } elseif (PHP_VERSION_ID < 70300) { + yield __DIR__ . '/data/mb-strlen-php72.php'; + } else { + yield __DIR__ . '/data/mb-strlen-php73.php'; + } + } + + yield __DIR__ . '/../Rules/Methods/data/bug-6856.php'; + + if (PHP_VERSION_ID < 80000) { + yield __DIR__ . '/data/explode-php74.php'; + } else { + yield __DIR__ . '/data/explode-php80.php'; + } if (PHP_VERSION_ID >= 80000) { yield __DIR__ . '/../Reflection/data/unionTypes.php'; yield __DIR__ . '/../Reflection/data/mixedType.php'; yield __DIR__ . '/../Reflection/data/staticReturnType.php'; } + + if (PHP_INT_SIZE === 8) { + yield __DIR__ . '/data/predefined-constants-64bit.php'; + } else { + yield __DIR__ . '/data/predefined-constants-32bit.php'; + } + + yield __DIR__ . '/../Rules/Variables/data/bug-10577.php'; + yield __DIR__ . '/../Rules/Variables/data/bug-10610.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-2550.php'; + yield __DIR__ . '/../Rules/Properties/data/bug-3777.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-4552.php'; + yield __DIR__ . '/../Rules/Methods/data/infer-array-key.php'; + yield __DIR__ . '/../Rules/Generics/data/bug-3769.php'; + yield __DIR__ . '/../Rules/Generics/data/bug-6301.php'; + yield __DIR__ . '/../Rules/PhpDoc/data/bug-4643.php'; + + if (PHP_VERSION_ID >= 80000) { + yield __DIR__ . '/../Rules/Comparison/data/bug-4857.php'; + } + + yield __DIR__ . '/../Rules/Methods/data/bug-5089.php'; + yield __DIR__ . '/../Rules/Methods/data/unable-to-resolve-callback-parameter-type.php'; + + yield __DIR__ . '/../Rules/Functions/data/varying-acceptor.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-4415.php'; + if (PHP_VERSION_ID >= 70400) { + yield __DIR__ . '/../Rules/Methods/data/bug-5372.php'; + } + yield __DIR__ . '/../Rules/Arrays/data/bug-5372_2.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-5562.php'; + + if (PHP_VERSION_ID >= 80100) { + define('TEST_OBJECT_CONSTANT', new stdClass()); + define('TEST_NULL_CONSTANT', null); + define('TEST_TRUE_CONSTANT', true); + define('TEST_FALSE_CONSTANT', false); + define('TEST_ARRAY_CONSTANT', [true, false, null]); + define('TEST_ENUM_CONSTANT', Foo::ONE); + yield __DIR__ . '/data/new-in-initializers-runtime.php'; + } + + if (PHP_VERSION_ID >= 70400) { + yield __DIR__ . '/../Rules/Comparison/data/bug-6473.php'; + } + + yield __DIR__ . '/../Rules/Methods/data/filter-iterator-child-class.php'; + + yield __DIR__ . '/../Rules/Methods/data/bug-5749.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-5757.php'; + + if (PHP_VERSION_ID >= 80000) { + yield __DIR__ . '/../Rules/Methods/data/bug-6635.php'; + } + + if (PHP_VERSION_ID >= 80300) { + yield __DIR__ . '/../Rules/Constants/data/bug-10212.php'; + } + + yield __DIR__ . '/../Rules/Methods/data/bug-3284.php'; + + if (PHP_VERSION_ID >= 80300) { + yield __DIR__ . '/../Rules/Methods/data/return-type-class-constant.php'; + } + + //define('ALREADY_DEFINED_CONSTANT', true); + //yield from $this->gatherAssertTypes(__DIR__ . '/data/already-defined-constant.php'); + + yield __DIR__ . '/../Rules/Methods/data/conditional-complex-templates.php'; + + yield __DIR__ . '/../Rules/Methods/data/bug-7511.php'; + yield __DIR__ . '/../Rules/Properties/data/trait-mixin.php'; + yield __DIR__ . '/../Rules/Methods/data/trait-mixin.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-4708.php'; + yield __DIR__ . '/../Rules/Functions/data/bug-7156.php'; + yield __DIR__ . '/../Rules/Arrays/data/bug-6364.php'; + yield __DIR__ . '/../Rules/Arrays/data/bug-5758.php'; + yield __DIR__ . '/../Rules/Functions/data/bug-3931.php'; + yield __DIR__ . '/../Rules/Variables/data/bug-7417.php'; + yield __DIR__ . '/../Rules/Arrays/data/bug-7469.php'; + yield __DIR__ . '/../Rules/Variables/data/bug-3391.php'; + + if (PHP_VERSION_ID >= 70400) { + yield __DIR__ . '/../Rules/Functions/data/bug-anonymous-function-method-constant.php'; + } + + if (PHP_VERSION_ID >= 80200) { + yield __DIR__ . '/../Rules/Methods/data/true-typehint.php'; + } + yield __DIR__ . '/../Rules/Arrays/data/bug-6000.php'; + + yield __DIR__ . '/../Rules/Arrays/data/slevomat-foreach-unset-bug.php'; + yield __DIR__ . '/../Rules/Arrays/data/slevomat-foreach-array-key-exists-bug.php'; + + if (PHP_VERSION_ID >= 80000) { + yield __DIR__ . '/../Rules/Comparison/data/bug-7898.php'; + } + + if (PHP_VERSION_ID >= 80000) { + yield __DIR__ . '/../Rules/Functions/data/bug-7823.php'; + } + + yield __DIR__ . '/../Analyser/data/is-resource-specified.php'; + + yield __DIR__ . '/../Rules/Arrays/data/bug-7954.php'; + yield __DIR__ . '/../Rules/Comparison/data/docblock-assert-equality.php'; + yield __DIR__ . '/../Rules/Properties/data/bug-7839.php'; + yield __DIR__ . '/../Rules/Classes/data/bug-5333.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-8174.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-8169.php'; + yield __DIR__ . '/../Rules/Functions/data/bug-8280.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-8277.php'; + yield __DIR__ . '/../Rules/Variables/data/bug-8113.php'; + yield __DIR__ . '/../Rules/Functions/data/bug-8389.php'; + yield __DIR__ . '/../Rules/Arrays/data/bug-8467a.php'; + if (PHP_VERSION_ID >= 80100) { + yield __DIR__ . '/../Rules/Comparison/data/bug-8485.php'; + } + + if (PHP_VERSION_ID >= 80100) { + yield __DIR__ . '/../Rules/Comparison/data/bug-9007.php'; + } + + yield __DIR__ . '/../Rules/DeadCode/data/bug-8620.php'; + + if (PHP_VERSION_ID >= 80200) { + yield __DIR__ . '/../Rules/Constants/data/bug-8957.php'; + } + + if (PHP_VERSION_ID >= 80100) { + yield __DIR__ . '/../Rules/Comparison/data/bug-9499.php'; + } + + yield __DIR__ . '/../Rules/PhpDoc/data/bug-8609-function.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-5365.php'; + yield __DIR__ . '/../Rules/Comparison/data/bug-6551.php'; + yield __DIR__ . '/../Rules/Variables/data/bug-9403.php'; + yield __DIR__ . '/../Rules/Methods/data/bug-9542.php'; + yield __DIR__ . '/../Rules/Functions/data/bug-9803.php'; + yield __DIR__ . '/../Rules/PhpDoc/data/bug-10594.php'; + yield __DIR__ . '/../Rules/Classes/data/bug-11591.php'; + yield __DIR__ . '/../Rules/Classes/data/bug-11591-method-tag.php'; + yield __DIR__ . '/../Rules/Classes/data/bug-11591-property-tag.php'; + yield __DIR__ . '/../Rules/Classes/data/mixin-trait-use.php'; + + yield __DIR__ . '/../Rules/Methods/data/bug-4801.php'; + yield __DIR__ . '/data/template-default.php'; } /**