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..91b40853ab --- /dev/null +++ b/tests/PHPStan/Analyser/nsrt/static-with-this-chained.php @@ -0,0 +1,73 @@ +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); + */ + } +}