diff --git a/src/parser/xhpast/__tests__/PHPASTParserTestCase.php b/src/parser/xhpast/__tests__/PHPASTParserTestCase.php --- a/src/parser/xhpast/__tests__/PHPASTParserTestCase.php +++ b/src/parser/xhpast/__tests__/PHPASTParserTestCase.php @@ -15,34 +15,25 @@ $dir = dirname(__FILE__).'/data/'; foreach (Filesystem::listDirectory($dir) as $file) { if (preg_match('/\.test$/', $file)) { - $this->executeParserTest($file, Filesystem::readFile($dir.$file)); + $this->executeParserTest($file, $dir.$file); } } } - private function executeParserTest($name, $data) { - $data = explode("\n", $data, 2); - if (count($data) !== 2) { - throw new Exception( - pht('Expected multiple lines in parser test file "%s".', $name)); - } - - $head = head($data); - $body = last($data); + private function executeParserTest($name, $file) { + $contents = Filesystem::readFile($file); + $contents = preg_split('/^~{4,}\n/m', $contents); - if (!preg_match('/^#/', $head)) { + if (count($contents) < 2) { throw new Exception( pht( - 'Expected first line of parser test file "%s" to begin with `%s` '. - 'and specify test options.', - $name, - '#')); + "Expected '%s' separating test case and results.", + '~~~~~~~~~~')); } - $head = preg_replace('/^#\s*/', '', $head); + list($data, $options, $expect) = array_merge($contents, array(null)); - $options_parser = new PhutilSimpleOptions(); - $options = $options_parser->parse($head); + $options = id(new PhutilSimpleOptions())->parse($options); $type = null; foreach ($options as $key => $value) { @@ -64,7 +55,7 @@ break; case 'rtrim': // Allows construction of tests which rely on EOF without newlines. - $body = rtrim($body); + $data = rtrim($data); break; default: throw new Exception( @@ -84,7 +75,7 @@ $name)); } - $future = PhutilXHPASTBinary::getParserFuture($body); + $future = PhutilXHPASTBinary::getParserFuture($data); list($err, $stdout, $stderr) = $future->resolve(); switch ($type) { @@ -92,18 +83,12 @@ case 'fail-parse': $this->assertEqual(0, $err, pht('Exit code for "%s".', $name)); - $expect_name = preg_replace('/\.test$/', '.expect', $name); - - $dir = dirname(__FILE__).'/data/'; - $expect = Filesystem::readFile($dir.$expect_name); - try { $expect = phutil_json_decode($expect); } catch (PhutilJSONParserException $ex) { throw new PhutilProxyException( pht( - 'Test ".expect" file "%s" for test "%s" is not valid JSON.', - $expect_name, + 'Expect data for test "%s" is not valid JSON.', $name), $ex); } diff --git a/src/parser/xhpast/__tests__/data/base-fail-parse.php.expect b/src/parser/xhpast/__tests__/data/base-fail-parse.php.expect deleted file mode 100644 --- a/src/parser/xhpast/__tests__/data/base-fail-parse.php.expect +++ /dev/null @@ -1,4 +0,0 @@ -{ - "tree": [], - "stream": [] -} diff --git a/src/parser/xhpast/__tests__/data/base-fail-parse.php.test b/src/parser/xhpast/__tests__/data/base-fail-parse.php.test --- a/src/parser/xhpast/__tests__/data/base-fail-parse.php.test +++ b/src/parser/xhpast/__tests__/data/base-fail-parse.php.test @@ -1,2 +1,8 @@ -# fail-parse b; new a->c(); +~~~~~~~~~~ +fail-syntax diff --git a/src/parser/xhpast/__tests__/data/php-access-on-instanciation.expect b/src/parser/xhpast/__tests__/data/php-access-on-instanciation.expect deleted file mode 100644 --- a/src/parser/xhpast/__tests__/data/php-access-on-instanciation.expect +++ /dev/null @@ -1,642 +0,0 @@ -{ - "tree": [ - 9000, - 0, - 74, - [ - [ - 9006, - 0, - 73, - [ - [ - 9007, - 0, - 0 - ], - [ - 9004, - 2, - 25, - [ - [ - 9051, - 2, - 25, - [ - [ - 9052, - 2, - 2 - ], - [ - 9090, - 4, - 4 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 6, - 25, - [ - [ - 9004, - 8, - 11, - [ - [ - 9063, - 8, - 10, - [ - [ - 9070, - 8, - 8, - [ - [ - 9013, - 8, - 8 - ] - ] - ], - [ - 9064, - 10, - 10, - [ - [ - 9047, - 10, - 10 - ], - [ - 9005 - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 13, - 23, - [ - [ - 9067, - 13, - 23, - [ - [ - 9068, - 13, - 13, - [ - [ - 9013, - 13, - 13 - ] - ] - ], - [ - 9005 - ], - [ - 9013, - 17, - 17 - ], - [ - 9059, - 18, - 19 - ], - [ - 9005 - ], - [ - 9006, - 21, - 23 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 27, - 38, - [ - [ - 9077, - 27, - 37, - [ - [ - 9047, - 27, - 27 - ], - [ - 9081, - 29, - 29 - ], - [ - 9092, - 31, - 37, - [ - [ - 9074, - 31, - 35, - [ - [ - 9090, - 34, - 34 - ], - [ - 9005 - ] - ] - ], - [ - 9013, - 37, - 37 - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 40, - 53, - [ - [ - 9077, - 40, - 52, - [ - [ - 9047, - 40, - 40 - ], - [ - 9081, - 42, - 42 - ], - [ - 9102, - 44, - 52, - [ - [ - 9092, - 44, - 50, - [ - [ - 9074, - 44, - 48, - [ - [ - 9090, - 47, - 47 - ], - [ - 9005 - ] - ] - ], - [ - 9013, - 50, - 50 - ] - ] - ], - [ - 9095, - 51, - 52 - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 55, - 62, - [ - [ - 9092, - 55, - 61, - [ - [ - 9074, - 55, - 59, - [ - [ - 9090, - 58, - 58 - ], - [ - 9005 - ] - ] - ], - [ - 9013, - 61, - 61 - ] - ] - ] - ] - ], - [ - 9004, - 64, - 73, - [ - [ - 9102, - 64, - 72, - [ - [ - 9092, - 64, - 70, - [ - [ - 9074, - 64, - 68, - [ - [ - 9090, - 67, - 67 - ], - [ - 9005 - ] - ] - ], - [ - 9013, - 70, - 70 - ] - ] - ], - [ - 9095, - 71, - 72 - ] - ] - ] - ] - ] - ] - ] - ] - ], - "stream": [ - [ - 371, - 5 - ], - [ - 375, - 2 - ], - [ - 356, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 2 - ], - [ - 350, - 6 - ], - [ - 375, - 1 - ], - [ - 311, - 2 - ], - [ - 59, - 1 - ], - [ - 375, - 3 - ], - [ - 350, - 6 - ], - [ - 375, - 1 - ], - [ - 337, - 8 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 2 - ], - [ - 311, - 2 - ], - [ - 375, - 1 - ], - [ - 61, - 1 - ], - [ - 375, - 1 - ], - [ - 40, - 1 - ], - [ - 300, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 41, - 1 - ], - [ - 360, - 2 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 2 - ], - [ - 311, - 2 - ], - [ - 375, - 1 - ], - [ - 61, - 1 - ], - [ - 375, - 1 - ], - [ - 40, - 1 - ], - [ - 300, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 41, - 1 - ], - [ - 360, - 2 - ], - [ - 309, - 1 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 2 - ], - [ - 40, - 1 - ], - [ - 300, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 41, - 1 - ], - [ - 360, - 2 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 2 - ], - [ - 40, - 1 - ], - [ - 300, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 41, - 1 - ], - [ - 360, - 2 - ], - [ - 309, - 1 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 1 - ] - ] -} diff --git a/src/parser/xhpast/__tests__/data/php-access-on-instanciation.test b/src/parser/xhpast/__tests__/data/php-access-on-instanciation.test --- a/src/parser/xhpast/__tests__/data/php-access-on-instanciation.test +++ b/src/parser/xhpast/__tests__/data/php-access-on-instanciation.test @@ -1,4 +1,3 @@ -# pass b; (new a)->c(); +~~~~~~~~~~ +pass +~~~~~~~~~~ +{ + "tree": [ + 9000, + 0, + 74, + [ + [ + 9006, + 0, + 73, + [ + [ + 9007, + 0, + 0 + ], + [ + 9004, + 2, + 25, + [ + [ + 9051, + 2, + 25, + [ + [ + 9052, + 2, + 2 + ], + [ + 9090, + 4, + 4 + ], + [ + 9005 + ], + [ + 9005 + ], + [ + 9006, + 6, + 25, + [ + [ + 9004, + 8, + 11, + [ + [ + 9063, + 8, + 10, + [ + [ + 9070, + 8, + 8, + [ + [ + 9013, + 8, + 8 + ] + ] + ], + [ + 9064, + 10, + 10, + [ + [ + 9047, + 10, + 10 + ], + [ + 9005 + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 13, + 23, + [ + [ + 9067, + 13, + 23, + [ + [ + 9068, + 13, + 13, + [ + [ + 9013, + 13, + 13 + ] + ] + ], + [ + 9005 + ], + [ + 9013, + 17, + 17 + ], + [ + 9059, + 18, + 19 + ], + [ + 9005 + ], + [ + 9006, + 21, + 23 + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 27, + 38, + [ + [ + 9077, + 27, + 37, + [ + [ + 9047, + 27, + 27 + ], + [ + 9081, + 29, + 29 + ], + [ + 9092, + 31, + 37, + [ + [ + 9074, + 31, + 35, + [ + [ + 9090, + 34, + 34 + ], + [ + 9005 + ] + ] + ], + [ + 9013, + 37, + 37 + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 40, + 53, + [ + [ + 9077, + 40, + 52, + [ + [ + 9047, + 40, + 40 + ], + [ + 9081, + 42, + 42 + ], + [ + 9102, + 44, + 52, + [ + [ + 9092, + 44, + 50, + [ + [ + 9074, + 44, + 48, + [ + [ + 9090, + 47, + 47 + ], + [ + 9005 + ] + ] + ], + [ + 9013, + 50, + 50 + ] + ] + ], + [ + 9095, + 51, + 52 + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 55, + 62, + [ + [ + 9092, + 55, + 61, + [ + [ + 9074, + 55, + 59, + [ + [ + 9090, + 58, + 58 + ], + [ + 9005 + ] + ] + ], + [ + 9013, + 61, + 61 + ] + ] + ] + ] + ], + [ + 9004, + 64, + 73, + [ + [ + 9102, + 64, + 72, + [ + [ + 9092, + 64, + 70, + [ + [ + 9074, + 64, + 68, + [ + [ + 9090, + 67, + 67 + ], + [ + 9005 + ] + ] + ], + [ + 9013, + 70, + 70 + ] + ] + ], + [ + 9095, + 71, + 72 + ] + ] + ] + ] + ] + ] + ] + ] + ], + "stream": [ + [ + 371, + 5 + ], + [ + 375, + 2 + ], + [ + 356, + 5 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 375, + 1 + ], + [ + 123, + 1 + ], + [ + 375, + 2 + ], + [ + 350, + 6 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 59, + 1 + ], + [ + 375, + 3 + ], + [ + 350, + 6 + ], + [ + 375, + 1 + ], + [ + 337, + 8 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 40, + 1 + ], + [ + 41, + 1 + ], + [ + 375, + 1 + ], + [ + 123, + 1 + ], + [ + 375, + 1 + ], + [ + 125, + 1 + ], + [ + 375, + 1 + ], + [ + 125, + 1 + ], + [ + 375, + 2 + ], + [ + 311, + 2 + ], + [ + 375, + 1 + ], + [ + 61, + 1 + ], + [ + 375, + 1 + ], + [ + 40, + 1 + ], + [ + 300, + 3 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 41, + 1 + ], + [ + 360, + 2 + ], + [ + 309, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 2 + ], + [ + 311, + 2 + ], + [ + 375, + 1 + ], + [ + 61, + 1 + ], + [ + 375, + 1 + ], + [ + 40, + 1 + ], + [ + 300, + 3 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 41, + 1 + ], + [ + 360, + 2 + ], + [ + 309, + 1 + ], + [ + 40, + 1 + ], + [ + 41, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 2 + ], + [ + 40, + 1 + ], + [ + 300, + 3 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 41, + 1 + ], + [ + 360, + 2 + ], + [ + 309, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 2 + ], + [ + 40, + 1 + ], + [ + 300, + 3 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 41, + 1 + ], + [ + 360, + 2 + ], + [ + 309, + 1 + ], + [ + 40, + 1 + ], + [ + 41, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 1 + ] + ] +} diff --git a/src/parser/xhpast/__tests__/data/php-array-dereference-2.expect b/src/parser/xhpast/__tests__/data/php-array-dereference-2.expect deleted file mode 100644 --- a/src/parser/xhpast/__tests__/data/php-array-dereference-2.expect +++ /dev/null @@ -1,177 +0,0 @@ -{ - "tree": [ - 9000, - 0, - 19, - [ - [ - 9006, - 0, - 18, - [ - [ - 9007, - 0, - 0 - ], - [ - 9004, - 2, - 18, - [ - [ - 9015, - 2, - 18, - [ - [ - 9017, - 2, - 18, - [ - [ - 9016, - 4, - 13, - [ - [ - 9102, - 5, - 12, - [ - [ - 9092, - 5, - 7, - [ - [ - 9047, - 5, - 5 - ], - [ - 9013, - 7, - 7 - ] - ] - ], - [ - 9100, - 8, - 12, - [ - [ - 9095, - 8, - 9 - ], - [ - 9087, - 11, - 11 - ] - ] - ] - ] - ] - ] - ], - [ - 9006, - 15, - 18 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - "stream": [ - [ - 371, - 5 - ], - [ - 375, - 2 - ], - [ - 303, - 2 - ], - [ - 375, - 1 - ], - [ - 40, - 1 - ], - [ - 311, - 2 - ], - [ - 360, - 2 - ], - [ - 309, - 9 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 91, - 1 - ], - [ - 317, - 9 - ], - [ - 93, - 1 - ], - [ - 41, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 369, - 16 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ] - ] -} diff --git a/src/parser/xhpast/__tests__/data/php-array-dereference-2.test b/src/parser/xhpast/__tests__/data/php-array-dereference-2.test --- a/src/parser/xhpast/__tests__/data/php-array-dereference-2.test +++ b/src/parser/xhpast/__tests__/data/php-array-dereference-2.test @@ -1,6 +1,185 @@ -# pass getStatus()['running']) { // do something } +~~~~~~~~~~ +pass +~~~~~~~~~~ +{ + "tree": [ + 9000, + 0, + 19, + [ + [ + 9006, + 0, + 18, + [ + [ + 9007, + 0, + 0 + ], + [ + 9004, + 2, + 18, + [ + [ + 9015, + 2, + 18, + [ + [ + 9017, + 2, + 18, + [ + [ + 9016, + 4, + 13, + [ + [ + 9102, + 5, + 12, + [ + [ + 9092, + 5, + 7, + [ + [ + 9047, + 5, + 5 + ], + [ + 9013, + 7, + 7 + ] + ] + ], + [ + 9100, + 8, + 12, + [ + [ + 9095, + 8, + 9 + ], + [ + 9087, + 11, + 11 + ] + ] + ] + ] + ] + ] + ], + [ + 9006, + 15, + 18 + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + "stream": [ + [ + 371, + 5 + ], + [ + 375, + 2 + ], + [ + 303, + 2 + ], + [ + 375, + 1 + ], + [ + 40, + 1 + ], + [ + 311, + 2 + ], + [ + 360, + 2 + ], + [ + 309, + 9 + ], + [ + 40, + 1 + ], + [ + 41, + 1 + ], + [ + 91, + 1 + ], + [ + 317, + 9 + ], + [ + 93, + 1 + ], + [ + 41, + 1 + ], + [ + 375, + 1 + ], + [ + 123, + 1 + ], + [ + 375, + 3 + ], + [ + 369, + 16 + ], + [ + 125, + 1 + ], + [ + 375, + 1 + ] + ] +} diff --git a/src/parser/xhpast/__tests__/data/php-array-dereference-3.expect b/src/parser/xhpast/__tests__/data/php-array-dereference-3.expect deleted file mode 100644 --- a/src/parser/xhpast/__tests__/data/php-array-dereference-3.expect +++ /dev/null @@ -1,204 +0,0 @@ -{ - "tree": [ - 9000, - 0, - 21, - [ - [ - 9006, - 0, - 20, - [ - [ - 9007, - 0, - 0 - ], - [ - 9004, - 2, - 20, - [ - [ - 9015, - 2, - 20, - [ - [ - 9017, - 2, - 20, - [ - [ - 9016, - 4, - 16, - [ - [ - 9099, - 5, - 15, - [ - [ - 9001, - 5, - 5 - ], - [ - 9095, - 6, - 15, - [ - [ - 9100, - 7, - 14, - [ - [ - 9099, - 7, - 11, - [ - [ - 9089, - 7, - 9, - [ - [ - 9090, - 7, - 7 - ], - [ - 9013, - 9, - 9 - ] - ] - ], - [ - 9095, - 10, - 11 - ] - ] - ], - [ - 9047, - 13, - 13 - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9006, - 18, - 20 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - "stream": [ - [ - 371, - 5 - ], - [ - 375, - 1 - ], - [ - 303, - 2 - ], - [ - 375, - 1 - ], - [ - 40, - 1 - ], - [ - 353, - 5 - ], - [ - 40, - 1 - ], - [ - 309, - 4 - ], - [ - 381, - 2 - ], - [ - 309, - 15 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 91, - 1 - ], - [ - 311, - 6 - ], - [ - 93, - 1 - ], - [ - 41, - 1 - ], - [ - 41, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ] - ] -} diff --git a/src/parser/xhpast/__tests__/data/php-array-dereference-3.test b/src/parser/xhpast/__tests__/data/php-array-dereference-3.test --- a/src/parser/xhpast/__tests__/data/php-array-dereference-3.test +++ b/src/parser/xhpast/__tests__/data/php-array-dereference-3.test @@ -1,3 +1,209 @@ -# pass +~~~~~~~~~~ +pass, comment="Omits ASP tags since parser support is off as built." +~~~~~~~~~~ +{ + "tree": [ + 9000, + 0, + 21, + [ + [ + 9006, + 0, + 21, + [ + [ + 9007, + 0, + 0 + ], + [ + 9004, + 2, + 3, + [ + [ + 9086, + 2, + 2 + ] + ] + ], + [ + 9004, + 5, + 5, + [ + [ + 9005 + ] + ] + ], + [ + 9007, + 6, + 6 + ], + [ + 9004, + 8, + 9, + [ + [ + 9086, + 8, + 8 + ] + ] + ], + [ + 9004, + 11, + 11, + [ + [ + 9005 + ] + ] + ], + [ + 9007, + 12, + 12 + ], + [ + 9004, + 14, + 15, + [ + [ + 9086, + 14, + 14 + ] + ] + ], + [ + 9004, + 17, + 17, + [ + [ + 9005 + ] + ] + ], + [ + 9034, + 18, + 18 + ], + [ + 9034, + 19, + 19 + ], + [ + 9034, + 20, + 20 + ], + [ + 9034, + 21, + 21 + ] + ] + ] + ] + ], + "stream": [ + [ + 371, + 5 + ], + [ + 375, + 1 + ], + [ + 307, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 1 + ], + [ + 374, + 3 + ], + [ + 371, + 2 + ], + [ + 375, + 1 + ], + [ + 307, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 1 + ], + [ + 374, + 3 + ], + [ + 372, + 3 + ], + [ + 375, + 1 + ], + [ + 307, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 1 + ], + [ + 374, + 3 + ], + [ + 313, + 1 + ], + [ + 313, + 5 + ], + [ + 313, + 1 + ], + [ + 313, + 5 + ] + ] +} diff --git a/src/parser/xhpast/__tests__/data/php-traits.php.expect b/src/parser/xhpast/__tests__/data/php-traits.php.expect deleted file mode 100644 --- a/src/parser/xhpast/__tests__/data/php-traits.php.expect +++ /dev/null @@ -1,907 +0,0 @@ -{ - "tree": [ - 9000, - 0, - 118, - [ - [ - 9006, - 0, - 117, - [ - [ - 9007, - 0, - 0 - ], - [ - 9004, - 2, - 17, - [ - [ - 9051, - 2, - 17, - [ - [ - 9052, - 2, - 2, - [ - [ - 9013, - 2, - 2 - ] - ] - ], - [ - 9090, - 4, - 4 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 6, - 17, - [ - [ - 9004, - 8, - 15, - [ - [ - 9067, - 8, - 15, - [ - [ - 9068 - ], - [ - 9005 - ], - [ - 9013, - 10, - 10 - ], - [ - 9059, - 11, - 12 - ], - [ - 9005 - ], - [ - 9006, - 14, - 15 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 19, - 30, - [ - [ - 9051, - 19, - 30, - [ - [ - 9052, - 19, - 19 - ], - [ - 9090, - 21, - 21 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 23, - 30, - [ - [ - 9105, - 25, - 27, - [ - [ - 9090, - 27, - 27 - ], - [ - 9005 - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 32, - 46, - [ - [ - 9051, - 32, - 46, - [ - [ - 9052, - 32, - 32 - ], - [ - 9090, - 34, - 34 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 36, - 46, - [ - [ - 9105, - 38, - 43, - [ - [ - 9090, - 40, - 40 - ], - [ - 9090, - 43, - 43 - ], - [ - 9005 - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 48, - 94, - [ - [ - 9051, - 48, - 94, - [ - [ - 9052, - 48, - 48 - ], - [ - 9090, - 50, - 50 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 52, - 94, - [ - [ - 9105, - 54, - 92, - [ - [ - 9090, - 56, - 56 - ], - [ - 9090, - 59, - 59 - ], - [ - 9107, - 61, - 92, - [ - [ - 9108, - 63, - 70, - [ - [ - 9110, - 63, - 65 - ], - [ - 9109, - 69, - 69, - [ - [ - 9090, - 69, - 69 - ] - ] - ] - ] - ], - [ - 9111, - 72, - 79, - [ - [ - 9110, - 72, - 74 - ], - [ - 9005 - ], - [ - 9013, - 78, - 78 - ] - ] - ], - [ - 9111, - 81, - 90, - [ - [ - 9110, - 81, - 83 - ], - [ - 9068, - 87, - 87, - [ - [ - 9013, - 87, - 87 - ] - ] - ], - [ - 9013, - 89, - 89 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - [ - 9004, - 96, - 117, - [ - [ - 9051, - 96, - 117, - [ - [ - 9052, - 96, - 96 - ], - [ - 9090, - 98, - 98 - ], - [ - 9005 - ], - [ - 9005 - ], - [ - 9006, - 100, - 117, - [ - [ - 9105, - 102, - 115, - [ - [ - 9090, - 104, - 104 - ], - [ - 9107, - 106, - 115, - [ - [ - 9111, - 108, - 113, - [ - [ - 9110, - 108, - 108, - [ - [ - 9013, - 108, - 108 - ] - ] - ], - [ - 0, - 112, - 112 - ], - [ - 9005 - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - "stream": [ - [ - 371, - 5 - ], - [ - 375, - 2 - ], - [ - 390, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 337, - 8 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 40, - 1 - ], - [ - 41, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 2 - ], - [ - 356, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 343, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 2 - ], - [ - 356, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 343, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 44, - 1 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 2 - ], - [ - 356, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 343, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 44, - 1 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 5 - ], - [ - 309, - 1 - ], - [ - 381, - 2 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 388, - 9 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 5 - ], - [ - 309, - 1 - ], - [ - 381, - 2 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 329, - 2 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 5 - ], - [ - 309, - 1 - ], - [ - 381, - 2 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 329, - 2 - ], - [ - 375, - 1 - ], - [ - 348, - 7 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 59, - 1 - ], - [ - 375, - 3 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 2 - ], - [ - 356, - 5 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 3 - ], - [ - 343, - 3 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 123, - 1 - ], - [ - 375, - 1 - ], - [ - 309, - 1 - ], - [ - 375, - 1 - ], - [ - 329, - 2 - ], - [ - 375, - 1 - ], - [ - 349, - 9 - ], - [ - 59, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ], - [ - 125, - 1 - ], - [ - 375, - 1 - ] - ] -} diff --git a/src/parser/xhpast/__tests__/data/php-traits.php.test b/src/parser/xhpast/__tests__/data/php-traits.php.test --- a/src/parser/xhpast/__tests__/data/php-traits.php.test +++ b/src/parser/xhpast/__tests__/data/php-traits.php.test @@ -1,4 +1,3 @@ -# pass $c); } +~~~~~~~~~~ +pass +~~~~~~~~~~ +{ + "tree": [ + 9000, + 0, + 54, + [ + [ + 9006, + 0, + 53, + [ + [ + 9007, + 0, + 0 + ], + [ + 9004, + 2, + 53, + [ + [ + 9050, + 2, + 53, + [ + [ + 9005 + ], + [ + 9005 + ], + [ + 9013, + 4, + 4 + ], + [ + 9059, + 5, + 6 + ], + [ + 9005 + ], + [ + 9006, + 8, + 53, + [ + [ + 9004, + 10, + 11, + [ + [ + 9112, + 10, + 10, + [ + [ + 9005 + ], + [ + 9005 + ] + ] + ] + ] + ], + [ + 9004, + 13, + 16, + [ + [ + 9112, + 13, + 15, + [ + [ + 9047, + 15, + 15, + [ + [ + 9005 + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 18, + 25, + [ + [ + 9112, + 18, + 24, + [ + [ + 9047, + 20, + 20 + ], + [ + 9047, + 24, + 24 + ] + ] + ] + ] + ], + [ + 9004, + 27, + 36, + [ + [ + 9077, + 27, + 35, + [ + [ + 9047, + 27, + 27 + ], + [ + 9081, + 29, + 29 + ], + [ + 9112, + 31, + 35, + [ + [ + 9047, + 34, + 34, + [ + [ + 9005 + ] + ] + ] + ] + ] + ] + ] + ] + ], + [ + 9004, + 38, + 51, + [ + [ + 9077, + 38, + 50, + [ + [ + 9047, + 38, + 38 + ], + [ + 9081, + 40, + 40 + ], + [ + 9112, + 42, + 50, + [ + [ + 9047, + 45, + 45 + ], + [ + 9047, + 49, + 49 + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + "stream": [ + [ + 371, + 5 + ], + [ + 375, + 2 + ], + [ + 337, + 8 + ], + [ + 375, + 1 + ], + [ + 309, + 1 + ], + [ + 40, + 1 + ], + [ + 41, + 1 + ], + [ + 375, + 1 + ], + [ + 123, + 1 + ], + [ + 375, + 3 + ], + [ + 392, + 5 + ], + [ + 59, + 1 + ], + [ + 375, + 3 + ], + [ + 392, + 5 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 59, + 1 + ], + [ + 375, + 3 + ], + [ + 392, + 5 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 375, + 1 + ], + [ + 361, + 2 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 59, + 1 + ], + [ + 375, + 4 + ], + [ + 311, + 5 + ], + [ + 375, + 1 + ], + [ + 61, + 1 + ], + [ + 375, + 1 + ], + [ + 40, + 1 + ], + [ + 392, + 5 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 41, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 3 + ], + [ + 311, + 5 + ], + [ + 375, + 1 + ], + [ + 61, + 1 + ], + [ + 375, + 1 + ], + [ + 40, + 1 + ], + [ + 392, + 5 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 375, + 1 + ], + [ + 361, + 2 + ], + [ + 375, + 1 + ], + [ + 311, + 2 + ], + [ + 41, + 1 + ], + [ + 59, + 1 + ], + [ + 375, + 1 + ], + [ + 125, + 1 + ], + [ + 375, + 1 + ] + ] +}