From 9b0b3df80b6d914865a5607e37258439bd096768 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 19 Oct 2016 19:36:13 +0200 Subject: [PATCH] Store string instead of array for Name Name::$parts array is replaced by Name::$name string. --- grammar/php5.y | 24 ++--- grammar/php7.y | 24 ++--- lib/PhpParser/Node/Name.php | 91 ++++++++++++------- lib/PhpParser/NodeVisitor/NameResolver.php | 6 +- lib/PhpParser/Parser/Php5.php | 4 +- lib/PhpParser/Parser/Php7.php | 4 +- lib/PhpParser/PrettyPrinter/Standard.php | 6 +- test/PhpParser/Node/NameTest.php | 36 +++++--- test/PhpParser/NodeDumperTest.php | 5 +- .../NodeVisitor/NameResolverTest.php | 2 +- test/code/parser/errorHandling/eofError.test | 8 +- test/code/parser/errorHandling/recovery.test | 40 ++------ test/code/parser/expr/assignNewByRef.test | 8 +- test/code/parser/expr/closure.test | 7 +- test/code/parser/expr/comparison.test | 6 +- test/code/parser/expr/constant_expr.test | 4 +- test/code/parser/expr/fetchAndCall/args.test | 20 +--- .../parser/expr/fetchAndCall/constFetch.test | 12 +-- .../expr/fetchAndCall/constantDeref.test | 8 +- .../parser/expr/fetchAndCall/funcCall.test | 8 +- .../parser/expr/fetchAndCall/newDeref.test | 16 +--- .../parser/expr/fetchAndCall/staticCall.test | 28 ++---- .../fetchAndCall/staticPropertyFetch.test | 20 +--- test/code/parser/expr/issetAndEmpty.test | 4 +- test/code/parser/expr/new.test | 16 +--- .../expr/uvs/globalNonSimpleVarError.test | 6 +- test/code/parser/expr/uvs/indirectCall.test | 22 ++--- test/code/parser/expr/uvs/misc.test | 10 +- test/code/parser/expr/uvs/new.test | 6 +- test/code/parser/expr/uvs/staticProperty.test | 18 +--- test/code/parser/expr/variable.test | 6 +- test/code/parser/semiReserved.test | 64 ++++--------- test/code/parser/stmt/class/anonymous.test | 24 ++--- test/code/parser/stmt/class/conditional.test | 4 +- test/code/parser/stmt/class/interface.test | 8 +- test/code/parser/stmt/class/name.test | 24 ++--- test/code/parser/stmt/class/simple.test | 16 +--- test/code/parser/stmt/class/trait.test | 44 +++------ test/code/parser/stmt/const.test | 4 +- .../parser/stmt/function/conditional.test | 6 +- .../parser/stmt/function/defaultValues.test | 10 +- .../parser/stmt/function/nullableTypes.test | 8 +- .../parser/stmt/function/returnTypes.test | 7 +- .../stmt/function/typeDeclarations.test | 6 +- test/code/parser/stmt/function/variadic.test | 10 +- test/code/parser/stmt/generator/basic.test | 8 +- .../stmt/generator/yieldPrecedence.test | 14 +-- test/code/parser/stmt/haltCompiler.test | 4 +- test/code/parser/stmt/haltCompilerOffset.test | 10 +- test/code/parser/stmt/multiCatch.test | 17 +--- test/code/parser/stmt/namespace/alias.test | 47 ++-------- test/code/parser/stmt/namespace/braced.test | 13 +-- test/code/parser/stmt/namespace/groupUse.test | 80 ++++------------ .../parser/stmt/namespace/groupUseErrors.test | 20 +--- .../parser/stmt/namespace/invalidName.test | 16 +--- test/code/parser/stmt/namespace/mix.test | 16 +--- test/code/parser/stmt/namespace/name.test | 19 +--- test/code/parser/stmt/namespace/nested.test | 8 +- .../code/parser/stmt/namespace/notBraced.test | 17 +--- .../stmt/namespace/nsAfterHashbang.test | 4 +- .../parser/stmt/namespace/outsideStmt.test | 8 +- .../stmt/namespace/outsideStmtInvalid.test | 20 +--- test/code/parser/stmt/tryCatch.test | 28 ++---- test/code/parser/stmt/tryWithoutCatch.test | 4 +- 64 files changed, 336 insertions(+), 727 deletions(-) diff --git a/grammar/php5.y b/grammar/php5.y index 2897f679e7..b27420a1c6 100644 --- a/grammar/php5.y +++ b/grammar/php5.y @@ -40,13 +40,13 @@ identifier: | semi_reserved { $$ = $1; } ; -namespace_name_parts: - T_STRING { init($1); } - | namespace_name_parts T_NS_SEPARATOR T_STRING { push($1, $3); } +raw_namespace_name: + T_STRING { $$ = $1; } + | raw_namespace_name T_NS_SEPARATOR T_STRING { $$ = $1 . '\\' . $3; } ; namespace_name: - namespace_name_parts { $$ = Name[$1]; } + raw_namespace_name { $$ = Name[$1]; } ; top_statement: @@ -72,15 +72,15 @@ use_type: | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; } ; -/* Using namespace_name_parts here to avoid s/r conflict on T_NS_SEPARATOR */ +/* Using raw_namespace_name here to avoid s/r conflict on T_NS_SEPARATOR */ group_use_declaration: - T_USE use_type namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}' + T_USE use_type raw_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}' { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, $2]; } - | T_USE use_type T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}' + | T_USE use_type T_NS_SEPARATOR raw_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}' { $$ = Stmt\GroupUse[new Name($4, stackAttributes(#4)), $7, $2]; } - | T_USE namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}' + | T_USE raw_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}' { $$ = Stmt\GroupUse[new Name($2, stackAttributes(#2)), $5, Stmt\Use_::TYPE_UNKNOWN]; } - | T_USE T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}' + | T_USE T_NS_SEPARATOR raw_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}' { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, Stmt\Use_::TYPE_UNKNOWN]; } ; @@ -705,9 +705,9 @@ class_name: ; name: - namespace_name_parts { $$ = Name[$1]; } - | T_NS_SEPARATOR namespace_name_parts { $$ = Name\FullyQualified[$2]; } - | T_NAMESPACE T_NS_SEPARATOR namespace_name_parts { $$ = Name\Relative[$3]; } + raw_namespace_name { $$ = Name[$1]; } + | T_NS_SEPARATOR raw_namespace_name { $$ = Name\FullyQualified[$2]; } + | T_NAMESPACE T_NS_SEPARATOR raw_namespace_name { $$ = Name\Relative[$3]; } ; class_name_reference: diff --git a/grammar/php7.y b/grammar/php7.y index 7a7d647fe9..73c3253825 100644 --- a/grammar/php7.y +++ b/grammar/php7.y @@ -40,13 +40,13 @@ identifier: | semi_reserved { $$ = $1; } ; -namespace_name_parts: - T_STRING { init($1); } - | namespace_name_parts T_NS_SEPARATOR T_STRING { push($1, $3); } +raw_namespace_name: + T_STRING { $$ = $1; } + | raw_namespace_name T_NS_SEPARATOR T_STRING { $$ = $1 . '\\' . $3; } ; namespace_name: - namespace_name_parts { $$ = Name[$1]; } + raw_namespace_name { $$ = Name[$1]; } ; top_statement: @@ -72,15 +72,15 @@ use_type: | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; } ; -/* Using namespace_name_parts here to avoid s/r conflict on T_NS_SEPARATOR */ +/* Using raw_namespace_name here to avoid s/r conflict on T_NS_SEPARATOR */ group_use_declaration: - T_USE use_type namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}' + T_USE use_type raw_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}' { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, $2]; } - | T_USE use_type T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' unprefixed_use_declarations '}' + | T_USE use_type T_NS_SEPARATOR raw_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}' { $$ = Stmt\GroupUse[new Name($4, stackAttributes(#4)), $7, $2]; } - | T_USE namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}' + | T_USE raw_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}' { $$ = Stmt\GroupUse[new Name($2, stackAttributes(#2)), $5, Stmt\Use_::TYPE_UNKNOWN]; } - | T_USE T_NS_SEPARATOR namespace_name_parts T_NS_SEPARATOR '{' inline_use_declarations '}' + | T_USE T_NS_SEPARATOR raw_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}' { $$ = Stmt\GroupUse[new Name($3, stackAttributes(#3)), $6, Stmt\Use_::TYPE_UNKNOWN]; } ; @@ -659,9 +659,9 @@ class_name: ; name: - namespace_name_parts { $$ = Name[$1]; } - | T_NS_SEPARATOR namespace_name_parts { $$ = Name\FullyQualified[$2]; } - | T_NAMESPACE T_NS_SEPARATOR namespace_name_parts { $$ = Name\Relative[$3]; } + raw_namespace_name { $$ = Name[$1]; } + | T_NS_SEPARATOR raw_namespace_name { $$ = Name\FullyQualified[$2]; } + | T_NAMESPACE T_NS_SEPARATOR raw_namespace_name { $$ = Name\Relative[$3]; } ; class_name_reference: diff --git a/lib/PhpParser/Node/Name.php b/lib/PhpParser/Node/Name.php index f3e64dc936..ef90c27908 100644 --- a/lib/PhpParser/Node/Name.php +++ b/lib/PhpParser/Node/Name.php @@ -6,26 +6,22 @@ class Name extends NodeAbstract { - /** @var string[] Parts of the name */ - public $parts; + /** @var string Name */ + public $name; /** * Constructs a name node. * - * @param string|array $parts Parts of the name (or name as string) + * @param string|array $name Name or parts of name * @param array $attributes Additional attributes */ - public function __construct($parts, array $attributes = array()) { - if (!is_array($parts)) { - $parts = explode('\\', $parts); - } - + public function __construct($name, array $attributes = array()) { parent::__construct($attributes); - $this->parts = $parts; + $this->name = self::prepareName($name); } public function getSubNodeNames() { - return array('parts'); + return array('name'); } /** @@ -34,7 +30,10 @@ public function getSubNodeNames() { * @return string First part of the name */ public function getFirst() { - return $this->parts[0]; + if (false !== $first = strpos($this->name, '\\')) { + return substr($this->name, 0, $first); + } + return $this->name; } /** @@ -43,7 +42,10 @@ public function getFirst() { * @return string Last part of the name */ public function getLast() { - return $this->parts[count($this->parts) - 1]; + if (false !== $last = strrpos($this->name, '\\')) { + return substr($this->name, $last + 1); + } + return $this->name; } /** @@ -52,7 +54,7 @@ public function getLast() { * @return bool Whether the name is unqualified */ public function isUnqualified() { - return 1 == count($this->parts); + return false === strpos($this->name, '\\'); } /** @@ -61,7 +63,7 @@ public function isUnqualified() { * @return bool Whether the name is qualified */ public function isQualified() { - return 1 < count($this->parts); + return false !== strpos($this->name, '\\'); } /** @@ -89,7 +91,7 @@ public function isRelative() { * @return string String representation */ public function toString() { - return implode('\\', $this->parts); + return $this->name; } /** @@ -99,7 +101,7 @@ public function toString() { * @return string String representation */ public function __toString() { - return implode('\\', $this->parts); + return $this->name; } /** @@ -108,18 +110,27 @@ public function __toString() { * This method returns a new instance of the same type as the original and with the same * attributes. * - * If the slice is empty, a Name with an empty parts array is returned. While this is - * meaningless in itself, it works correctly in conjunction with concat(). + * If the slice is empty, null is returned. The null value is handled correctly in conjunction + * with concat(). * * Offset and length have the same meaning as in array_slice(). * * @param int $offset Offset to start the slice at (may be negative) * @param int|null $length Length of the slice (may be negative) * - * @return static Sliced name + * @return static|null Sliced name, or null for empty slices */ public function slice($offset, $length = null) { - $numParts = count($this->parts); + if ($offset === 1 && $length === null) { + // Short-circuit the common case + if (false !== $first = strpos($this->name, '\\')) { + return new static(substr($this->name, $first + 1)); + } + return null; + } + + $parts = explode('\\', $this->name); + $numParts = count($parts); $realOffset = $offset < 0 ? $offset + $numParts : $offset; if ($realOffset < 0 || $realOffset > $numParts) { @@ -135,7 +146,11 @@ public function slice($offset, $length = null) { } } - return new static(array_slice($this->parts, $realOffset, $realLength), $this->attributes); + $slice = array_slice($parts, $realOffset, $realLength); + if (empty($slice)) { + return null; + } + return new static(implode('\\', $slice), $this->attributes); } /** @@ -144,37 +159,49 @@ public function slice($offset, $length = null) { * The type of the generated instance depends on which class this method is called on, for * example Name\FullyQualified::concat() will yield a Name\FullyQualified instance. * - * @param string|array|self $name1 The first name - * @param string|array|self $name2 The second name - * @param array $attributes Attributes to assign to concatenated name + * Concatenation with null returns a new instance of the other name (or null if both are null). + * + * @param string|array|self|null $name1 The first name + * @param string|array|self|null $name2 The second name + * @param array $attributes Attributes to assign to concatenated name * * @return static Concatenated name */ public static function concat($name1, $name2, array $attributes = []) { + if (null === $name1 && null === $name2) { + return null; + } else if (null === $name1) { + return new static(self::prepareName($name2), $attributes); + } else if (null === $name2) { + return new static(self::prepareName($name1), $attributes); + } return new static( - array_merge(self::prepareName($name1), self::prepareName($name2)), $attributes + self::prepareName($name1) . '\\' . self::prepareName($name2), $attributes ); } /** * Prepares a (string, array or Name node) name for use in name changing methods by converting - * it to an array. + * it into a string. * * @param string|array|self $name Name to prepare * - * @return array Prepared name + * @return string Prepared name */ private static function prepareName($name) { - if (is_string($name)) { - return explode('\\', $name); - } elseif (is_array($name)) { + if (\is_string($name)) { return $name; } elseif ($name instanceof self) { - return $name->parts; + return $name->name; + } elseif (\is_array($name)) { + if (empty($name)) { + throw new \InvalidArgumentException('Name part array cannot be empty'); + } + return implode('\\', $name); } throw new \InvalidArgumentException( - 'When changing a name you need to pass either a string, an array or a Name node' + 'Expected string or Name node (or array -- deprecated)' ); } } diff --git a/lib/PhpParser/NodeVisitor/NameResolver.php b/lib/PhpParser/NodeVisitor/NameResolver.php index 02ec1c8fb8..08d85164c0 100644 --- a/lib/PhpParser/NodeVisitor/NameResolver.php +++ b/lib/PhpParser/NodeVisitor/NameResolver.php @@ -200,7 +200,7 @@ protected function resolveClassName(Name $name) { return FullyQualified::concat($this->namespace, $name, $name->getAttributes()); } - return new FullyQualified($name->parts, $name->getAttributes()); + return new FullyQualified($name, $name->getAttributes()); } protected function resolveOtherName(Name $name, $type) { @@ -229,7 +229,7 @@ protected function resolveOtherName(Name $name, $type) { if (null === $this->namespace) { // outside of a namespace unaliased unqualified is same as fully qualified - return new FullyQualified($name->parts, $name->getAttributes()); + return new FullyQualified($name, $name->getAttributes()); } // unqualified names inside a namespace cannot be resolved at compile-time @@ -244,7 +244,7 @@ protected function resolveOtherName(Name $name, $type) { return FullyQualified::concat($this->namespace, $name, $name->getAttributes()); } - return new FullyQualified($name->parts, $name->getAttributes()); + return new FullyQualified($name, $name->getAttributes()); } protected function addNamespacedName(Node $node) { diff --git a/lib/PhpParser/Parser/Php5.php b/lib/PhpParser/Parser/Php5.php index 5ed211f37f..250b80c745 100644 --- a/lib/PhpParser/Parser/Php5.php +++ b/lib/PhpParser/Parser/Php5.php @@ -1241,11 +1241,11 @@ protected function reduceRule81() { } protected function reduceRule82() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule83() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = $this->semStack[$this->stackPos-(3-1)] . '\\' . $this->semStack[$this->stackPos-(3-3)]; } protected function reduceRule84() { diff --git a/lib/PhpParser/Parser/Php7.php b/lib/PhpParser/Parser/Php7.php index 01a21217f4..ce202d620e 100644 --- a/lib/PhpParser/Parser/Php7.php +++ b/lib/PhpParser/Parser/Php7.php @@ -1124,11 +1124,11 @@ protected function reduceRule81() { } protected function reduceRule82() { - $this->semValue = array($this->semStack[$this->stackPos-(1-1)]); + $this->semValue = $this->semStack[$this->stackPos-(1-1)]; } protected function reduceRule83() { - $this->semStack[$this->stackPos-(3-1)][] = $this->semStack[$this->stackPos-(3-3)]; $this->semValue = $this->semStack[$this->stackPos-(3-1)]; + $this->semValue = $this->semStack[$this->stackPos-(3-1)] . '\\' . $this->semStack[$this->stackPos-(3-3)]; } protected function reduceRule84() { diff --git a/lib/PhpParser/PrettyPrinter/Standard.php b/lib/PhpParser/PrettyPrinter/Standard.php index eccbc9c203..e486d0626f 100644 --- a/lib/PhpParser/PrettyPrinter/Standard.php +++ b/lib/PhpParser/PrettyPrinter/Standard.php @@ -40,15 +40,15 @@ protected function pNullableType(Node\NullableType $node) { // Names protected function pName(Name $node) { - return implode('\\', $node->parts); + return $node->name; } protected function pName_FullyQualified(Name\FullyQualified $node) { - return '\\' . implode('\\', $node->parts); + return '\\' . $node->name; } protected function pName_Relative(Name\Relative $node) { - return 'namespace\\' . implode('\\', $node->parts); + return 'namespace\\' . $node->name; } // Magic Constants diff --git a/test/PhpParser/Node/NameTest.php b/test/PhpParser/Node/NameTest.php index b236bc090c..d2a2864c35 100644 --- a/test/PhpParser/Node/NameTest.php +++ b/test/PhpParser/Node/NameTest.php @@ -5,11 +5,14 @@ class NameTest extends \PHPUnit_Framework_TestCase { public function testConstruct() { - $name = new Name(array('foo', 'bar')); - $this->assertSame(array('foo', 'bar'), $name->parts); - $name = new Name('foo\bar'); - $this->assertSame(array('foo', 'bar'), $name->parts); + $this->assertSame('foo\bar', $name->name); + + $name = new Name($name); + $this->assertSame('foo\bar', $name->name); + + $name = new Name(array('foo', 'bar')); + $this->assertSame('foo\bar', $name->name); } public function testGet() { @@ -33,16 +36,16 @@ public function testSlice() { $name = new Name('foo\bar\baz'); $this->assertEquals(new Name('foo\bar\baz'), $name->slice(0)); $this->assertEquals(new Name('bar\baz'), $name->slice(1)); - $this->assertEquals(new Name([]), $name->slice(3)); + $this->assertNull($name->slice(3)); $this->assertEquals(new Name('foo\bar\baz'), $name->slice(-3)); $this->assertEquals(new Name('bar\baz'), $name->slice(-2)); $this->assertEquals(new Name('foo\bar'), $name->slice(0, -1)); - $this->assertEquals(new Name([]), $name->slice(0, -3)); + $this->assertNull($name->slice(0, -3)); $this->assertEquals(new Name('bar'), $name->slice(1, -1)); - $this->assertEquals(new Name([]), $name->slice(1, -2)); + $this->assertNull($name->slice(1, -2)); $this->assertEquals(new Name('bar'), $name->slice(-2, 1)); $this->assertEquals(new Name('bar'), $name->slice(-2, -1)); - $this->assertEquals(new Name([]), $name->slice(-2, -2)); + $this->assertNull($name->slice(-2, -2)); } /** @@ -90,8 +93,9 @@ public function testConcat() { Name\Relative::concat(new Name\FullyQualified('foo\bar'), 'baz', $attributes) ); - $this->assertEquals(new Name('foo'), Name::concat([], 'foo')); - $this->assertEquals(new Name([]), Name::concat([], [])); + $this->assertEquals(new Name('foo'), Name::concat(null, 'foo')); + $this->assertEquals(new Name('foo'), Name::concat('foo', null)); + $this->assertEquals(null, Name::concat(null, null)); } public function testIs() { @@ -121,10 +125,18 @@ public function testIs() { } /** - * @expectedException \InvalidArgumentException - * @expectedExceptionMessage When changing a name you need to pass either a string, an array or a Name node + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Expected string or Name node (or array -- deprecated) */ public function testInvalidArg() { Name::concat('foo', new \stdClass); } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Name part array cannot be empty + */ + public function testEmptyNameParts() { + $name = new Name([]); + } } \ No newline at end of file diff --git a/test/PhpParser/NodeDumperTest.php b/test/PhpParser/NodeDumperTest.php index 306bc20d54..c9960a0ee0 100644 --- a/test/PhpParser/NodeDumperTest.php +++ b/test/PhpParser/NodeDumperTest.php @@ -36,10 +36,7 @@ public function provideTestDump() { array( new Node\Name(array('Hallo', 'World')), 'Name( - parts: array( - 0: Hallo - 1: World - ) + name: Hallo\World )' ), array( diff --git a/test/PhpParser/NodeVisitor/NameResolverTest.php b/test/PhpParser/NodeVisitor/NameResolverTest.php index f50ec901c5..cfa5bd8e01 100644 --- a/test/PhpParser/NodeVisitor/NameResolverTest.php +++ b/test/PhpParser/NodeVisitor/NameResolverTest.php @@ -404,7 +404,7 @@ public function testClassNameIsCaseInsensitive() $stmts = $traverser->traverse($stmts); $stmt = $stmts[0]; - $this->assertSame(array('Bar', 'Baz'), $stmt->stmts[1]->expr->class->parts); + $this->assertSame('Bar\Baz', $stmt->stmts[1]->expr->class->toString()); } public function testSpecialClassNamesAreCaseInsensitive() { diff --git a/test/code/parser/errorHandling/eofError.test b/test/code/parser/errorHandling/eofError.test index 92951b7f26..be13d81d95 100644 --- a/test/code/parser/errorHandling/eofError.test +++ b/test/code/parser/errorHandling/eofError.test @@ -6,9 +6,7 @@ Syntax error, unexpected EOF from 1:10 to 1:10 array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: foo - ) + name: foo ) ) ) @@ -19,9 +17,7 @@ Syntax error, unexpected EOF from 1:20 to 1:20 array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: foo - ) + name: foo ) ) 1: Stmt_Nop( diff --git a/test/code/parser/errorHandling/recovery.test b/test/code/parser/errorHandling/recovery.test index e836be4e4f..e6758e8127 100644 --- a/test/code/parser/errorHandling/recovery.test +++ b/test/code/parser/errorHandling/recovery.test @@ -12,27 +12,21 @@ Syntax error, unexpected EOF from 5:6 to 5:6 array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) ) 1: Expr_FuncCall( name: Name( - parts: array( - 0: bar - ) + name: bar ) args: array( ) ) 2: Expr_FuncCall( name: Name( - parts: array( - 0: baz - ) + name: baz ) args: array( ) @@ -49,27 +43,21 @@ Syntax error, unexpected T_STRING from 4:1 to 4:3 array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) ) 1: Expr_FuncCall( name: Name( - parts: array( - 0: bar - ) + name: bar ) args: array( ) ) 2: Expr_FuncCall( name: Name( - parts: array( - 0: baz - ) + name: baz ) args: array( ) @@ -86,27 +74,21 @@ Syntax error, unexpected T_STRING from 5:1 to 5:3 array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) ) 1: Expr_FuncCall( name: Name( - parts: array( - 0: bar - ) + name: bar ) args: array( ) ) 2: Expr_FuncCall( name: Name( - parts: array( - 0: baz - ) + name: baz ) args: array( ) @@ -121,9 +103,7 @@ Syntax error, unexpected ';' from 3:5 to 3:5 array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: abc - ) + name: abc ) ) 1: Scalar_LNumber( diff --git a/test/code/parser/expr/assignNewByRef.test b/test/code/parser/expr/assignNewByRef.test index 10e1317f06..13992532f8 100644 --- a/test/code/parser/expr/assignNewByRef.test +++ b/test/code/parser/expr/assignNewByRef.test @@ -11,9 +11,7 @@ array( ) expr: Expr_New( class: Name( - parts: array( - 0: B - ) + name: B ) args: array( ) @@ -29,9 +27,7 @@ Syntax error, unexpected T_NEW from 2:7 to 2:9 array( 0: Expr_New( class: Name( - parts: array( - 0: B - ) + name: B ) args: array( ) diff --git a/test/code/parser/expr/closure.test b/test/code/parser/expr/closure.test index f459b602d4..302a843bb0 100644 --- a/test/code/parser/expr/closure.test +++ b/test/code/parser/expr/closure.test @@ -131,12 +131,9 @@ array( ) ) returnType: Name_FullyQualified( - parts: array( - 0: Foo - 1: Bar - ) + name: Foo\Bar ) stmts: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/comparison.test b/test/code/parser/expr/comparison.test index d5b1e35400..d72fcede88 100644 --- a/test/code/parser/expr/comparison.test +++ b/test/code/parser/expr/comparison.test @@ -91,9 +91,7 @@ array( name: a ) class: Name( - parts: array( - 0: B - ) + name: B ) ) 10: Expr_Instanceof( @@ -104,4 +102,4 @@ array( name: b ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/constant_expr.test b/test/code/parser/expr/constant_expr.test index 3e7a23ef0d..9d707eb156 100644 --- a/test/code/parser/expr/constant_expr.test +++ b/test/code/parser/expr/constant_expr.test @@ -609,9 +609,7 @@ array( value: Expr_BooleanNot( expr: Expr_ConstFetch( name: Name( - parts: array( - 0: false - ) + name: false ) ) ) diff --git a/test/code/parser/expr/fetchAndCall/args.test b/test/code/parser/expr/fetchAndCall/args.test index 6d73520998..da60f36b8a 100644 --- a/test/code/parser/expr/fetchAndCall/args.test +++ b/test/code/parser/expr/fetchAndCall/args.test @@ -11,18 +11,14 @@ f($a, ...$b); array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: f - ) + name: f ) args: array( ) ) 1: Expr_FuncCall( name: Name( - parts: array( - 0: f - ) + name: f ) args: array( 0: Arg( @@ -36,9 +32,7 @@ array( ) 2: Expr_FuncCall( name: Name( - parts: array( - 0: f - ) + name: f ) args: array( 0: Arg( @@ -59,9 +53,7 @@ array( ) 3: Expr_FuncCall( name: Name( - parts: array( - 0: f - ) + name: f ) args: array( 0: Arg( @@ -75,9 +67,7 @@ array( ) 4: Expr_FuncCall( name: Name( - parts: array( - 0: f - ) + name: f ) args: array( 0: Arg( diff --git a/test/code/parser/expr/fetchAndCall/constFetch.test b/test/code/parser/expr/fetchAndCall/constFetch.test index 7686d2d96d..bce0556f10 100644 --- a/test/code/parser/expr/fetchAndCall/constFetch.test +++ b/test/code/parser/expr/fetchAndCall/constFetch.test @@ -9,24 +9,18 @@ A::class; array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: A - ) + name: A ) ) 1: Expr_ClassConstFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: B ) 2: Expr_ClassConstFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: class ) diff --git a/test/code/parser/expr/fetchAndCall/constantDeref.test b/test/code/parser/expr/fetchAndCall/constantDeref.test index 682f780828..8b829afe02 100644 --- a/test/code/parser/expr/fetchAndCall/constantDeref.test +++ b/test/code/parser/expr/fetchAndCall/constantDeref.test @@ -185,9 +185,7 @@ array( 6: Expr_ArrayDimFetch( var: Expr_ConstFetch( name: Name( - parts: array( - 0: FOO - ) + name: FOO ) ) dim: Scalar_LNumber( @@ -197,9 +195,7 @@ array( 7: Expr_ArrayDimFetch( var: Expr_ClassConstFetch( class: Name( - parts: array( - 0: Foo - ) + name: Foo ) name: BAR ) diff --git a/test/code/parser/expr/fetchAndCall/funcCall.test b/test/code/parser/expr/fetchAndCall/funcCall.test index 62f69e3474..d0df9b1eaf 100644 --- a/test/code/parser/expr/fetchAndCall/funcCall.test +++ b/test/code/parser/expr/fetchAndCall/funcCall.test @@ -18,9 +18,7 @@ a()['b']; array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: a - ) + name: a comments: array( 0: // function name variations ) @@ -109,9 +107,7 @@ array( 8: Expr_ArrayDimFetch( var: Expr_FuncCall( name: Name( - parts: array( - 0: a - ) + name: a comments: array( 0: // array dereferencing ) diff --git a/test/code/parser/expr/fetchAndCall/newDeref.test b/test/code/parser/expr/fetchAndCall/newDeref.test index 5e36ff8102..e5ff7e1274 100644 --- a/test/code/parser/expr/fetchAndCall/newDeref.test +++ b/test/code/parser/expr/fetchAndCall/newDeref.test @@ -11,9 +11,7 @@ array( 0: Expr_PropertyFetch( var: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) @@ -23,9 +21,7 @@ array( 1: Expr_MethodCall( var: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) @@ -37,9 +33,7 @@ array( 2: Expr_ArrayDimFetch( var: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) @@ -52,9 +46,7 @@ array( var: Expr_ArrayDimFetch( var: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) diff --git a/test/code/parser/expr/fetchAndCall/staticCall.test b/test/code/parser/expr/fetchAndCall/staticCall.test index b806f7de41..e01e1ca686 100644 --- a/test/code/parser/expr/fetchAndCall/staticCall.test +++ b/test/code/parser/expr/fetchAndCall/staticCall.test @@ -22,9 +22,7 @@ $a['b']::c(); array( 0: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A comments: array( 0: // method name variations ) @@ -38,9 +36,7 @@ array( ) 1: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A ) name: Scalar_String( value: b @@ -50,9 +46,7 @@ array( ) 2: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_Variable( name: b @@ -62,9 +56,7 @@ array( ) 3: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_ArrayDimFetch( var: Expr_Variable( @@ -79,9 +71,7 @@ array( ) 4: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_ArrayDimFetch( var: Expr_ArrayDimFetch( @@ -102,9 +92,7 @@ array( 5: Expr_ArrayDimFetch( var: Expr_StaticCall( class: Name( - parts: array( - 0: A - ) + name: A comments: array( 0: // array dereferencing ) @@ -125,9 +113,7 @@ array( ) 6: Expr_StaticCall( class: Name( - parts: array( - 0: static - ) + name: static comments: array( 0: // class name variations ) diff --git a/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test b/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test index 3d3cde5104..feb2352bec 100644 --- a/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test +++ b/test/code/parser/expr/fetchAndCall/staticPropertyFetch.test @@ -16,9 +16,7 @@ A::$b{'c'}; array( 0: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A comments: array( 0: // property name variations ) @@ -30,9 +28,7 @@ array( ) 1: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_Variable( name: b @@ -40,9 +36,7 @@ array( ) 2: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: Scalar_String( value: b @@ -51,9 +45,7 @@ array( 3: Expr_ArrayDimFetch( var: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A comments: array( 0: // array access ) @@ -73,9 +65,7 @@ array( 4: Expr_ArrayDimFetch( var: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: b ) diff --git a/test/code/parser/expr/issetAndEmpty.test b/test/code/parser/expr/issetAndEmpty.test index 3a43d0d42a..65fcfd10d8 100644 --- a/test/code/parser/expr/issetAndEmpty.test +++ b/test/code/parser/expr/issetAndEmpty.test @@ -37,9 +37,7 @@ array( 3: Expr_Empty( expr: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) diff --git a/test/code/parser/expr/new.test b/test/code/parser/expr/new.test index a132bbb45e..b848c31c9e 100644 --- a/test/code/parser/expr/new.test +++ b/test/code/parser/expr/new.test @@ -21,18 +21,14 @@ new $a->b{'c'}(); array( 0: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) ) 1: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( 0: Arg( @@ -69,9 +65,7 @@ array( 4: Expr_New( class: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: b ) @@ -136,9 +130,7 @@ array( ) 9: Expr_New( class: Name( - parts: array( - 0: A - ) + name: A ) args: array( ) diff --git a/test/code/parser/expr/uvs/globalNonSimpleVarError.test b/test/code/parser/expr/uvs/globalNonSimpleVarError.test index c4e4a48e57..f63f8305d7 100644 --- a/test/code/parser/expr/uvs/globalNonSimpleVarError.test +++ b/test/code/parser/expr/uvs/globalNonSimpleVarError.test @@ -8,9 +8,7 @@ Syntax error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' from 2:13 to 2: array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: bar - ) + name: bar ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/uvs/indirectCall.test b/test/code/parser/expr/uvs/indirectCall.test index bb3e7fbead..6a26d9cdaa 100644 --- a/test/code/parser/expr/uvs/indirectCall.test +++ b/test/code/parser/expr/uvs/indirectCall.test @@ -20,9 +20,7 @@ array( 0: Expr_FuncCall( name: Expr_FuncCall( name: Name( - parts: array( - 0: id - ) + name: id ) args: array( 0: Arg( @@ -48,9 +46,7 @@ array( name: Expr_FuncCall( name: Expr_FuncCall( name: Name( - parts: array( - 0: id - ) + name: id ) args: array( 0: Arg( @@ -87,9 +83,7 @@ array( name: Expr_FuncCall( name: Expr_FuncCall( name: Name( - parts: array( - 0: id - ) + name: id ) args: array( ) @@ -123,9 +117,7 @@ array( name: Expr_ArrayDimFetch( var: Expr_FuncCall( name: Name( - parts: array( - 0: id - ) + name: id ) args: array( 0: Arg( @@ -255,9 +247,7 @@ array( name: x default: Expr_ConstFetch( name: Name( - parts: array( - 0: null - ) + name: null ) ) ) @@ -478,4 +468,4 @@ array( ) ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/uvs/misc.test b/test/code/parser/expr/uvs/misc.test index 2c5ba900ec..3dfff10c66 100644 --- a/test/code/parser/expr/uvs/misc.test +++ b/test/code/parser/expr/uvs/misc.test @@ -13,9 +13,7 @@ array( 0: Expr_ArrayDimFetch( var: Expr_ClassConstFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: A ) @@ -28,9 +26,7 @@ array( var: Expr_ArrayDimFetch( var: Expr_ClassConstFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: A ) @@ -106,4 +102,4 @@ array( value: 1 ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/uvs/new.test b/test/code/parser/expr/uvs/new.test index e5f92f97a5..a99c9bc2aa 100644 --- a/test/code/parser/expr/uvs/new.test +++ b/test/code/parser/expr/uvs/new.test @@ -55,9 +55,7 @@ array( 4: Expr_New( class: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: Test - ) + name: Test ) name: className ) @@ -92,4 +90,4 @@ array( args: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/uvs/staticProperty.test b/test/code/parser/expr/uvs/staticProperty.test index 5fadfc483e..f4194707c9 100644 --- a/test/code/parser/expr/uvs/staticProperty.test +++ b/test/code/parser/expr/uvs/staticProperty.test @@ -14,9 +14,7 @@ A::$A::$b; array( 0: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: b ) @@ -56,9 +54,7 @@ array( ) 5: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_Variable( name: b @@ -67,9 +63,7 @@ array( 6: Expr_ArrayDimFetch( var: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: Expr_Variable( name: c @@ -82,12 +76,10 @@ array( 7: Expr_StaticPropertyFetch( class: Expr_StaticPropertyFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: A ) name: b ) -) +) \ No newline at end of file diff --git a/test/code/parser/expr/variable.test b/test/code/parser/expr/variable.test index 3a709f9906..36b39f6d97 100644 --- a/test/code/parser/expr/variable.test +++ b/test/code/parser/expr/variable.test @@ -22,9 +22,7 @@ array( 2: Expr_Variable( name: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) @@ -52,4 +50,4 @@ array( ) ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/semiReserved.test b/test/code/parser/semiReserved.test index 34105300b3..7a2cae2395 100644 --- a/test/code/parser/semiReserved.test +++ b/test/code/parser/semiReserved.test @@ -196,9 +196,7 @@ array( ) expr: Expr_New( class: Name( - parts: array( - 0: Test - ) + name: Test ) args: array( ) @@ -222,9 +220,7 @@ array( ) 4: Expr_StaticCall( class: Name( - parts: array( - 0: Test - ) + name: Test ) name: list args: array( @@ -232,9 +228,7 @@ array( ) 5: Expr_StaticCall( class: Name( - parts: array( - 0: Test - ) + name: Test ) name: protected args: array( @@ -254,17 +248,13 @@ array( ) 8: Expr_ClassConstFetch( class: Name( - parts: array( - 0: Test - ) + name: Test ) name: TRAIT ) 9: Expr_ClassConstFetch( class: Name( - parts: array( - 0: Test - ) + name: Test ) name: FINAL ) @@ -278,37 +268,27 @@ array( 0: Stmt_TraitUse( traits: array( 0: Name( - parts: array( - 0: TraitA - ) + name: TraitA ) 1: Name( - parts: array( - 0: TraitB - ) + name: TraitB ) ) adaptations: array( 0: Stmt_TraitUseAdaptation_Precedence( trait: Name( - parts: array( - 0: TraitA - ) + name: TraitA ) method: catch insteadof: array( 0: Name_Relative( - parts: array( - 0: TraitB - ) + name: TraitB ) ) ) 1: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: TraitA - ) + name: TraitA ) method: list newModifier: null @@ -316,9 +296,7 @@ array( ) 2: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: TraitB - ) + name: TraitB ) method: throw newModifier: MODIFIER_PROTECTED (2) @@ -326,9 +304,7 @@ array( ) 3: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: TraitB - ) + name: TraitB ) method: self newModifier: MODIFIER_PROTECTED (2) @@ -342,9 +318,7 @@ array( ) 5: Stmt_TraitUseAdaptation_Alias( trait: Name_FullyQualified( - parts: array( - 0: TraitC - ) + name: TraitC ) method: exit newModifier: null @@ -352,9 +326,7 @@ array( ) 6: Stmt_TraitUseAdaptation_Alias( trait: Name_Relative( - parts: array( - 0: TraitC - ) + name: TraitC ) method: exit newModifier: null @@ -362,16 +334,12 @@ array( ) 7: Stmt_TraitUseAdaptation_Precedence( trait: Name( - parts: array( - 0: TraitA - ) + name: TraitA ) method: catch insteadof: array( 0: Name( - parts: array( - 0: TraitB - ) + name: TraitB ) ) ) diff --git a/test/code/parser/stmt/class/anonymous.test b/test/code/parser/stmt/class/anonymous.test index 266d94354f..48f16b6c04 100644 --- a/test/code/parser/stmt/class/anonymous.test +++ b/test/code/parser/stmt/class/anonymous.test @@ -50,20 +50,14 @@ array( flags: 0 name: null extends: Name( - parts: array( - 0: A - ) + name: A ) implements: array( 0: Name( - parts: array( - 0: B - ) + name: B ) 1: Name( - parts: array( - 0: C - ) + name: C ) ) stmts: array( @@ -99,9 +93,7 @@ array( flags: 0 name: null extends: Name( - parts: array( - 0: A - ) + name: A ) implements: array( ) @@ -109,9 +101,7 @@ array( 0: Stmt_TraitUse( traits: array( 0: Name( - parts: array( - 0: T - ) + name: T ) ) adaptations: array( @@ -157,9 +147,7 @@ array( flags: 0 name: null extends: Name( - parts: array( - 0: A - ) + name: A ) implements: array( ) diff --git a/test/code/parser/stmt/class/conditional.test b/test/code/parser/stmt/class/conditional.test index e18090c798..6ff0a8e92f 100644 --- a/test/code/parser/stmt/class/conditional.test +++ b/test/code/parser/stmt/class/conditional.test @@ -10,9 +10,7 @@ array( 0: Stmt_If( cond: Expr_ConstFetch( name: Name( - parts: array( - 0: true - ) + name: true ) ) stmts: array( diff --git a/test/code/parser/stmt/class/interface.test b/test/code/parser/stmt/class/interface.test index d00bdbdc8f..60c6382735 100644 --- a/test/code/parser/stmt/class/interface.test +++ b/test/code/parser/stmt/class/interface.test @@ -11,14 +11,10 @@ array( name: A extends: array( 0: Name( - parts: array( - 0: C - ) + name: C ) 1: Name( - parts: array( - 0: D - ) + name: D ) ) stmts: array( diff --git a/test/code/parser/stmt/class/name.test b/test/code/parser/stmt/class/name.test index 880da3a89b..3bb0d49527 100644 --- a/test/code/parser/stmt/class/name.test +++ b/test/code/parser/stmt/class/name.test @@ -44,9 +44,7 @@ array( flags: 0 name: A extends: Name( - parts: array( - 0: self - ) + name: self ) implements: array( ) @@ -63,9 +61,7 @@ array( flags: 0 name: A extends: Name( - parts: array( - 0: PARENT - ) + name: PARENT ) implements: array( ) @@ -90,9 +86,7 @@ array( extends: null implements: array( 0: Name( - parts: array( - 0: self - ) + name: self ) ) stmts: array( @@ -110,9 +104,7 @@ array( extends: null implements: array( 0: Name( - parts: array( - 0: PARENT - ) + name: PARENT ) ) stmts: array( @@ -166,9 +158,7 @@ array( name: A extends: array( 0: Name( - parts: array( - 0: self - ) + name: self ) ) stmts: array( @@ -184,9 +174,7 @@ array( name: A extends: array( 0: Name( - parts: array( - 0: PARENT - ) + name: PARENT ) ) stmts: array( diff --git a/test/code/parser/stmt/class/simple.test b/test/code/parser/stmt/class/simple.test index b2f899449a..d79fea19ef 100644 --- a/test/code/parser/stmt/class/simple.test +++ b/test/code/parser/stmt/class/simple.test @@ -21,20 +21,14 @@ array( flags: 0 name: A extends: Name( - parts: array( - 0: B - ) + name: B ) implements: array( 0: Name( - parts: array( - 0: C - ) + name: C ) 1: Name( - parts: array( - 0: D - ) + name: D ) ) stmts: array( @@ -124,9 +118,7 @@ array( params: array( ) returnType: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( ) diff --git a/test/code/parser/stmt/class/trait.test b/test/code/parser/stmt/class/trait.test index 75c6ec66f0..7ecc10d551 100644 --- a/test/code/parser/stmt/class/trait.test +++ b/test/code/parser/stmt/class/trait.test @@ -47,9 +47,7 @@ array( 0: Stmt_TraitUse( traits: array( 0: Name( - parts: array( - 0: C - ) + name: C ) ) adaptations: array( @@ -58,9 +56,7 @@ array( 1: Stmt_TraitUse( traits: array( 0: Name( - parts: array( - 0: D - ) + name: D ) ) adaptations: array( @@ -87,47 +83,33 @@ array( 2: Stmt_TraitUse( traits: array( 0: Name( - parts: array( - 0: E - ) + name: E ) 1: Name( - parts: array( - 0: F - ) + name: F ) 2: Name( - parts: array( - 0: G - ) + name: G ) ) adaptations: array( 0: Stmt_TraitUseAdaptation_Precedence( trait: Name( - parts: array( - 0: E - ) + name: E ) method: a insteadof: array( 0: Name( - parts: array( - 0: F - ) + name: F ) 1: Name( - parts: array( - 0: G - ) + name: G ) ) ) 1: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: E - ) + name: E ) method: b newModifier: MODIFIER_PROTECTED (2) @@ -135,9 +117,7 @@ array( ) 2: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: E - ) + name: E ) method: d newModifier: null @@ -145,9 +125,7 @@ array( ) 3: Stmt_TraitUseAdaptation_Alias( trait: Name( - parts: array( - 0: E - ) + name: E ) method: f newModifier: MODIFIER_PRIVATE (4) diff --git a/test/code/parser/stmt/const.test b/test/code/parser/stmt/const.test index da21f416f0..f645f7dc93 100644 --- a/test/code/parser/stmt/const.test +++ b/test/code/parser/stmt/const.test @@ -29,9 +29,7 @@ array( name: D value: Expr_ConstFetch( name: Name( - parts: array( - 0: E - ) + name: E ) ) ) diff --git a/test/code/parser/stmt/function/conditional.test b/test/code/parser/stmt/function/conditional.test index d9c886ed89..88d54becd3 100644 --- a/test/code/parser/stmt/function/conditional.test +++ b/test/code/parser/stmt/function/conditional.test @@ -10,9 +10,7 @@ array( 0: Stmt_If( cond: Expr_ConstFetch( name: Name( - parts: array( - 0: true - ) + name: true ) ) stmts: array( @@ -30,4 +28,4 @@ array( ) else: null ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/function/defaultValues.test b/test/code/parser/stmt/function/defaultValues.test index d77d4f354c..a1a522ba55 100644 --- a/test/code/parser/stmt/function/defaultValues.test +++ b/test/code/parser/stmt/function/defaultValues.test @@ -26,9 +26,7 @@ array( name: b default: Expr_ConstFetch( name: Name( - parts: array( - 0: null - ) + name: null ) ) ) @@ -48,9 +46,7 @@ array( name: d default: Expr_ClassConstFetch( class: Name( - parts: array( - 0: A - ) + name: A ) name: B ) @@ -145,4 +141,4 @@ array( stmts: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/function/nullableTypes.test b/test/code/parser/stmt/function/nullableTypes.test index d96df4faeb..9f4938f86d 100644 --- a/test/code/parser/stmt/function/nullableTypes.test +++ b/test/code/parser/stmt/function/nullableTypes.test @@ -14,9 +14,7 @@ array( 0: Param( type: NullableType( type: Name( - parts: array( - 0: Foo - ) + name: Foo ) ) byRef: false @@ -36,9 +34,7 @@ array( ) returnType: NullableType( type: Name( - parts: array( - 0: Baz - ) + name: Baz ) ) stmts: array( diff --git a/test/code/parser/stmt/function/returnTypes.test b/test/code/parser/stmt/function/returnTypes.test index ca6c3106e4..ac6441f3f4 100644 --- a/test/code/parser/stmt/function/returnTypes.test +++ b/test/code/parser/stmt/function/returnTypes.test @@ -41,12 +41,9 @@ array( params: array( ) returnType: Name( - parts: array( - 0: Foo - 1: Bar - ) + name: Foo\Bar ) stmts: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/function/typeDeclarations.test b/test/code/parser/stmt/function/typeDeclarations.test index 53c462c5aa..f0d7fa3c3c 100644 --- a/test/code/parser/stmt/function/typeDeclarations.test +++ b/test/code/parser/stmt/function/typeDeclarations.test @@ -32,9 +32,7 @@ array( ) 3: Param( type: Name( - parts: array( - 0: E - ) + name: E ) byRef: false variadic: false @@ -46,4 +44,4 @@ array( stmts: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/function/variadic.test b/test/code/parser/stmt/function/variadic.test index f9d848c7df..8063b979e2 100644 --- a/test/code/parser/stmt/function/variadic.test +++ b/test/code/parser/stmt/function/variadic.test @@ -66,9 +66,7 @@ array( ) 1: Param( type: Name( - parts: array( - 0: Type - ) + name: Type ) byRef: false variadic: true @@ -93,9 +91,7 @@ array( ) 1: Param( type: Name( - parts: array( - 0: Type - ) + name: Type ) byRef: true variadic: true @@ -107,4 +103,4 @@ array( stmts: array( ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/generator/basic.test b/test/code/parser/stmt/generator/basic.test index 8a184aaf68..8c74e821cf 100644 --- a/test/code/parser/stmt/generator/basic.test +++ b/test/code/parser/stmt/generator/basic.test @@ -188,9 +188,7 @@ array( ) 12: Expr_FuncCall( name: Name( - parts: array( - 0: func - ) + name: func comments: array( 0: // yield in function calls ) @@ -231,9 +229,7 @@ array( ) 14: Expr_New( class: Name( - parts: array( - 0: Foo - ) + name: Foo ) args: array( 0: Arg( diff --git a/test/code/parser/stmt/generator/yieldPrecedence.test b/test/code/parser/stmt/generator/yieldPrecedence.test index ff0d4df084..baf1079f81 100644 --- a/test/code/parser/stmt/generator/yieldPrecedence.test +++ b/test/code/parser/stmt/generator/yieldPrecedence.test @@ -73,9 +73,7 @@ array( ) 4: Expr_FuncCall( name: Name( - parts: array( - 0: var_dump - ) + name: var_dump ) args: array( 0: Arg( @@ -149,9 +147,7 @@ array( ) 7: Expr_FuncCall( name: Name( - parts: array( - 0: var_dump - ) + name: var_dump ) args: array( 0: Arg( @@ -188,9 +184,7 @@ array( ) 8: Expr_FuncCall( name: Name( - parts: array( - 0: var_dump - ) + name: var_dump ) args: array( 0: Arg( @@ -227,4 +221,4 @@ array( ) ) ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/haltCompiler.test b/test/code/parser/stmt/haltCompiler.test index 67133ba74c..f8b6a873c5 100644 --- a/test/code/parser/stmt/haltCompiler.test +++ b/test/code/parser/stmt/haltCompiler.test @@ -39,9 +39,7 @@ __halt_compiler(); array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( 0: Expr_Variable( diff --git a/test/code/parser/stmt/haltCompilerOffset.test b/test/code/parser/stmt/haltCompilerOffset.test index 6b47548564..4d7901db2c 100644 --- a/test/code/parser/stmt/haltCompilerOffset.test +++ b/test/code/parser/stmt/haltCompilerOffset.test @@ -9,17 +9,13 @@ Foo array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: var_dump - ) + name: var_dump ) args: array( 0: Arg( value: Expr_ConstFetch( name: Name( - parts: array( - 0: __HALT_COMPILER_OFFSET__ - ) + name: __HALT_COMPILER_OFFSET__ ) ) byRef: false @@ -31,4 +27,4 @@ array( remaining: Foo ) -) +) \ No newline at end of file diff --git a/test/code/parser/stmt/multiCatch.test b/test/code/parser/stmt/multiCatch.test index bed73ad911..8ed5f89ed5 100644 --- a/test/code/parser/stmt/multiCatch.test +++ b/test/code/parser/stmt/multiCatch.test @@ -21,14 +21,10 @@ array( 0: Stmt_Catch( types: array( 0: Name( - parts: array( - 0: X - ) + name: X ) 1: Name( - parts: array( - 0: Y - ) + name: Y ) ) var: e1 @@ -41,15 +37,10 @@ array( 1: Stmt_Catch( types: array( 0: Name_FullyQualified( - parts: array( - 0: A - ) + name: A ) 1: Name( - parts: array( - 0: B - 1: C - ) + name: B\C ) ) var: e2 diff --git a/test/code/parser/stmt/namespace/alias.test b/test/code/parser/stmt/namespace/alias.test index 9bb53bd046..7c31bf202e 100644 --- a/test/code/parser/stmt/namespace/alias.test +++ b/test/code/parser/stmt/namespace/alias.test @@ -23,10 +23,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: A - 1: B - ) + name: A\B ) alias: B ) @@ -38,10 +35,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: C - 1: D - ) + name: C\D ) alias: E ) @@ -53,19 +47,14 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: F - 1: G - ) + name: F\G ) alias: H ) 1: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: J - ) + name: J ) alias: J ) @@ -77,9 +66,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: A - ) + name: A ) alias: A ) @@ -94,9 +81,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: A - ) + name: A ) alias: B ) @@ -108,10 +93,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: foo - 1: bar - ) + name: foo\bar ) alias: bar ) @@ -126,10 +108,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: foo - 1: bar - ) + name: foo\bar ) alias: baz ) @@ -141,10 +120,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: foo - 1: BAR - ) + name: foo\BAR ) alias: BAR ) @@ -156,10 +132,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: foo - 1: BAR - ) + name: foo\BAR ) alias: BAZ ) diff --git a/test/code/parser/stmt/namespace/braced.test b/test/code/parser/stmt/namespace/braced.test index 1fefc1d3f1..e258fe1e60 100644 --- a/test/code/parser/stmt/namespace/braced.test +++ b/test/code/parser/stmt/namespace/braced.test @@ -12,17 +12,12 @@ namespace { array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: Foo - 1: Bar - ) + name: Foo\Bar ) stmts: array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: foo - ) + name: foo ) ) ) @@ -32,9 +27,7 @@ array( stmts: array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: bar - ) + name: bar ) ) ) diff --git a/test/code/parser/stmt/namespace/groupUse.test b/test/code/parser/stmt/namespace/groupUse.test index 6597076a68..f0e8782bbe 100644 --- a/test/code/parser/stmt/namespace/groupUse.test +++ b/test/code/parser/stmt/namespace/groupUse.test @@ -12,17 +12,13 @@ array( 0: Stmt_GroupUse( type: TYPE_UNKNOWN (0) prefix: Name( - parts: array( - 0: A - ) + name: A ) uses: array( 0: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: B - ) + name: B ) alias: B ) @@ -31,27 +27,20 @@ array( 1: Stmt_GroupUse( type: TYPE_UNKNOWN (0) prefix: Name( - parts: array( - 0: A - ) + name: A ) uses: array( 0: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: B - 1: C - ) + name: B\C ) alias: C ) 1: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: D - ) + name: D ) alias: D ) @@ -60,28 +49,20 @@ array( 2: Stmt_GroupUse( type: TYPE_UNKNOWN (0) prefix: Name( - parts: array( - 0: A - 1: B - ) + name: A\B ) uses: array( 0: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: C - 1: D - ) + name: C\D ) alias: D ) 1: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: E - ) + name: E ) alias: E ) @@ -90,27 +71,20 @@ array( 3: Stmt_GroupUse( type: TYPE_FUNCTION (2) prefix: Name( - parts: array( - 0: A - ) + name: A ) uses: array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: b - 1: c - ) + name: b\c ) alias: c ) 1: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: d - ) + name: d ) alias: d ) @@ -119,27 +93,20 @@ array( 4: Stmt_GroupUse( type: TYPE_CONSTANT (3) prefix: Name( - parts: array( - 0: A - ) + name: A ) uses: array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: B - 1: C - ) + name: B\C ) alias: C ) 1: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: D - ) + name: D ) alias: D ) @@ -148,38 +115,27 @@ array( 5: Stmt_GroupUse( type: TYPE_UNKNOWN (0) prefix: Name( - parts: array( - 0: A - 1: B - ) + name: A\B ) uses: array( 0: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: C - 1: D - ) + name: C\D ) alias: D ) 1: Stmt_UseUse( type: TYPE_FUNCTION (2) name: Name( - parts: array( - 0: b - 1: c - ) + name: b\c ) alias: c ) 2: Stmt_UseUse( type: TYPE_CONSTANT (3) name: Name( - parts: array( - 0: D - ) + name: D ) alias: D ) diff --git a/test/code/parser/stmt/namespace/groupUseErrors.test b/test/code/parser/stmt/namespace/groupUseErrors.test index 1f4204252b..086e82ad2e 100644 --- a/test/code/parser/stmt/namespace/groupUseErrors.test +++ b/test/code/parser/stmt/namespace/groupUseErrors.test @@ -10,17 +10,13 @@ array( 0: Stmt_GroupUse( type: TYPE_UNKNOWN (0) prefix: Name( - parts: array( - 0: Bar - ) + name: Bar ) uses: array( 0: Stmt_UseUse( type: TYPE_NORMAL (1) name: Name( - parts: array( - 0: Foo - ) + name: Foo ) alias: Foo ) @@ -36,16 +32,12 @@ Syntax error, unexpected '{', expecting ',' or ';' from 3:9 to 3:9 array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: Bar - ) + name: Bar ) ) 1: Expr_ConstFetch( name: Name( - parts: array( - 0: Baz - ) + name: Baz ) ) ) @@ -58,9 +50,7 @@ Syntax error, unexpected T_NS_SEPARATOR, expecting T_STRING or T_FUNCTION or T_C array( 0: Expr_ConstFetch( name: Name_FullyQualified( - parts: array( - 0: Bar - ) + name: Bar ) ) ) \ No newline at end of file diff --git a/test/code/parser/stmt/namespace/invalidName.test b/test/code/parser/stmt/namespace/invalidName.test index 5047c4b279..583e70abaa 100644 --- a/test/code/parser/stmt/namespace/invalidName.test +++ b/test/code/parser/stmt/namespace/invalidName.test @@ -6,9 +6,7 @@ Cannot use 'self' as namespace name from 1:17 to 1:20 array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: self - ) + name: self ) stmts: array( ) @@ -21,9 +19,7 @@ Cannot use 'PARENT' as namespace name from 1:17 to 1:22 array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: PARENT - ) + name: PARENT ) stmts: array( ) @@ -46,9 +42,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: A - ) + name: A ) alias: self ) @@ -66,9 +60,7 @@ array( 0: Stmt_UseUse( type: TYPE_UNKNOWN (0) name: Name( - parts: array( - 0: B - ) + name: B ) alias: PARENT ) diff --git a/test/code/parser/stmt/namespace/mix.test b/test/code/parser/stmt/namespace/mix.test index 0fbfbf4241..05f8d22424 100644 --- a/test/code/parser/stmt/namespace/mix.test +++ b/test/code/parser/stmt/namespace/mix.test @@ -12,9 +12,7 @@ Cannot mix bracketed namespace declarations with unbracketed namespace declarati array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( 0: Stmt_Echo( @@ -28,9 +26,7 @@ array( ) 1: Stmt_Namespace( name: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( 0: Stmt_Echo( @@ -63,9 +59,7 @@ Cannot mix bracketed namespace declarations with unbracketed namespace declarati array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( 0: Stmt_Echo( @@ -86,9 +80,7 @@ array( ) 2: Stmt_Namespace( name: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( 0: Stmt_Echo( diff --git a/test/code/parser/stmt/namespace/name.test b/test/code/parser/stmt/namespace/name.test index 922d26cb1d..459ae80048 100644 --- a/test/code/parser/stmt/namespace/name.test +++ b/test/code/parser/stmt/namespace/name.test @@ -10,33 +10,22 @@ namespace\A\B; array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: A - ) + name: A ) ) 1: Expr_ConstFetch( name: Name( - parts: array( - 0: A - 1: B - ) + name: A\B ) ) 2: Expr_ConstFetch( name: Name_FullyQualified( - parts: array( - 0: A - 1: B - ) + name: A\B ) ) 3: Expr_ConstFetch( name: Name_Relative( - parts: array( - 0: A - 1: B - ) + name: A\B ) ) ) \ No newline at end of file diff --git a/test/code/parser/stmt/namespace/nested.test b/test/code/parser/stmt/namespace/nested.test index 840daffe92..3608f998d5 100644 --- a/test/code/parser/stmt/namespace/nested.test +++ b/test/code/parser/stmt/namespace/nested.test @@ -11,16 +11,12 @@ Namespace declarations cannot be nested from 3:5 to 5:5 array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( ) diff --git a/test/code/parser/stmt/namespace/notBraced.test b/test/code/parser/stmt/namespace/notBraced.test index d4d1017b31..02e99e4f02 100644 --- a/test/code/parser/stmt/namespace/notBraced.test +++ b/test/code/parser/stmt/namespace/notBraced.test @@ -11,33 +11,24 @@ bar; array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: Foo - 1: Bar - ) + name: Foo\Bar ) stmts: array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: foo - ) + name: foo ) ) ) ) 1: Stmt_Namespace( name: Name( - parts: array( - 0: Bar - ) + name: Bar ) stmts: array( 0: Expr_ConstFetch( name: Name( - parts: array( - 0: bar - ) + name: bar ) ) ) diff --git a/test/code/parser/stmt/namespace/nsAfterHashbang.test b/test/code/parser/stmt/namespace/nsAfterHashbang.test index 6d452538d4..576d515b52 100644 --- a/test/code/parser/stmt/namespace/nsAfterHashbang.test +++ b/test/code/parser/stmt/namespace/nsAfterHashbang.test @@ -12,9 +12,7 @@ array( ) 1: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( ) diff --git a/test/code/parser/stmt/namespace/outsideStmt.test b/test/code/parser/stmt/namespace/outsideStmt.test index 198daa4874..111aa269ee 100644 --- a/test/code/parser/stmt/namespace/outsideStmt.test +++ b/test/code/parser/stmt/namespace/outsideStmt.test @@ -23,9 +23,7 @@ array( ) 1: Stmt_Namespace( name: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( ) @@ -48,9 +46,7 @@ array( ) 1: Stmt_Namespace( name: Name( - parts: array( - 0: Foo - ) + name: Foo ) stmts: array( ) diff --git a/test/code/parser/stmt/namespace/outsideStmtInvalid.test b/test/code/parser/stmt/namespace/outsideStmtInvalid.test index 737112d735..ba400ec45d 100644 --- a/test/code/parser/stmt/namespace/outsideStmtInvalid.test +++ b/test/code/parser/stmt/namespace/outsideStmtInvalid.test @@ -23,9 +23,7 @@ array( ) 2: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( ) @@ -40,9 +38,7 @@ No code may exist outside of namespace {} from 3:1 to 3:7 array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( ) @@ -66,9 +62,7 @@ No code may exist outside of namespace {} from 3:1 to 3:17 array( 0: Stmt_Namespace( name: Name( - parts: array( - 0: A - ) + name: A ) stmts: array( ) @@ -86,18 +80,14 @@ array( ) 2: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( ) ) 3: Stmt_Namespace( name: Name( - parts: array( - 0: B - ) + name: B ) stmts: array( ) diff --git a/test/code/parser/stmt/tryCatch.test b/test/code/parser/stmt/tryCatch.test index 8f7c5ec690..c9e7c874d4 100644 --- a/test/code/parser/stmt/tryCatch.test +++ b/test/code/parser/stmt/tryCatch.test @@ -26,9 +26,7 @@ array( stmts: array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: doTry - ) + name: doTry ) args: array( ) @@ -38,18 +36,14 @@ array( 0: Stmt_Catch( types: array( 0: Name( - parts: array( - 0: A - ) + name: A ) ) var: b stmts: array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: doCatchA - ) + name: doCatchA ) args: array( ) @@ -59,18 +53,14 @@ array( 1: Stmt_Catch( types: array( 0: Name( - parts: array( - 0: B - ) + name: B ) ) var: c stmts: array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: doCatchB - ) + name: doCatchB ) args: array( ) @@ -82,9 +72,7 @@ array( stmts: array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: doFinally - ) + name: doFinally ) args: array( ) @@ -99,9 +87,7 @@ array( 0: Stmt_Catch( types: array( 0: Name( - parts: array( - 0: A - ) + name: A ) ) var: b diff --git a/test/code/parser/stmt/tryWithoutCatch.test b/test/code/parser/stmt/tryWithoutCatch.test index ad113d94ed..afe6408725 100644 --- a/test/code/parser/stmt/tryWithoutCatch.test +++ b/test/code/parser/stmt/tryWithoutCatch.test @@ -12,9 +12,7 @@ array( stmts: array( 0: Expr_FuncCall( name: Name( - parts: array( - 0: foo - ) + name: foo ) args: array( )