Mercurial > hg > isophonics-drupal-site
diff vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 7a779792577d |
children | 129ea1e6d783 |
line wrap: on
line diff
--- a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php Fri Feb 23 15:52:07 2018 +0000 +++ b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php Mon Apr 23 09:33:26 2018 +0100 @@ -1,7 +1,9 @@ -<?php +<?php declare(strict_types=1); namespace PhpParser; +use PhpParser\Node; + abstract class NodeAbstract implements Node, \JsonSerializable { protected $attributes; @@ -11,45 +13,98 @@ * * @param array $attributes Array of attributes */ - public function __construct(array $attributes = array()) { + public function __construct(array $attributes = []) { $this->attributes = $attributes; } /** - * Gets the type of the node. + * Gets line the node started in (alias of getStartLine). * - * @return string Type of the node + * @return int Start line (or -1 if not available) */ - public function getType() { - $className = rtrim(get_class($this), '_'); - return strtr( - substr( - $className, - strpos($className, 'PhpParser\Node') + 15 - ), - '\\', - '_' - ); + public function getLine() : int { + return $this->attributes['startLine'] ?? -1; } /** * Gets line the node started in. * - * @return int Line + * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default). + * + * @return int Start line (or -1 if not available) */ - public function getLine() { - return $this->getAttribute('startLine', -1); + public function getStartLine() : int { + return $this->attributes['startLine'] ?? -1; } /** - * Sets line the node started in. + * Gets the line the node ended in. * - * @param int $line Line + * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default). * - * @deprecated + * @return int End line (or -1 if not available) */ - public function setLine($line) { - $this->setAttribute('startLine', (int) $line); + public function getEndLine() : int { + return $this->attributes['endLine'] ?? -1; + } + + /** + * Gets the token offset of the first token that is part of this node. + * + * The offset is an index into the array returned by Lexer::getTokens(). + * + * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default). + * + * @return int Token start position (or -1 if not available) + */ + public function getStartTokenPos() : int { + return $this->attributes['startTokenPos'] ?? -1; + } + + /** + * Gets the token offset of the last token that is part of this node. + * + * The offset is an index into the array returned by Lexer::getTokens(). + * + * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default). + * + * @return int Token end position (or -1 if not available) + */ + public function getEndTokenPos() : int { + return $this->attributes['endTokenPos'] ?? -1; + } + + /** + * Gets the file offset of the first character that is part of this node. + * + * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default). + * + * @return int File start position (or -1 if not available) + */ + public function getStartFilePos() : int { + return $this->attributes['startFilePos'] ?? -1; + } + + /** + * Gets the file offset of the last character that is part of this node. + * + * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default). + * + * @return int File end position (or -1 if not available) + */ + public function getEndFilePos() : int { + return $this->attributes['endFilePos'] ?? -1; + } + + /** + * Gets all comments directly preceding this node. + * + * The comments are also available through the "comments" attribute. + * + * @return Comment[] + */ + public function getComments() : array { + return $this->attributes['comments'] ?? []; } /** @@ -60,7 +115,7 @@ * @return null|Comment\Doc Doc comment object or null */ public function getDocComment() { - $comments = $this->getAttribute('comments'); + $comments = $this->getComments(); if (!$comments) { return null; } @@ -81,7 +136,7 @@ * @param Comment\Doc $docComment Doc comment to set */ public function setDocComment(Comment\Doc $docComment) { - $comments = $this->getAttribute('comments', []); + $comments = $this->getComments(); $numComments = count($comments); if ($numComments > 0 && $comments[$numComments - 1] instanceof Comment\Doc) { @@ -95,15 +150,15 @@ $this->setAttribute('comments', $comments); } - public function setAttribute($key, $value) { + public function setAttribute(string $key, $value) { $this->attributes[$key] = $value; } - public function hasAttribute($key) { + public function hasAttribute(string $key) : bool { return array_key_exists($key, $this->attributes); } - public function &getAttribute($key, $default = null) { + public function getAttribute(string $key, $default = null) { if (!array_key_exists($key, $this->attributes)) { return $default; } else { @@ -111,11 +166,18 @@ } } - public function getAttributes() { + public function getAttributes() : array { return $this->attributes; } - public function jsonSerialize() { + public function setAttributes(array $attributes) { + $this->attributes = $attributes; + } + + /** + * @return array + */ + public function jsonSerialize() : array { return ['nodeType' => $this->getType()] + get_object_vars($this); } }