From 094d5b4dee300b35a4ad2afdec4c2bfb41a531b8 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: 2025年9月10日 23:27:05 +0200 Subject: [PATCH] Treat Redis::connect as non-deterministic --- bin/functionMetadata_original.php | 4 ++++ resources/functionMetadata.php | 2 ++ .../TooWidePropertyTypeRuleTest.php | 6 +++++ .../TooWideTypehints/data/bug-pr-4318.php | 22 +++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 tests/PHPStan/Rules/TooWideTypehints/data/bug-pr-4318.php diff --git a/bin/functionMetadata_original.php b/bin/functionMetadata_original.php index d429d11b59..ed5d223fa8 100644 --- a/bin/functionMetadata_original.php +++ b/bin/functionMetadata_original.php @@ -170,6 +170,10 @@ 'DateTimeImmutable::getTimestamp' => ['hasSideEffects' => false], 'DateTimeImmutable::getTimezone' => ['hasSideEffects' => false], + // affects isConnected() + 'Redis::connect' => ['hasSideEffects' => true], + 'Redis::pconnect' => ['hasSideEffects' => true], + 'SplDoublyLinkedList::pop' => ['hasSideEffects' => true], 'SplDoublyLinkedList::shift' => ['hasSideEffects' => true], diff --git a/resources/functionMetadata.php b/resources/functionMetadata.php index 073ac1050f..b58fa77c7f 100644 --- a/resources/functionMetadata.php +++ b/resources/functionMetadata.php @@ -452,6 +452,8 @@ 'NumberFormatter::getPattern' => ['hasSideEffects' => false], 'NumberFormatter::getSymbol' => ['hasSideEffects' => false], 'NumberFormatter::getTextAttribute' => ['hasSideEffects' => false], + 'Redis::connect' => ['hasSideEffects' => true], + 'Redis::pconnect' => ['hasSideEffects' => true], 'ReflectionAttribute::getArguments' => ['hasSideEffects' => false], 'ReflectionAttribute::getName' => ['hasSideEffects' => false], 'ReflectionAttribute::getTarget' => ['hasSideEffects' => false], diff --git a/tests/PHPStan/Rules/TooWideTypehints/TooWidePropertyTypeRuleTest.php b/tests/PHPStan/Rules/TooWideTypehints/TooWidePropertyTypeRuleTest.php index ea7c4464c5..ec380182c8 100644 --- a/tests/PHPStan/Rules/TooWideTypehints/TooWidePropertyTypeRuleTest.php +++ b/tests/PHPStan/Rules/TooWideTypehints/TooWidePropertyTypeRuleTest.php @@ -106,4 +106,10 @@ public function testBug13384bOff(): void $this->analyse([__DIR__ . '/data/bug-13384b.php'], []); } + public function testBugPR4318(): void + { + $this->reportTooWideBool = true; + $this->analyse([__DIR__ . '/data/bug-pr-4318.php'], []); + } + } diff --git a/tests/PHPStan/Rules/TooWideTypehints/data/bug-pr-4318.php b/tests/PHPStan/Rules/TooWideTypehints/data/bug-pr-4318.php new file mode 100644 index 0000000000..6c85b2a519 --- /dev/null +++ b/tests/PHPStan/Rules/TooWideTypehints/data/bug-pr-4318.php @@ -0,0 +1,22 @@ +isConnected()) { + return; + } + + $driver->connect(''); + $this->isConnected = $driver->isConnected(); + echo $this->isConnected; + } + +}

AltStyle によって変換されたページ (->オリジナル) /