https://integration.wikimedia.org/ci/job/mwext-php72-phan-docker/73344/console
10:22:18 <checkstyle version="6.5"> 10:22:18 <file name="specials/SpecialManageTranslatorSandbox.php"> 10:22:18 <error line="67" severity="error" message="Argument 2 ($deleter) is false of type false but \WikiPage::doDeleteArticleReal() takes \User defined at ../../includes/page/WikiPage.php:2737" source="PhanTypeMismatchArgumentReal"/> 10:22:18 </file> 10:22:18 <file name="tag/TranslateDeleteJob.php"> 10:22:18 <error line="66" severity="error" message="Argument 2 ($deleter) is false of type false but \WikiPage::doDeleteArticleReal() takes \User defined at ../../includes/page/WikiPage.php:2737" source="PhanTypeMismatchArgumentReal"/> 10:22:18 </file> 10:22:18 </checkstyle>
The code in question is:
59 protected function deleteUserPage( $user ) { 60 $userpage = WikiPage::factory( $user->getUserPage() ); 61 if ( $userpage->exists() ) { 62 $reason = wfMessage( 'tsb-delete-userpage-summary' )->inContentLanguage()->text(); 63 if ( version_compare( MW_VERSION, '1.35', '<' ) ) { 64 $dummyError = ''; 65 $userpage->doDeleteArticleReal( 66 $reason, 67 false, 68 0, 69 true, 70 $dummyError, 71 $this->getUser() 72 ); 73 } else { 74 $userpage->doDeleteArticleReal( $reason, $this->getUser() ); 75 } 76 } 77 }
Not how we cannot pass $user on line 67 because in MW 1.34 the parameter does something else:
/** * Same as doDeleteArticleReal(), but returns a simple boolean. This is kept around for * backwards compatibility, if you care about error reporting you should use * doDeleteArticleReal() instead. * * Deletes the article with database consistency, writes logs, purges caches * * @param string $reason Delete reason for deletion log * @param bool $suppress Suppress all revisions and log the deletion in * the suppression log instead of the deletion log * @param int|null $u1 Unused * @param bool|null $u2 Unused * @param array|string &$error Array of errors to append to * @param User|null $user The deleting user * @param bool $immediate false allows deleting over time via the job queue * @return bool True if successful * @throws FatalError * @throws MWException */ public function doDeleteArticle( $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null, $immediate = false ) { $status = $this->doDeleteArticleReal( $reason, $suppress, $u1, $u2, $error, $user, [], 'delete', $immediate ); // Returns true if the page was actually deleted, or is scheduled for deletion return $status->isOK(); }
Outcome
A change in MediaWiki core caused all patches for Translate to fail code quality tests which effectively blocks merging all changes. The unavoidable test failures were suppressed.