From d0463178dfa09b79b3a08fee939da1beed030824 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Mon, 15 Oct 2018 00:17:38 -0700 Subject: [PATCH] LocalisationCache: Avoid use of compact() In PHP 7.3, compact() now raises notices if the variable is undefined, which is something that we expect. So we can check whether the key exists instead of bothering with compat() and suppressing warnings. Bug: T206979 Change-Id: I612049db4debd850a2e6d10bc631d31aa17be898 --- .../cache/localisation/LocalisationCache.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/includes/cache/localisation/LocalisationCache.php b/includes/cache/localisation/LocalisationCache.php index d0381cf04d..f20637a420 100644 --- a/includes/cache/localisation/LocalisationCache.php +++ b/includes/cache/localisation/LocalisationCache.php @@ -525,15 +525,20 @@ class LocalisationCache { ini_set( 'apc.cache_by_default', $_apcEnabled ); Wikimedia\restoreWarnings(); + $data = []; if ( $_fileType == 'core' || $_fileType == 'extension' ) { - - // Lnguage files aren't required to contain all the possible variables, so suppress warnings - // when variables don't exist in tests - Wikimedia\suppressWarnings(); - $data = compact( self::$allKeys ); - Wikimedia\restoreWarnings(); + foreach ( self::$allKeys as $key ) { + // Not all keys are set in language files, so + // check they exist first + if ( isset( $$key ) ) { + $data[$key] = $$key; + } + } } elseif ( $_fileType == 'aliases' ) { - $data = compact( 'aliases' ); + if ( isset( $aliases ) ) { + /** @suppress PhanUndeclaredVariable */ + $data['aliases'] = $aliases; + } } else { throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" ); } -- 2.20.1