Skip to content

Commit

Permalink
Type::getObjectClassReflections()
Browse files Browse the repository at this point in the history
  • Loading branch information
ondrejmirtes committed Feb 20, 2023
1 parent 93113cb commit 4c7046e
Show file tree
Hide file tree
Showing 33 changed files with 172 additions and 9 deletions.
8 changes: 4 additions & 4 deletions phpstan-baseline.neon
Expand Up @@ -484,7 +484,7 @@ parameters:
path: src/Rules/Comparison/ImpossibleCheckTypeHelper.php

-
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) instead\\.$#"
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) or Type\\:\\:getObjectClassReflections\\(\\) instead\\.$#"
count: 1
path: src/Rules/Comparison/ImpossibleCheckTypeHelper.php

Expand Down Expand Up @@ -904,7 +904,7 @@ parameters:
path: src/Type/Generic/GenericObjectType.php

-
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) instead\\.$#"
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) or Type\\:\\:getObjectClassReflections\\(\\) instead\\.$#"
count: 1
path: src/Type/Generic/GenericObjectType.php

Expand Down Expand Up @@ -1210,7 +1210,7 @@ parameters:
path: src/Type/Php/DefinedConstantTypeSpecifyingExtension.php

-
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) instead\\.$#"
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) or Type\\:\\:getObjectClassReflections\\(\\) instead\\.$#"
count: 1
path: src/Type/Php/DsMapDynamicReturnTypeExtension.php

Expand Down Expand Up @@ -1423,7 +1423,7 @@ parameters:
path: src/Type/TypeUtils.php

-
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) instead\\.$#"
message: "#^Doing instanceof PHPStan\\\\Type\\\\TypeWithClassName is error\\-prone and deprecated\\. Use Type\\:\\:getObjectClassNames\\(\\) or Type\\:\\:getObjectClassReflections\\(\\) instead\\.$#"
count: 1
path: src/Type/TypeUtils.php

Expand Down
2 changes: 1 addition & 1 deletion src/Rules/Api/ApiInstanceofTypeRule.php
Expand Up @@ -51,7 +51,7 @@ class ApiInstanceofTypeRule implements Rule
{

private const MAP = [
TypeWithClassName::class => 'Type::getObjectClassNames()',
TypeWithClassName::class => 'Type::getObjectClassNames() or Type::getObjectClassReflections()',
EnumCaseObjectType::class => 'Type::getEnumCases()',
ConstantArrayType::class => 'Type::getConstantArrays()',
ArrayType::class => 'Type::isArray() or Type::getArrays()',
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/AccessoryArrayListType.php
Expand Up @@ -54,6 +54,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getArrays(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/AccessoryLiteralStringType.php
Expand Up @@ -55,6 +55,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/AccessoryNonEmptyStringType.php
Expand Up @@ -56,6 +56,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/AccessoryNonFalsyStringType.php
Expand Up @@ -57,6 +57,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/AccessoryNumericStringType.php
Expand Up @@ -55,6 +55,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/HasMethodType.php
Expand Up @@ -49,6 +49,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

private function getCanonicalMethodName(): string
{
return strtolower($this->methodName);
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/HasOffsetType.php
Expand Up @@ -67,6 +67,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/HasOffsetValueType.php
Expand Up @@ -66,6 +66,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/HasPropertyType.php
Expand Up @@ -46,6 +46,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/NonEmptyArrayType.php
Expand Up @@ -51,6 +51,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getArrays(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Accessory/OversizedArrayType.php
Expand Up @@ -49,6 +49,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getArrays(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/ArrayType.php
Expand Up @@ -77,6 +77,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getArrays(): array
{
return [$this];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/CallableType.php
Expand Up @@ -80,6 +80,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
7 changes: 6 additions & 1 deletion src/Type/ClosureType.php
Expand Up @@ -100,7 +100,12 @@ public function getReferencedClasses(): array

public function getObjectClassNames(): array
{
return [$this->objectType->getClassName()];
return $this->objectType->getObjectClassNames();
}

public function getObjectClassReflections(): array
{
return $this->objectType->getObjectClassReflections();
}

public function accepts(Type $type, bool $strictTypes): TrinaryLogic
Expand Down
5 changes: 5 additions & 0 deletions src/Type/FloatType.php
Expand Up @@ -52,6 +52,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
12 changes: 12 additions & 0 deletions src/Type/IntersectionType.php
Expand Up @@ -122,6 +122,18 @@ public function getObjectClassNames(): array
return array_values(array_unique($objectClassNames));
}

public function getObjectClassReflections(): array
{
$reflections = [];
foreach ($this->types as $type) {
foreach ($type->getObjectClassReflections() as $reflection) {
$reflections[] = $reflection;
}
}

return $reflections;
}

public function getArrays(): array
{
$arrays = [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/IterableType.php
Expand Up @@ -66,6 +66,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/JustNullableTypeTrait.php
Expand Up @@ -21,6 +21,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function accepts(Type $type, bool $strictTypes): TrinaryLogic
{
return $this->acceptsWithReason($type, $strictTypes)->result;
Expand Down
5 changes: 5 additions & 0 deletions src/Type/MixedType.php
Expand Up @@ -69,6 +69,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getArrays(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/NeverType.php
Expand Up @@ -62,6 +62,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/NullType.php
Expand Up @@ -47,6 +47,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
10 changes: 10 additions & 0 deletions src/Type/ObjectType.php
Expand Up @@ -236,6 +236,16 @@ public function getObjectClassNames(): array
return [$this->className];
}

public function getObjectClassReflections(): array
{
$classReflection = $this->getClassReflection();
if ($classReflection === null) {
return [];
}

return [$classReflection];
}

public function accepts(Type $type, bool $strictTypes): TrinaryLogic
{
return $this->acceptsWithReason($type, $strictTypes)->result;
Expand Down
5 changes: 5 additions & 0 deletions src/Type/ObjectWithoutClassType.php
Expand Up @@ -45,6 +45,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function accepts(Type $type, bool $strictTypes): TrinaryLogic
{
return $this->acceptsWithReason($type, $strictTypes)->result;
Expand Down
5 changes: 5 additions & 0 deletions src/Type/OffsetAccessType.php
Expand Up @@ -35,6 +35,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getReferencedTemplateTypes(TemplateTypeVariance $positionVariance): array
{
return array_merge(
Expand Down
5 changes: 5 additions & 0 deletions src/Type/StaticType.php
Expand Up @@ -109,6 +109,11 @@ public function getObjectClassNames(): array
return $this->getStaticObjectType()->getObjectClassNames();
}

public function getObjectClassReflections(): array
{
return $this->getStaticObjectType()->getObjectClassReflections();
}

public function getArrays(): array
{
return $this->getStaticObjectType()->getArrays();
Expand Down
5 changes: 5 additions & 0 deletions src/Type/StrictMixedType.php
Expand Up @@ -39,6 +39,11 @@ public function getObjectClassNames(): array
return [];
}

public function getObjectClassReflections(): array
{
return [];
}

public function getConstantStrings(): array
{
return [];
Expand Down
5 changes: 5 additions & 0 deletions src/Type/Traits/LateResolvableTypeTrait.php
Expand Up @@ -28,6 +28,11 @@ public function getObjectClassNames(): array
return $this->resolve()->getObjectClassNames();
}

public function getObjectClassReflections(): array
{
return $this->resolve()->getObjectClassReflections();
}

public function getArrays(): array
{
return $this->resolve()->getArrays();
Expand Down

0 comments on commit 4c7046e

Please sign in to comment.