mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-08 02:42:58 +00:00
Deal with a whole lot of PHPStan suppressed key casting errors
closes #6534
This commit is contained in:
@ -70,7 +70,6 @@ final class ApiVersion{
|
||||
* @return string[]
|
||||
*/
|
||||
public static function checkAmbiguousVersions(array $versions) : array{
|
||||
/** @var VersionString[][] $indexedVersions */
|
||||
$indexedVersions = [];
|
||||
|
||||
foreach($versions as $str){
|
||||
@ -85,9 +84,8 @@ final class ApiVersion{
|
||||
}
|
||||
}
|
||||
|
||||
/** @var VersionString[] $result */
|
||||
$result = [];
|
||||
foreach($indexedVersions as $major => $list){
|
||||
foreach($indexedVersions as $list){
|
||||
if(count($list) > 1){
|
||||
array_push($result, ...$list);
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ namespace pocketmine\plugin;
|
||||
use pocketmine\permission\Permission;
|
||||
use pocketmine\permission\PermissionParser;
|
||||
use pocketmine\permission\PermissionParserException;
|
||||
use pocketmine\utils\Utils;
|
||||
use function array_map;
|
||||
use function array_values;
|
||||
use function get_debug_type;
|
||||
@ -151,7 +152,7 @@ class PluginDescription{
|
||||
$this->compatibleOperatingSystems = array_map("\strval", (array) ($plugin[self::KEY_OS] ?? []));
|
||||
|
||||
if(isset($plugin[self::KEY_COMMANDS]) && is_array($plugin[self::KEY_COMMANDS])){
|
||||
foreach($plugin[self::KEY_COMMANDS] as $commandName => $commandData){
|
||||
foreach(Utils::promoteKeys($plugin[self::KEY_COMMANDS]) as $commandName => $commandData){
|
||||
if(!is_string($commandName)){
|
||||
throw new PluginDescriptionParseException("Invalid Plugin commands, key must be the name of the command");
|
||||
}
|
||||
@ -177,7 +178,7 @@ class PluginDescription{
|
||||
if(isset($plugin[self::KEY_EXTENSIONS])){
|
||||
$extensions = (array) $plugin[self::KEY_EXTENSIONS];
|
||||
$isLinear = $extensions === array_values($extensions);
|
||||
foreach($extensions as $k => $v){
|
||||
foreach(Utils::promoteKeys($extensions) as $k => $v){
|
||||
if($isLinear){
|
||||
$k = $v;
|
||||
$v = "*";
|
||||
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\plugin;
|
||||
|
||||
use pocketmine\utils\Utils;
|
||||
use function array_flip;
|
||||
use function is_array;
|
||||
use function is_float;
|
||||
@ -77,7 +78,7 @@ class PluginGraylist{
|
||||
if(!is_array($array["plugins"])){
|
||||
throw new \InvalidArgumentException("\"plugins\" must be an array");
|
||||
}
|
||||
foreach($array["plugins"] as $k => $v){
|
||||
foreach(Utils::promoteKeys($array["plugins"]) as $k => $v){
|
||||
if(!is_string($v) && !is_int($v) && !is_float($v)){
|
||||
throw new \InvalidArgumentException("\"plugins\" contains invalid element at position $k");
|
||||
}
|
||||
|
@ -69,10 +69,16 @@ use function strtolower;
|
||||
* Manages all the plugins
|
||||
*/
|
||||
class PluginManager{
|
||||
/** @var Plugin[] */
|
||||
/**
|
||||
* @var Plugin[]
|
||||
* @phpstan-var array<string, Plugin>
|
||||
*/
|
||||
protected array $plugins = [];
|
||||
|
||||
/** @var Plugin[] */
|
||||
/**
|
||||
* @var Plugin[]
|
||||
* @phpstan-var array<string, Plugin>
|
||||
*/
|
||||
protected array $enabledPlugins = [];
|
||||
|
||||
/** @var array<string, array<string, true>> */
|
||||
@ -114,6 +120,7 @@ class PluginManager{
|
||||
|
||||
/**
|
||||
* @return Plugin[]
|
||||
* @phpstan-return array<string, Plugin>
|
||||
*/
|
||||
public function getPlugins() : array{
|
||||
return $this->plugins;
|
||||
@ -526,7 +533,7 @@ class PluginManager{
|
||||
}
|
||||
|
||||
public function tickSchedulers(int $currentTick) : void{
|
||||
foreach($this->enabledPlugins as $pluginName => $p){
|
||||
foreach(Utils::promoteKeys($this->enabledPlugins) as $pluginName => $p){
|
||||
if(isset($this->enabledPlugins[$pluginName])){
|
||||
//the plugin may have been disabled as a result of updating other plugins' schedulers, and therefore
|
||||
//removed from enabledPlugins; however, foreach will still see it due to copy-on-write
|
||||
|
Reference in New Issue
Block a user