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.)
+* 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
index ae77c4e..3aa2c69 100644 (file)
@@ -228,7 +228,11 @@ class Parser {
        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
@@ -924,9 +928,14 @@ class Parser {
        /**
         * Accessor for the Title object
         *
+        * Since 1.34, leaving `mTitle` uninitialized as `null` is deprecated.
+        *
         * @return Title|null
         */
        public function getTitle() : ?Title {
+               if ( $this->mTitle === null ) {
+                       wfDeprecated( 'Parser title should never be null', '1.34' );
+               }
                return $this->mTitle;
        }