includes:
	- tests/phpstan/configs/com-dotnet-magic.neon
	- tests/phpstan/configs/custom-leveldb.neon
	- tests/phpstan/configs/gc-hacks.neon
	- tests/phpstan/configs/gradual-level6.neon
	- tests/phpstan/configs/phpstan-bugs.neon
	- tests/phpstan/configs/pthreads-bugs.neon
	- tests/phpstan/configs/runtime-type-checks.neon

parameters:
	level: 5
	autoload_files:
		- tests/phpstan/bootstrap.php
		- src/pocketmine/PocketMine.php
		- build/server-phar.php
	paths:
		- src
		- build/server-phar.php
	dynamicConstantNames:
		- pocketmine\IS_DEVELOPMENT_BUILD
		- pocketmine\DEBUG
	reportUnmatchedIgnoredErrors: false #no other way to silence platform-specific non-warnings
	ignoreErrors:
		-
			message: "#^Cannot instantiate interface pocketmine\\\\level\\\\format\\\\io\\\\LevelProvider\\.$#"
			count: 1
			path: src/pocketmine/Server.php

		-
			message: "#^Call to an undefined method pocketmine\\\\command\\\\CommandSender\\:\\:teleport\\(\\)\\.$#"
			count: 1
			path: src/pocketmine/command/defaults/TeleportCommand.php
#			comment: "not actually possible, but high cost to fix warning"

		-
			message: "#^Array \\(array\\<string\\>\\) does not accept pocketmine\\\\entity\\\\Entity\\.$#"
			count: 2
			path: src/pocketmine/entity/Entity.php

		-
			message: "#^Invalid array key type pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/entity/Entity.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\EntityDeathEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\Living but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/EntityDeathEvent.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\EntityShootBowEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\Living but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/EntityShootBowEvent.php

		-
			message: "#^Property pocketmine\\\\event\\\\entity\\\\EntityShootBowEvent\\:\\:\\$projectile \\(pocketmine\\\\entity\\\\projectile\\\\Projectile\\) does not accept pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/EntityShootBowEvent.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\ItemDespawnEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\object\\\\ItemEntity but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/ItemDespawnEvent.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\ItemSpawnEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\object\\\\ItemEntity but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/ItemSpawnEvent.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\ProjectileHitEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\projectile\\\\Projectile but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/ProjectileHitEvent.php

		-
			message: "#^Method pocketmine\\\\event\\\\entity\\\\ProjectileLaunchEvent\\:\\:getEntity\\(\\) should return pocketmine\\\\entity\\\\projectile\\\\Projectile but returns pocketmine\\\\entity\\\\Entity\\.$#"
			count: 1
			path: src/pocketmine/event/entity/ProjectileLaunchEvent.php

		-
			message: "#^Constructor of class pocketmine\\\\level\\\\generator\\\\hell\\\\Nether has an unused parameter \\$options\\.$#"
			count: 1
			path: src/pocketmine/level/generator/hell/Nether.php

		-
			message: "#^Constructor of class pocketmine\\\\level\\\\generator\\\\normal\\\\Normal has an unused parameter \\$options\\.$#"
			count: 1
			path: src/pocketmine/level/generator/normal/Normal.php

		-
			message: "#^Constructor of class pocketmine\\\\scheduler\\\\TaskScheduler has an unused parameter \\$logger\\.$#"
			count: 1
			path: src/pocketmine/scheduler/TaskScheduler.php

		-
			message: "#^Constant pocketmine\\\\COMPOSER_AUTOLOADER_PATH not found\\.$#"
			path: src

		-
			message: "#^Constant pocketmine\\\\DATA not found\\.$#"
			path: src

		-
			message: "#^Constant pocketmine\\\\GIT_COMMIT not found\\.$#"
			path: src

		-
			message: "#^Constant pocketmine\\\\PLUGIN_PATH not found\\.$#"
			path: src

		-
			message: "#^Constant pocketmine\\\\START_TIME not found\\.$#"
			path: src

		-
			message: "#^Constant pocketmine\\\\VERSION not found\\.$#"
			path: src