Deprecate setting Parser::mTitle to null
authorC. Scott Ananian <cscott@cscott.net>
Thu, 17 Oct 2019 16:59:04 +0000 (12:59 -0400)
committerReedy <reedy@wikimedia.org>
Fri, 18 Oct 2019 21:09:41 +0000 (21:09 +0000)
This never happens in core code; however extensions have slipped into
a state of sin.

Bug: T235392
Change-Id: Ia254949cd8b3bc162b11dcc911dcce40d91bf1b7
(cherry picked from commit dd9e6124b4a47b98cccdaa2971d587ecc6f0ab6e)

RELEASE-NOTES-1.34
includes/parser/Parser.php

index ed2cf9c..d34d14b 100644 (file)
@@ -619,6 +619,9 @@ because of Phabricator reports.
   fetchLanguageName, getFileName, getMessagesFileName, getJsonMessagesFileName.
   Use the new LanguageNameUtils class instead. (Note that fetchLanguageName(s)
   are called getLanguageName(s) in the new class.)
   fetchLanguageName, getFileName, getMessagesFileName, getJsonMessagesFileName.
   Use the new LanguageNameUtils class instead. (Note that fetchLanguageName(s)
   are called getLanguageName(s) in the new class.)
+* Using the Parser without initializing its $mTitle property to non-null has
+  been deprecated.  In a future release Parser::getTitle() will throw a
+  TypeError if $mTitle is uninitialized.
 
 === Other changes in 1.34 ===
 * Added option to specify "Various authors" as author in extension credits using
 
 === Other changes in 1.34 ===
 * Added option to specify "Various authors" as author in extension credits using
index ae77c4e..3aa2c69 100644 (file)
@@ -228,7 +228,11 @@ class Parser {
        public $mOptions;
 
        /**
        public $mOptions;
 
        /**
-        * @var Title|null Beware - this is not always set
+        * Since 1.34, leaving `mTitle` uninitialized or setting `mTitle` to
+        * `null` is deprecated.
+        *
+        * @internal
+        * @var Title|null
         */
        public $mTitle;        # Title context, used for self-link rendering and similar things
        public $mOutputType;   # Output type, one of the OT_xxx constants
         */
        public $mTitle;        # Title context, used for self-link rendering and similar things
        public $mOutputType;   # Output type, one of the OT_xxx constants
@@ -924,9 +928,14 @@ class Parser {
        /**
         * Accessor for the Title object
         *
        /**
         * Accessor for the Title object
         *
+        * Since 1.34, leaving `mTitle` uninitialized as `null` is deprecated.
+        *
         * @return Title|null
         */
        public function getTitle() : ?Title {
         * @return Title|null
         */
        public function getTitle() : ?Title {
+               if ( $this->mTitle === null ) {
+                       wfDeprecated( 'Parser title should never be null', '1.34' );
+               }
                return $this->mTitle;
        }
 
                return $this->mTitle;
        }