if ( $bits['index'] !== '' ) {
// Numbered parameter
$index = $bits['index'] - $indexOffset;
+ if ( isset( $namedArgs[$index] ) || isset( $numberedArgs[$index] ) ) {
+ $this->parser->addTrackingCategory( 'duplicate-args-category' );
+ }
$numberedArgs[$index] = $bits['value'];
unset( $namedArgs[$index] );
} else {
// Named parameter
$name = trim( $this->expand( $bits['name'], PPFrame::STRIP_COMMENTS ) );
+ if ( isset( $namedArgs[$name] ) || isset( $numberedArgs[$name] ) ) {
+ $this->parser->addTrackingCategory( 'duplicate-args-category' );
+ }
$namedArgs[$name] = $bits['value'];
unset( $numberedArgs[$name] );
}
/**
* @throws MWException
* @param string|int $key
- * @param string|PPNode_Hash|DOMDocument $root
+ * @param string|PPNode $root
* @param int $flags
* @return string
*/
/**
* @param string $sep
* @param int $flags
+ * @param string|PPNode $args,...
* @return string
*/
public function implodeWithFlags( $sep, $flags /*, ... */ ) {
* Implode with no flags specified
* This previously called implodeWithFlags but has now been inlined to reduce stack depth
* @param string $sep
+ * @param string|PPNode $args,...
* @return string
*/
public function implode( $sep /*, ... */ ) {
* with implode()
*
* @param string $sep
+ * @param string|PPNode $args,...
* @return PPNode_Hash_Array
*/
public function virtualImplode( $sep /*, ... */ ) {
* @param string $start
* @param string $sep
* @param string $end
+ * @param string|PPNode $args,...
* @return PPNode_Hash_Array
*/
public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
/**
* @throws MWException
* @param string|int $key
- * @param string|PPNode_Hash|DOMDocument $root
+ * @param string|PPNode $root
* @param int $flags
* @return string
*/