From d8a67258798255875bdd8d0d983d89d61e957c88 Mon Sep 17 00:00:00 2001 From: Brandon Olivares Date: Thu, 26 Aug 2021 04:05:50 -0400 Subject: [PATCH] NarrowUnionTypeDocRector should skip literal strings (#763) --- .../TypeAnalyzer/UnionTypeAnalyzer.php | 3 ++- .../Fixture/skip_constant_union.php.inc | 20 +++++++++++++++++++ .../Fixture/skip_literal_union.php.inc | 15 ++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_constant_union.php.inc create mode 100644 rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_literal_union.php.inc diff --git a/packages/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php b/packages/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php index 3d92c248b6..b628d04c81 100644 --- a/packages/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php +++ b/packages/PHPStanStaticTypeMapper/TypeAnalyzer/UnionTypeAnalyzer.php @@ -6,6 +6,7 @@ use PHPStan\Type\ArrayType; use PHPStan\Type\BooleanType; +use PHPStan\Type\Constant\ConstantStringType; use PHPStan\Type\FloatType; use PHPStan\Type\IntegerType; use PHPStan\Type\IterableType; @@ -102,7 +103,7 @@ public function isScalar(UnionType $unionType): bool } foreach ($types as $type) { - if ($type instanceof StringType) { + if ($type instanceof StringType && !$type instanceof ConstantStringType) { continue; } if ($type instanceof FloatType) { diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_constant_union.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_constant_union.php.inc new file mode 100644 index 0000000000..9fbf4bb7ba --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_constant_union.php.inc @@ -0,0 +1,20 @@ + diff --git a/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_literal_union.php.inc b/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_literal_union.php.inc new file mode 100644 index 0000000000..7c0f7a2f64 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/ClassMethod/NarrowUnionTypeDocRector/Fixture/skip_literal_union.php.inc @@ -0,0 +1,15 @@ +