From 82ccc484f09d1723d431ad4dfe78b7dea9827ad5 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 28 Jan 2026 22:46:56 +0700 Subject: [PATCH 1/4] [TypeDeclaration] Skip with include on SafeDeclareStrictTypesRector --- .../Fixture/skip_with_include_file.php.inc | 8 ++++++++ .../Source/NonTypedApp.php | 15 +++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc create mode 100644 rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Source/NonTypedApp.php diff --git a/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc new file mode 100644 index 00000000000..60a2cd261d5 --- /dev/null +++ b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc @@ -0,0 +1,8 @@ +callDynamic('phpinfo'); \ No newline at end of file From b9744534ffefa1300efaee538f02dd3a6b6e5ce2 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 28 Jan 2026 22:52:29 +0700 Subject: [PATCH 2/4] Fix --- .../TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php b/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php index 1a7e787db3f..7ef0db69dd1 100644 --- a/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php +++ b/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php @@ -8,9 +8,11 @@ use PhpParser\Node\Attribute; use PhpParser\Node\Expr\Assign; use PhpParser\Node\Expr\CallLike; +use PhpParser\Node\Expr\Include_; use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\StaticPropertyFetch; use PhpParser\Node\FunctionLike; +use PhpParser\Node\Stmt\Expression; use PHPStan\Reflection\FunctionReflection; use PHPStan\Reflection\MethodReflection; use PHPStan\Reflection\ParameterReflection; @@ -68,7 +70,8 @@ public function isFileStrictTypeSafe(FileNode $fileNode): bool } } - return true; + $includes = $this->betterNodeFinder->findInstanceOf($fileNode->stmts, Include_::class); + return $includes === []; } private function isCallLikeSafe(CallLike $callLike): bool From 626445714780f55fffee4b228ce6d397dc67922c Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 28 Jan 2026 22:54:11 +0700 Subject: [PATCH 3/4] eol --- .../Fixture/skip_with_include_file.php.inc | 2 +- .../SafeDeclareStrictTypesRector/Source/NonTypedApp.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc index 60a2cd261d5..5e23db4bdab 100644 --- a/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc +++ b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Fixture/skip_with_include_file.php.inc @@ -5,4 +5,4 @@ namespace Rector\Tests\TypeDeclaration\Rector\StmtsAwareInterface\SafeDeclareStr // this included file is not safe include __DIR__ . '/../Source/NonTypedApp.php'; -echo strlen('1'); \ No newline at end of file +echo strlen('1'); diff --git a/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Source/NonTypedApp.php b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Source/NonTypedApp.php index 1f08e83832b..a036b1dbebb 100644 --- a/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Source/NonTypedApp.php +++ b/rules-tests/TypeDeclaration/Rector/StmtsAwareInterface/SafeDeclareStrictTypesRector/Source/NonTypedApp.php @@ -8,8 +8,9 @@ final class NonTypedApp { public function callDynamic(string $func): void { + $func('arg'); } } $a = new NonTypedApp(); -$a->callDynamic('phpinfo'); \ No newline at end of file +$a->callDynamic('phpinfo'); From 41675f3649703fb9fb3926aa44da46c24b6236f8 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 28 Jan 2026 15:55:58 +0000 Subject: [PATCH 4/4] [ci-review] Rector Rectify --- rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php | 1 - 1 file changed, 1 deletion(-) diff --git a/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php b/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php index 7ef0db69dd1..b4bcc5ee66b 100644 --- a/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php +++ b/rules/TypeDeclaration/NodeAnalyzer/StrictTypeSafetyChecker.php @@ -12,7 +12,6 @@ use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\StaticPropertyFetch; use PhpParser\Node\FunctionLike; -use PhpParser\Node\Stmt\Expression; use PHPStan\Reflection\FunctionReflection; use PHPStan\Reflection\MethodReflection; use PHPStan\Reflection\ParameterReflection;