/*
* This file is part of Psy Shell.
*
- * (c) 2012-2017 Justin Hileman
+ * (c) 2012-2018 Justin Hileman
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
use PhpParser\Node\Stmt\GroupUse;
use PhpParser\Node\Stmt\Namespace_;
use PhpParser\Node\Stmt\Use_;
+use PhpParser\NodeTraverser;
/**
* Provide implicit use statements for subsequent execution.
*/
class UseStatementPass extends CodeCleanerPass
{
- private $aliases = array();
- private $lastAliases = array();
+ private $aliases = [];
+ private $lastAliases = [];
private $lastNamespace = null;
/**
// Store a reference to every "use" statement, because we'll need
// them in a bit.
foreach ($node->uses as $use) {
- $this->aliases[strtolower($use->alias)] = $use->name;
+ $alias = $use->alias ?: end($use->name->parts);
+ $this->aliases[strtolower($alias)] = $use->name;
}
- return false;
+ return NodeTraverser::REMOVE_NODE;
} elseif ($node instanceof GroupUse) {
// Expand every "use" statement in the group into a full, standalone
// "use" and store 'em with the others.
foreach ($node->uses as $use) {
- $this->aliases[strtolower($use->alias)] = Name::concat($node->prefix, $use->name, array(
+ $alias = $use->alias ?: end($use->name->parts);
+ $this->aliases[strtolower($alias)] = Name::concat($node->prefix, $use->name, [
'startLine' => $node->prefix->getAttribute('startLine'),
'endLine' => $use->name->getAttribute('endLine'),
- ));
+ ]);
}
- return false;
+ return NodeTraverser::REMOVE_NODE;
} elseif ($node instanceof Namespace_) {
// Start fresh, since we're done with this namespace.
$this->lastNamespace = $node->name;
$this->lastAliases = $this->aliases;
- $this->aliases = array();
+ $this->aliases = [];
} else {
foreach ($node as $name => $subNode) {
if ($subNode instanceof Name) {