tools: fix PHPStan 2.0 issues

This commit is contained in:
Dylan K. Taylor 2025-01-07 22:15:50 +00:00
parent b1c7fc017a
commit 47cb04f6a6
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
5 changed files with 44 additions and 12 deletions

View File

@ -523,10 +523,12 @@ function processRemappedStates(array $upgradeTable) : array{
}
}
}
$orderedUnchanged = [];
foreach(Utils::stringifyKeys($unchangedStatesByNewName) as $newName => $unchangedStates){
ksort($unchangedStates);
$unchangedStatesByNewName[$newName] = $unchangedStates;
sort($unchangedStates);
$orderedUnchanged[$newName] = $unchangedStates;
}
$unchangedStatesByNewName = $orderedUnchanged;
$notFlattenedProperties = [];
@ -656,7 +658,8 @@ function processRemappedStates(array $upgradeTable) : array{
usort($list, function(BlockStateUpgradeSchemaBlockRemap $a, BlockStateUpgradeSchemaBlockRemap $b) : int{
return count($b->oldState) <=> count($a->oldState);
});
return array_values($list);
//usort discards keys, so this is already a list<BlockStateUpgradeSchemaBlockRemap>
return $list;
}
/**

View File

@ -76,7 +76,12 @@ function find_regions_recursive(string $dir, array &$files) : void{
in_array(pathinfo($fullPath, PATHINFO_EXTENSION), SUPPORTED_EXTENSIONS, true) &&
is_file($fullPath)
){
$files[$fullPath] = filesize($fullPath);
$size = filesize($fullPath);
if($size === false){
//If we can't get the size of the file, we probably don't have perms to read it, so ignore it
continue;
}
$files[$fullPath] = $size;
}elseif(is_dir($fullPath)){
find_regions_recursive($fullPath, $files);
}
@ -165,7 +170,8 @@ function main(array $argv) : int{
clearstatcache();
$newSize = 0;
foreach(Utils::stringifyKeys($files) as $file => $oldSize){
$newSize += file_exists($file) ? filesize($file) : 0;
$size = file_exists($file) ? filesize($file) : 0;
$newSize += $size !== false ? $size : 0;
}
$diff = $currentSize - $newSize;
$logger->info("Finished compaction of " . count($files) . " files. Freed " . number_format($diff) . " bytes of space (" . round(($diff / $currentSize) * 100, 2) . "% reduction).");

View File

@ -454,7 +454,7 @@ class ParserPacketHandler extends PacketHandler{
//this sorts the data into a canonical order to make diffs between versions reliable
//how the data is ordered doesn't matter as long as it's reproducible
foreach($recipes as $_type => $entries){
foreach(Utils::promoteKeys($recipes) as $_type => $entries){
$_sortedRecipes = [];
$_seen = [];
foreach($entries as $entry){
@ -475,10 +475,10 @@ class ParserPacketHandler extends PacketHandler{
}
ksort($recipes, SORT_STRING);
foreach($recipes as $type => $entries){
foreach(Utils::promoteKeys($recipes) as $type => $entries){
echo "$type: " . count($entries) . "\n";
}
foreach($recipes as $type => $entries){
foreach(Utils::promoteKeys($recipes) as $type => $entries){
file_put_contents(Path::join($recipesPath, $type . '.json'), json_encode($entries, JSON_PRETTY_PRINT) . "\n");
}

View File

@ -31,10 +31,12 @@ namespace pocketmine\tools\generate_item_upgrade_schema;
use pocketmine\errorhandler\ErrorToExceptionHandler;
use pocketmine\utils\Filesystem;
use pocketmine\utils\Utils;
use Symfony\Component\Filesystem\Path;
use function count;
use function dirname;
use function file_put_contents;
use function fwrite;
use function is_array;
use function json_decode;
use function json_encode;
@ -45,6 +47,7 @@ use const JSON_PRETTY_PRINT;
use const JSON_THROW_ON_ERROR;
use const SCANDIR_SORT_ASCENDING;
use const SORT_STRING;
use const STDERR;
require dirname(__DIR__) . '/vendor/autoload.php';
@ -56,7 +59,7 @@ if(count($argv) !== 4){
[, $mappingTableFile, $upgradeSchemasDir, $outputFile] = $argv;
$target = json_decode(Filesystem::fileGetContents($mappingTableFile), true, JSON_THROW_ON_ERROR);
if(!is_array($target)){
if(!is_array($target) || !isset($target["simple"]) || !is_array($target["simple"]) || !isset($target["complex"]) || !is_array($target["complex"])){
\GlobalLogger::get()->error("Invalid mapping table file");
exit(1);
}
@ -93,7 +96,7 @@ foreach($files as $file){
$newDiff = [];
foreach($target["simple"] as $oldId => $newId){
foreach(Utils::promoteKeys($target["simple"]) as $oldId => $newId){
$previousNewId = $merged["simple"][$oldId] ?? null;
if(
$previousNewId === $newId || //if previous schemas already accounted for this
@ -107,8 +110,12 @@ if(isset($newDiff["renamedIds"])){
ksort($newDiff["renamedIds"], SORT_STRING);
}
foreach($target["complex"] as $oldId => $mappings){
foreach($mappings as $meta => $newId){
foreach(Utils::promoteKeys($target["complex"]) as $oldId => $mappings){
if(!is_array($mappings)){
fwrite(STDERR, "Complex mapping for $oldId is not an array\n");
exit(1);
}
foreach(Utils::promoteKeys($mappings) as $meta => $newId){
if(($merged["complex"][$oldId][$meta] ?? null) !== $newId){
if($oldId === "minecraft:spawn_egg" && $meta === 130 && ($newId === "minecraft:axolotl_bucket" || $newId === "minecraft:axolotl_spawn_egg")){
//TODO: hack for vanilla bug workaround

View File

@ -53,6 +53,10 @@ use const STR_PAD_LEFT;
require dirname(__DIR__) . '/vendor/autoload.php';
/**
* @phpstan-param positive-int $scale
* @phpstan-param positive-int $radius
*/
function newImage(int $scale, int $radius) : \GdImage{
$image = Utils::assumeNotFalse(imagecreatetruecolor($scale * $radius * 2, $scale * $radius * 2));
imagesavealpha($image, true);
@ -149,6 +153,18 @@ if($radius === null){
fwrite(STDERR, "Please specify a radius using --radius\n");
exit(1);
}
if($radius < 1){
fwrite(STDERR, "Radius cannot be less than 1\n");
exit(1);
}
if($scale < 1){
fwrite(STDERR, "Scale cannot be less than 1\n");
exit(1);
}
if($nChunksPerStep < 1){
fwrite(STDERR, "Chunks per step cannot be less than 1\n");
exit(1);
}
$outputDirectory = null;
if(isset($opts["output"])){