From 799183e13e61e89cc6820ad3132a4147454017c6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 30 Jan 2020 22:11:31 +0000 Subject: [PATCH] make use of phpstan class-string in some areas --- src/pocketmine/Server.php | 4 ++-- src/pocketmine/entity/Entity.php | 3 +-- .../level/format/io/LevelProviderManager.php | 6 +++++- src/pocketmine/level/generator/GeneratorManager.php | 6 +++++- src/pocketmine/plugin/PluginManager.php | 6 +++++- src/pocketmine/tile/Tile.php | 11 +++++++++-- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index f9d577924..b25faf370 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -980,8 +980,8 @@ class Server{ * Generates a new level if it does not exist * * @param string|null $generator Class name that extends pocketmine\level\generator\Generator - * @param mixed[] $options - * @phpstan-param array $options + * @phpstan-param class-string $generator + * @phpstan-param array $options */ public function generateLevel(string $name, int $seed = null, $generator = null, array $options = []) : bool{ if(trim($name) === "" or $this->isLevelGenerated($name)){ diff --git a/src/pocketmine/entity/Entity.php b/src/pocketmine/entity/Entity.php index 2a4141b4d..acda13eb7 100644 --- a/src/pocketmine/entity/Entity.php +++ b/src/pocketmine/entity/Entity.php @@ -382,13 +382,12 @@ abstract class Entity extends Location implements Metadatable, EntityIds{ * @param string $className Class that extends Entity * @param bool $force Force registration even if the entity does not have a valid network ID * @param string[] $saveNames An array of save names which this entity might be saved under. Defaults to the short name of the class itself if empty. + * @phpstan-param class-string $className * * NOTE: The first save name in the $saveNames array will be used when saving the entity to disk. The reflection * name of the class will be appended to the end and only used if no other save names are specified. */ public static function registerEntity(string $className, bool $force = false, array $saveNames = []) : bool{ - /** @var Entity $className */ - $class = new \ReflectionClass($className); if(is_a($className, Entity::class, true) and !$class->isAbstract()){ if($className::NETWORK_ID !== -1){ diff --git a/src/pocketmine/level/format/io/LevelProviderManager.php b/src/pocketmine/level/format/io/LevelProviderManager.php index 009289f8f..67c19256d 100644 --- a/src/pocketmine/level/format/io/LevelProviderManager.php +++ b/src/pocketmine/level/format/io/LevelProviderManager.php @@ -45,6 +45,8 @@ abstract class LevelProviderManager{ } /** + * @phpstan-param class-string $class + * * @return void * @throws \InvalidArgumentException */ @@ -69,10 +71,11 @@ abstract class LevelProviderManager{ * Returns a LevelProvider class for this path, or null * * @return string|null + * @phpstan-return class-string|null */ public static function getProvider(string $path){ foreach(self::$providers as $provider){ - /** @var $provider LevelProvider */ + /** @phpstan-var class-string $provider */ if($provider::isValid($path)){ return $provider; } @@ -85,6 +88,7 @@ abstract class LevelProviderManager{ * Returns a LevelProvider by name, or null if not found * * @return string|null + * @phpstan-return class-string|null */ public static function getProviderByName(string $name){ return self::$providers[trim(strtolower($name))] ?? null; diff --git a/src/pocketmine/level/generator/GeneratorManager.php b/src/pocketmine/level/generator/GeneratorManager.php index 3d73aad11..1f370f26c 100644 --- a/src/pocketmine/level/generator/GeneratorManager.php +++ b/src/pocketmine/level/generator/GeneratorManager.php @@ -51,6 +51,7 @@ final class GeneratorManager{ * @param string $class Fully qualified name of class that extends \pocketmine\level\generator\Generator * @param string $name Alias for this generator type that can be written in configs * @param bool $overwrite Whether to force overwriting any existing registered generator with the same name + * @phpstan-param class-string $class */ public static function addGenerator(string $class, string $name, bool $overwrite = false) : void{ if(!is_subclass_of($class, Generator::class)){ @@ -78,7 +79,9 @@ final class GeneratorManager{ * * @param bool $throwOnMissing @deprecated this is for backwards compatibility only * - * @return string|Generator Name of class that extends Generator (not an actual Generator object) + * @return string Name of class that extends Generator + * @phpstan-return class-string + * * @throws \InvalidArgumentException if the generator type isn't registered */ public static function getGenerator(string $name, bool $throwOnMissing = false){ @@ -96,6 +99,7 @@ final class GeneratorManager{ * Returns the registered name of the given Generator class. * * @param string $class Fully qualified name of class that extends \pocketmine\level\generator\Generator + * @phpstan-param class-string $class */ public static function getGeneratorName(string $class) : string{ foreach(self::$list as $name => $c){ diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index df793183e..a7450078d 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -82,7 +82,10 @@ class PluginManager{ /** @var Plugin[] */ protected $enabledPlugins = []; - /** @var PluginLoader[] */ + /** + * @var PluginLoader[] + * @phpstan-var array, PluginLoader> + */ protected $fileAssociations = []; /** @var string|null */ @@ -197,6 +200,7 @@ class PluginManager{ /** * @param string[]|null $newLoaders + * @phpstan-param list> $newLoaders * * @return Plugin[] */ diff --git a/src/pocketmine/tile/Tile.php b/src/pocketmine/tile/Tile.php index 3b4fde7ff..ac044a840 100644 --- a/src/pocketmine/tile/Tile.php +++ b/src/pocketmine/tile/Tile.php @@ -68,9 +68,15 @@ abstract class Tile extends Position{ /** @var int */ public static $tileCount = 1; - /** @var string[] classes that extend Tile */ + /** + * @var string[] classes that extend Tile + * @phpstan-var array> + */ private static $knownTiles = []; - /** @var string[][] */ + /** + * @var string[][] + * @phpstan-var array, list> + */ private static $saveNames = []; /** @var string */ @@ -116,6 +122,7 @@ abstract class Tile extends Position{ /** * @param string[] $saveNames + * @phpstan-param class-string $className * * @throws \ReflectionException */