mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-20 18:06:40 +00:00
added some phpstan-specific generic type annotations
This commit is contained in:
parent
acaa34785f
commit
0e1cea043a
@ -1,4 +1,5 @@
|
|||||||
includes:
|
includes:
|
||||||
|
- tests/phpstan/configs/ds-bugs.neon
|
||||||
- tests/phpstan/configs/gc-hacks.neon
|
- tests/phpstan/configs/gc-hacks.neon
|
||||||
- tests/phpstan/configs/gradual-level6.neon
|
- tests/phpstan/configs/gradual-level6.neon
|
||||||
- tests/phpstan/configs/optional-com-dotnet.neon
|
- tests/phpstan/configs/optional-com-dotnet.neon
|
||||||
|
@ -55,7 +55,10 @@ class Banner extends Transparent{
|
|||||||
/** @var DyeColor */
|
/** @var DyeColor */
|
||||||
protected $baseColor;
|
protected $baseColor;
|
||||||
|
|
||||||
/** @var Deque|BannerPattern[] */
|
/**
|
||||||
|
* @var Deque|BannerPattern[]
|
||||||
|
* @phpstan-var Deque<BannerPattern>
|
||||||
|
*/
|
||||||
protected $patterns;
|
protected $patterns;
|
||||||
|
|
||||||
public function __construct(BlockIdentifierFlattened $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
|
public function __construct(BlockIdentifierFlattened $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
|
||||||
@ -125,6 +128,7 @@ class Banner extends Transparent{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Deque|BannerPattern[]
|
* @return Deque|BannerPattern[]
|
||||||
|
* @phpstan-return Deque<BannerPattern>
|
||||||
*/
|
*/
|
||||||
public function getPatterns() : Deque{
|
public function getPatterns() : Deque{
|
||||||
return $this->patterns;
|
return $this->patterns;
|
||||||
@ -132,6 +136,7 @@ class Banner extends Transparent{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Deque|BannerPattern[] $patterns
|
* @param Deque|BannerPattern[] $patterns
|
||||||
|
* @phpstan-param Deque<BannerPattern> $patterns
|
||||||
*/
|
*/
|
||||||
public function setPatterns(Deque $patterns) : void{
|
public function setPatterns(Deque $patterns) : void{
|
||||||
$checked = $patterns->filter(function($v){ return $v instanceof BannerPattern; });
|
$checked = $patterns->filter(function($v){ return $v instanceof BannerPattern; });
|
||||||
|
@ -46,7 +46,10 @@ class Banner extends Spawnable{
|
|||||||
/** @var DyeColor */
|
/** @var DyeColor */
|
||||||
private $baseColor;
|
private $baseColor;
|
||||||
|
|
||||||
/** @var BannerPattern[]|Deque */
|
/**
|
||||||
|
* @var BannerPattern[]|Deque
|
||||||
|
* @phpstan-var Deque<BannerPattern>
|
||||||
|
*/
|
||||||
private $patterns;
|
private $patterns;
|
||||||
|
|
||||||
public function __construct(World $world, Vector3 $pos){
|
public function __construct(World $world, Vector3 $pos){
|
||||||
@ -113,6 +116,7 @@ class Banner extends Spawnable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return BannerPattern[]|Deque
|
* @return BannerPattern[]|Deque
|
||||||
|
* @phpstan-return Deque<BannerPattern>
|
||||||
*/
|
*/
|
||||||
public function getPatterns() : Deque{
|
public function getPatterns() : Deque{
|
||||||
return $this->patterns;
|
return $this->patterns;
|
||||||
@ -120,6 +124,7 @@ class Banner extends Spawnable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param BannerPattern[]|Deque $patterns
|
* @param BannerPattern[]|Deque $patterns
|
||||||
|
* @phpstan-param Deque<BannerPattern> $patterns
|
||||||
*/
|
*/
|
||||||
public function setPatterns(Deque $patterns) : void{
|
public function setPatterns(Deque $patterns) : void{
|
||||||
$this->patterns = $patterns;
|
$this->patterns = $patterns;
|
||||||
|
@ -58,11 +58,24 @@ class HandlerListManager{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ReflectionClass $class
|
||||||
|
* @phpstan-param \ReflectionClass<Event> $class
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
private static function isValidClass(\ReflectionClass $class) : bool{
|
private static function isValidClass(\ReflectionClass $class) : bool{
|
||||||
$tags = Utils::parseDocComment((string) $class->getDocComment());
|
$tags = Utils::parseDocComment((string) $class->getDocComment());
|
||||||
return !$class->isAbstract() || isset($tags["allowHandle"]);
|
return !$class->isAbstract() || isset($tags["allowHandle"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \ReflectionClass $class
|
||||||
|
* @phpstan-param \ReflectionClass<Event> $class
|
||||||
|
*
|
||||||
|
* @return \ReflectionClass|null
|
||||||
|
* @phpstan-return \ReflectionClass<Event>|null
|
||||||
|
*/
|
||||||
private static function resolveNearestHandleableParent(\ReflectionClass $class) : ?\ReflectionClass{
|
private static function resolveNearestHandleableParent(\ReflectionClass $class) : ?\ReflectionClass{
|
||||||
for($parent = $class->getParentClass(); $parent !== false && !self::isValidClass($parent); $parent = $parent->getParentClass()){
|
for($parent = $class->getParentClass(); $parent !== false && !self::isValidClass($parent); $parent = $parent->getParentClass()){
|
||||||
//NOOP
|
//NOOP
|
||||||
|
@ -40,7 +40,10 @@ class Banner extends Item{
|
|||||||
/** @var DyeColor */
|
/** @var DyeColor */
|
||||||
private $color;
|
private $color;
|
||||||
|
|
||||||
/** @var BannerPattern[]|Deque */
|
/**
|
||||||
|
* @var BannerPattern[]|Deque
|
||||||
|
* @phpstan-var Deque<BannerPattern>
|
||||||
|
*/
|
||||||
private $patterns;
|
private $patterns;
|
||||||
|
|
||||||
public function __construct(int $id, int $variant, string $name, DyeColor $color){
|
public function __construct(int $id, int $variant, string $name, DyeColor $color){
|
||||||
@ -67,6 +70,7 @@ class Banner extends Item{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Deque|BannerPattern[]
|
* @return Deque|BannerPattern[]
|
||||||
|
* @phpstan-return Deque<BannerPattern>
|
||||||
*/
|
*/
|
||||||
public function getPatterns() : Deque{
|
public function getPatterns() : Deque{
|
||||||
return $this->patterns;
|
return $this->patterns;
|
||||||
@ -74,6 +78,7 @@ class Banner extends Item{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Deque|BannerPattern[] $patterns
|
* @param Deque|BannerPattern[] $patterns
|
||||||
|
* @phpstan-param Deque<BannerPattern> $patterns
|
||||||
*
|
*
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
|
@ -86,9 +86,15 @@ class Item implements \JsonSerializable{
|
|||||||
*/
|
*/
|
||||||
protected $blockEntityTag = null;
|
protected $blockEntityTag = null;
|
||||||
|
|
||||||
/** @var Set|string[] */
|
/**
|
||||||
|
* @var Set|string[]
|
||||||
|
* @phpstan-var Set<string>
|
||||||
|
*/
|
||||||
protected $canPlaceOn;
|
protected $canPlaceOn;
|
||||||
/** @var Set|string[] */
|
/**
|
||||||
|
* @var Set|string[]
|
||||||
|
* @phpstan-var Set<string>
|
||||||
|
*/
|
||||||
protected $canDestroy;
|
protected $canDestroy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -202,6 +208,7 @@ class Item implements \JsonSerializable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Set|string[]
|
* @return Set|string[]
|
||||||
|
* @phpstan-return Set<string>
|
||||||
*/
|
*/
|
||||||
public function getCanPlaceOn() : Set{
|
public function getCanPlaceOn() : Set{
|
||||||
return $this->canPlaceOn;
|
return $this->canPlaceOn;
|
||||||
@ -209,6 +216,7 @@ class Item implements \JsonSerializable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Set|string[] $canPlaceOn
|
* @param Set|string[] $canPlaceOn
|
||||||
|
* @phpstan-param Set<string> $canPlaceOn
|
||||||
*/
|
*/
|
||||||
public function setCanPlaceOn(Set $canPlaceOn) : void{
|
public function setCanPlaceOn(Set $canPlaceOn) : void{
|
||||||
$this->canPlaceOn = $canPlaceOn;
|
$this->canPlaceOn = $canPlaceOn;
|
||||||
@ -216,6 +224,7 @@ class Item implements \JsonSerializable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Set|string[]
|
* @return Set|string[]
|
||||||
|
* @phpstan-return Set<string>
|
||||||
*/
|
*/
|
||||||
public function getCanDestroy() : Set{
|
public function getCanDestroy() : Set{
|
||||||
return $this->canDestroy;
|
return $this->canDestroy;
|
||||||
@ -223,6 +232,7 @@ class Item implements \JsonSerializable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Set|string[] $canDestroy
|
* @param Set|string[] $canDestroy
|
||||||
|
* @phpstan-param Set<string> $canDestroy
|
||||||
*/
|
*/
|
||||||
public function setCanDestroy(Set $canDestroy) : void{
|
public function setCanDestroy(Set $canDestroy) : void{
|
||||||
$this->canDestroy = $canDestroy;
|
$this->canDestroy = $canDestroy;
|
||||||
|
@ -34,7 +34,10 @@ abstract class WritableBookBase extends Item{
|
|||||||
public const TAG_PAGE_TEXT = "text"; //TAG_String
|
public const TAG_PAGE_TEXT = "text"; //TAG_String
|
||||||
public const TAG_PAGE_PHOTONAME = "photoname"; //TAG_String - TODO
|
public const TAG_PAGE_PHOTONAME = "photoname"; //TAG_String - TODO
|
||||||
|
|
||||||
/** @var WritableBookPage[]|Deque */
|
/**
|
||||||
|
* @var WritableBookPage[]|Deque
|
||||||
|
* @phpstan-var Deque<WritableBookPage>
|
||||||
|
*/
|
||||||
private $pages;
|
private $pages;
|
||||||
|
|
||||||
public function __construct(int $id, int $variant, string $name){
|
public function __construct(int $id, int $variant, string $name){
|
||||||
|
@ -48,6 +48,7 @@ use function unserialize;
|
|||||||
abstract class AsyncTask extends \Threaded{
|
abstract class AsyncTask extends \Threaded{
|
||||||
/**
|
/**
|
||||||
* @var \ArrayObject|mixed[]|null object hash => mixed data
|
* @var \ArrayObject|mixed[]|null object hash => mixed data
|
||||||
|
* @phpstan-var \ArrayObject<int, array<string, mixed>>|null
|
||||||
*
|
*
|
||||||
* Used to store objects which are only needed on one thread and should not be serialized.
|
* Used to store objects which are only needed on one thread and should not be serialized.
|
||||||
*/
|
*/
|
||||||
|
9
tests/phpstan/configs/ds-bugs.neon
Normal file
9
tests/phpstan/configs/ds-bugs.neon
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
parameters:
|
||||||
|
ignoreErrors:
|
||||||
|
-
|
||||||
|
message: "#^Cannot (access an|assign new) offset (on|to) Ds\\\\Deque\\<.+\\>\\.$#"
|
||||||
|
path: ../../../src
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Cannot (access|assign) offset (int|-?\\d+) (on|to) Ds\\\\Deque\\<.+\\>\\.$#"
|
||||||
|
path: ../../../src
|
@ -33,11 +33,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../../src/block/Liquid.php
|
path: ../../../src/block/Liquid.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Cannot access an offset on Ds\\\\Deque&iterable\\<pocketmine\\\\block\\\\utils\\\\BannerPattern\\>\\.$#"
|
|
||||||
count: 1
|
|
||||||
path: ../../../src/block/tile/Banner.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Call to function assert\\(\\) with false and 'unknown hit type' will always evaluate to false\\.$#"
|
message: "#^Call to function assert\\(\\) with false and 'unknown hit type' will always evaluate to false\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
@ -54,11 +49,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: ../../../src/item/ItemFactory.php
|
path: ../../../src/item/ItemFactory.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Cannot access offset int on Ds\\\\Deque&iterable\\<pocketmine\\\\item\\\\WritableBookPage\\>\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: ../../../src/item/WritableBookBase.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
#object to array cast analysis bug
|
#object to array cast analysis bug
|
||||||
message: "#^Call to function is_object\\(\\) with int will always evaluate to false\\.$#"
|
message: "#^Call to function is_object\\(\\) with int will always evaluate to false\\.$#"
|
||||||
|
@ -35,6 +35,9 @@ use PHPStan\Type\VerbosityLevel;
|
|||||||
use pocketmine\utils\EnumTrait;
|
use pocketmine\utils\EnumTrait;
|
||||||
use function sprintf;
|
use function sprintf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phpstan-implements Rule<BinaryOp>
|
||||||
|
*/
|
||||||
class DisallowEnumComparisonRule implements Rule{
|
class DisallowEnumComparisonRule implements Rule{
|
||||||
|
|
||||||
public function getNodeType() : string{
|
public function getNodeType() : string{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user