From dd25f3df6b5d4e8b863cc2dca178425286c74e65 Mon Sep 17 00:00:00 2001 From: Umherirrender Date: Mon, 3 Jun 2019 18:08:04 +0200 Subject: [PATCH] Improve type hints in parser related classes Change-Id: Ia07a2eb32894f96b195fa3189fb5f617e68f2581 --- includes/parser/PPDStack.php | 2 +- includes/parser/PPFrame_DOM.php | 12 ++++++------ includes/parser/PPNode.php | 8 ++++---- includes/parser/PPNode_DOM.php | 10 +++++----- includes/parser/PPNode_Hash_Tree.php | 4 ++-- includes/parser/Parser.php | 8 +++++--- includes/parser/Preprocessor_DOM.php | 3 +++ includes/parser/Preprocessor_Hash.php | 3 +++ 8 files changed, 29 insertions(+), 21 deletions(-) diff --git a/includes/parser/PPDStack.php b/includes/parser/PPDStack.php index 4108bd7e13..adc0bc0014 100644 --- a/includes/parser/PPDStack.php +++ b/includes/parser/PPDStack.php @@ -27,7 +27,7 @@ class PPDStack { public $stack, $rootAccum; /** - * @var PPDStack + * @var PPDStack|false */ public $top; public $out; diff --git a/includes/parser/PPFrame_DOM.php b/includes/parser/PPFrame_DOM.php index 03ee6d9639..452bab1259 100644 --- a/includes/parser/PPFrame_DOM.php +++ b/includes/parser/PPFrame_DOM.php @@ -141,7 +141,7 @@ class PPFrame_DOM implements PPFrame { /** * @throws MWException * @param string|int $key - * @param string|PPNode_DOM|DOMDocument $root + * @param string|PPNode_DOM|DOMNode|DOMNodeList $root * @param int $flags * @return string */ @@ -152,7 +152,7 @@ class PPFrame_DOM implements PPFrame { /** * @throws MWException - * @param string|PPNode_DOM|DOMDocument $root + * @param string|PPNode_DOM|DOMNode $root * @param int $flags * @return string */ @@ -396,7 +396,7 @@ class PPFrame_DOM implements PPFrame { /** * @param string $sep * @param int $flags - * @param string|PPNode_DOM|DOMDocument ...$args + * @param string|PPNode_DOM|DOMNode ...$args * @return string */ public function implodeWithFlags( $sep, $flags, ...$args ) { @@ -426,7 +426,7 @@ class PPFrame_DOM implements PPFrame { * This previously called implodeWithFlags but has now been inlined to reduce stack depth * * @param string $sep - * @param string|PPNode_DOM|DOMDocument ...$args + * @param string|PPNode_DOM|DOMNode ...$args * @return string */ public function implode( $sep, ...$args ) { @@ -456,7 +456,7 @@ class PPFrame_DOM implements PPFrame { * with implode() * * @param string $sep - * @param string|PPNode_DOM|DOMDocument ...$args + * @param string|PPNode_DOM|DOMNode ...$args * @return array */ public function virtualImplode( $sep, ...$args ) { @@ -487,7 +487,7 @@ class PPFrame_DOM implements PPFrame { * @param string $start * @param string $sep * @param string $end - * @param string|PPNode_DOM|DOMDocument ...$args + * @param string|PPNode_DOM|DOMNode ...$args * @return array */ public function virtualBracketedImplode( $start, $sep, $end, ...$args ) { diff --git a/includes/parser/PPNode.php b/includes/parser/PPNode.php index 2b6cf7c341..4561657e2f 100644 --- a/includes/parser/PPNode.php +++ b/includes/parser/PPNode.php @@ -36,20 +36,20 @@ interface PPNode { /** * Get an array-type node containing the children of this node. * Returns false if this is not a tree node. - * @return PPNode + * @return false|PPNode */ public function getChildren(); /** * Get the first child of a tree node. False if there isn't one. * - * @return PPNode + * @return false|PPNode */ public function getFirstChild(); /** * Get the next sibling of any node. False if there isn't one - * @return PPNode + * @return false|PPNode */ public function getNextSibling(); @@ -57,7 +57,7 @@ interface PPNode { * Get all children of this tree node which have a given name. * Returns an array-type node, or false if this is not a tree node. * @param string $type - * @return bool|PPNode + * @return false|PPNode */ public function getChildrenOfType( $type ); diff --git a/includes/parser/PPNode_DOM.php b/includes/parser/PPNode_DOM.php index 26a47911f3..53b17617bb 100644 --- a/includes/parser/PPNode_DOM.php +++ b/includes/parser/PPNode_DOM.php @@ -27,7 +27,7 @@ class PPNode_DOM implements PPNode { /** - * @var DOMElement + * @var DOMElement|DOMNodeList */ public $node; public $xpath; @@ -59,21 +59,21 @@ class PPNode_DOM implements PPNode { } /** - * @return bool|PPNode_DOM + * @return false|PPNode_DOM */ public function getChildren() { return $this->node->childNodes ? new self( $this->node->childNodes ) : false; } /** - * @return bool|PPNode_DOM + * @return false|PPNode_DOM */ public function getFirstChild() { return $this->node->firstChild ? new self( $this->node->firstChild ) : false; } /** - * @return bool|PPNode_DOM + * @return false|PPNode_DOM */ public function getNextSibling() { return $this->node->nextSibling ? new self( $this->node->nextSibling ) : false; @@ -82,7 +82,7 @@ class PPNode_DOM implements PPNode { /** * @param string $type * - * @return bool|PPNode_DOM + * @return false|PPNode_DOM */ public function getChildrenOfType( $type ) { return new self( $this->getXPath()->query( $type, $this->node ) ); diff --git a/includes/parser/PPNode_Hash_Tree.php b/includes/parser/PPNode_Hash_Tree.php index e6cabf8e51..7782894125 100644 --- a/includes/parser/PPNode_Hash_Tree.php +++ b/includes/parser/PPNode_Hash_Tree.php @@ -135,7 +135,7 @@ class PPNode_Hash_Tree implements PPNode { * return a temporary proxy object: different instances will be returned * if this is called more than once on the same node. * - * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|bool + * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|false */ public function getFirstChild() { if ( !isset( $this->rawChildren[0] ) ) { @@ -150,7 +150,7 @@ class PPNode_Hash_Tree implements PPNode { * return a temporary proxy object: different instances will be returned * if this is called more than once on the same node. * - * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|bool + * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|false */ public function getNextSibling() { return self::factory( $this->store, $this->index + 1 ); diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index c61de38a86..e70d1758ca 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -205,9 +205,11 @@ class Parser { public $mLinkID; public $mIncludeSizes, $mPPNodeCount, $mGeneratedPPNodeCount, $mHighestExpansionDepth; public $mDefaultSort; - public $mTplRedirCache, $mTplDomCache, $mHeadings, $mDoubleUnderscores; + public $mTplRedirCache, $mHeadings, $mDoubleUnderscores; public $mExpensiveFunctionCount; # number of expensive parser function calls public $mShowToc, $mForceTocPosition; + /** @var array */ + public $mTplDomCache; /** * @var User @@ -3084,7 +3086,7 @@ class Parser { * self::OT_HTML: all templates and extension tags * * @param string $text The text to transform - * @param bool|PPFrame $frame Object describing the arguments passed to the + * @param false|PPFrame|array $frame Object describing the arguments passed to the * template. Arguments may also be provided as an associative array, as * was the usual case before MW1.12. Providing arguments this way may be * useful for extensions wishing to perform variable replacement @@ -3190,7 +3192,7 @@ class Parser { * $piece['lineStart']: whether the brace was at the start of a line * @param PPFrame $frame The current frame, contains template arguments * @throws Exception - * @return string The text of the template + * @return string|array The text of the template */ public function braceSubstitution( $piece, $frame ) { // Flags diff --git a/includes/parser/Preprocessor_DOM.php b/includes/parser/Preprocessor_DOM.php index 9e510d21d6..fb8a1dc544 100644 --- a/includes/parser/Preprocessor_DOM.php +++ b/includes/parser/Preprocessor_DOM.php @@ -37,6 +37,9 @@ class Preprocessor_DOM extends Preprocessor { const CACHE_PREFIX = 'preprocess-xml'; + /** + * @param Parser $parser + */ public function __construct( $parser ) { wfDeprecated( __METHOD__, '1.34' ); // T204945 $this->parser = $parser; diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php index 66f081fe77..f7f37ac044 100644 --- a/includes/parser/Preprocessor_Hash.php +++ b/includes/parser/Preprocessor_Hash.php @@ -50,6 +50,9 @@ class Preprocessor_Hash extends Preprocessor { const CACHE_PREFIX = 'preprocess-hash'; const CACHE_VERSION = 2; + /** + * @param Parser $parser + */ public function __construct( $parser ) { $this->parser = $parser; } -- 2.20.1