diff --git a/composer.lock b/composer.lock index 6e6585b0..95c97987 100644 --- a/composer.lock +++ b/composer.lock @@ -786,16 +786,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -836,9 +836,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phan/phan", @@ -1031,16 +1031,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -1083,9 +1083,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpstan/extension-installer", @@ -1133,16 +1133,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.0", + "version": "1.23.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a2b24135c35852b348894320d47b3902a94bc494" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", - "reference": "a2b24135c35852b348894320d47b3902a94bc494", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { @@ -1174,22 +1174,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, - "time": "2023-07-23T22:17:56+00:00" + "time": "2023-08-03T16:32:59+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.26", + "version": "1.10.29", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", "shasum": "" }, "require": { @@ -1238,25 +1238,25 @@ "type": "tidelift" } ], - "time": "2023-07-19T12:44:37+00:00" + "time": "2023-08-14T13:24:11+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -1284,9 +1284,9 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, - "time": "2023-03-17T07:50:08+00:00" + "time": "2023-08-05T09:02:04+00:00" }, { "name": "psr/container", @@ -2402,16 +2402,16 @@ }, { "name": "vimeo/psalm", - "version": "5.14.1", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -2439,6 +2439,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -2502,9 +2505,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.1" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-08-01T05:16:55+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webmozart/assert", diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index a3b81d46..9ff82c1c 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -764,17 +764,17 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", - "version_normalized": "4.16.0.0", + "version": "v4.17.1", + "version_normalized": "4.17.1.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -785,7 +785,7 @@ "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, - "time": "2023-06-25T14:52:30+00:00", + "time": "2023-08-13T19:53:39+00:00", "bin": [ "bin/php-parse" ], @@ -817,7 +817,7 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, "install-path": "../nikic/php-parser" }, @@ -1021,17 +1021,17 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", - "version_normalized": "1.7.2.0", + "version": "1.7.3", + "version_normalized": "1.7.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -1050,7 +1050,7 @@ "rector/rector": "^0.13.9", "vimeo/psalm": "^4.25" }, - "time": "2023-05-30T18:13:47+00:00", + "time": "2023-08-12T11:01:26+00:00", "type": "library", "extra": { "branch-alias": { @@ -1076,7 +1076,7 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, "install-path": "../phpdocumentor/type-resolver" }, @@ -1129,17 +1129,17 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.0", - "version_normalized": "1.23.0.0", + "version": "1.23.1", + "version_normalized": "1.23.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a2b24135c35852b348894320d47b3902a94bc494" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", - "reference": "a2b24135c35852b348894320d47b3902a94bc494", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { @@ -1156,7 +1156,7 @@ "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" }, - "time": "2023-07-23T22:17:56+00:00", + "time": "2023-08-03T16:32:59+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1173,23 +1173,23 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, "install-path": "../phpstan/phpdoc-parser" }, { "name": "phpstan/phpstan", - "version": "1.10.26", - "version_normalized": "1.10.26.0", + "version": "1.10.29", + "version_normalized": "1.10.29.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", + "reference": "ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1", "shasum": "" }, "require": { @@ -1198,7 +1198,7 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "time": "2023-07-19T12:44:37+00:00", + "time": "2023-08-14T13:24:11+00:00", "bin": [ "phpstan", "phpstan.phar" @@ -1244,22 +1244,22 @@ }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.3", - "version_normalized": "1.1.3.0", + "version": "1.1.4", + "version_normalized": "1.1.4.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -1267,7 +1267,7 @@ "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.5" }, - "time": "2023-03-17T07:50:08+00:00", + "time": "2023-08-05T09:02:04+00:00", "type": "phpstan-extension", "extra": { "phpstan": { @@ -1289,7 +1289,7 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.3" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, "install-path": "../phpstan/phpstan-deprecation-rules" }, @@ -2505,17 +2505,17 @@ }, { "name": "vimeo/psalm", - "version": "5.14.1", - "version_normalized": "5.14.1.0", + "version": "5.15.0", + "version_normalized": "5.15.0.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -2543,6 +2543,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -2566,7 +2569,7 @@ "ext-curl": "In order to send data to shepherd", "ext-igbinary": "^2.0.5 is required, used to serialize caching data" }, - "time": "2023-08-01T05:16:55+00:00", + "time": "2023-08-20T23:07:30+00:00", "bin": [ "psalm", "psalm-language-server", @@ -2608,7 +2611,7 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.1" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, "install-path": "../vimeo/psalm" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 3d504b02..6da853e4 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -128,9 +128,9 @@ 'dev_requirement' => true, ), 'nikic/php-parser' => array( - 'pretty_version' => 'v4.16.0', - 'version' => '4.16.0.0', - 'reference' => '19526a33fb561ef417e822e85f08a00db4059c17', + 'pretty_version' => 'v4.17.1', + 'version' => '4.17.1.0', + 'reference' => 'a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), @@ -164,9 +164,9 @@ 'dev_requirement' => true, ), 'phpdocumentor/type-resolver' => array( - 'pretty_version' => '1.7.2', - 'version' => '1.7.2.0', - 'reference' => 'b2fe4d22a5426f38e014855322200b97b5362c0d', + 'pretty_version' => '1.7.3', + 'version' => '1.7.3.0', + 'reference' => '3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', 'aliases' => array(), @@ -182,27 +182,27 @@ 'dev_requirement' => true, ), 'phpstan/phpdoc-parser' => array( - 'pretty_version' => '1.23.0', - 'version' => '1.23.0.0', - 'reference' => 'a2b24135c35852b348894320d47b3902a94bc494', + 'pretty_version' => '1.23.1', + 'version' => '1.23.1.0', + 'reference' => '846ae76eef31c6d7790fac9bc399ecee45160b26', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan' => array( - 'pretty_version' => '1.10.26', - 'version' => '1.10.26.0', - 'reference' => '5d660cbb7e1b89253a47147ae44044f49832351f', + 'pretty_version' => '1.10.29', + 'version' => '1.10.29.0', + 'reference' => 'ee5d8f2d3977fb09e55603eee6fb53bdd76ee9c1', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpstan', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan-deprecation-rules' => array( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'reference' => 'a22b36b955a2e9a3d39fe533b6c1bb5359f9c319', + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', + 'reference' => '089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-deprecation-rules', 'aliases' => array(), @@ -211,7 +211,7 @@ 'psalm/psalm' => array( 'dev_requirement' => true, 'provided' => array( - 0 => '5.14.1', + 0 => '5.15.0', ), ), 'psr/container' => array( @@ -365,9 +365,9 @@ 'dev_requirement' => true, ), 'vimeo/psalm' => array( - 'pretty_version' => '5.14.1', - 'version' => '5.14.1.0', - 'reference' => 'b9d355e0829c397b9b3b47d0c0ed042a8a70284d', + 'pretty_version' => '5.15.0', + 'version' => '5.15.0.0', + 'reference' => '5c774aca4746caf3d239d9c8cadb9f882ca29352', 'type' => 'library', 'install_path' => __DIR__ . '/../vimeo/psalm', 'aliases' => array(), diff --git a/vendor/nikic/php-parser/grammar/php7.y b/vendor/nikic/php-parser/grammar/php7.y index 2d65d484..1ef60bfe 100644 --- a/vendor/nikic/php-parser/grammar/php7.y +++ b/vendor/nikic/php-parser/grammar/php7.y @@ -221,7 +221,10 @@ non_empty_class_const_list: ; class_const: - identifier_maybe_reserved '=' expr { $$ = Node\Const_[$1, $3]; } + T_STRING '=' expr + { $$ = Node\Const_[new Node\Identifier($1, stackAttributes(#1)), $3]; } + | semi_reserved '=' expr + { $$ = Node\Const_[new Node\Identifier($1, stackAttributes(#1)), $3]; } ; inner_statement_list_ex: @@ -722,6 +725,9 @@ class_statement: | optional_attributes method_modifiers T_CONST class_const_list semi { $$ = new Stmt\ClassConst($4, $2, attributes(), $1); $this->checkClassConst($$, #2); } + | optional_attributes method_modifiers T_CONST type_expr class_const_list semi + { $$ = new Stmt\ClassConst($5, $2, attributes(), $1, $4); + $this->checkClassConst($$, #2); } | optional_attributes method_modifiers T_FUNCTION optional_ref identifier_maybe_reserved '(' parameter_list ')' optional_return_type method_body { $$ = Stmt\ClassMethod[$5, ['type' => $2, 'byRef' => $4, 'params' => $7, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]]; @@ -943,8 +949,8 @@ expr: ; anonymous_class: - optional_attributes T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}' - { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]], $3); + optional_attributes class_entry_type ctor_arguments extends_from implements_list '{' class_statement_list '}' + { $$ = array(Stmt\Class_[null, ['type' => $2, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]], $3); $this->checkClass($$[0], -1); } ; @@ -1040,6 +1046,8 @@ constant: class_constant: class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved { $$ = Expr\ClassConstFetch[$1, $3]; } + | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '{' expr '}' + { $$ = Expr\ClassConstFetch[$1, $4]; } /* We interpret an isolated FOO:: as an unfinished class constant fetch. It could also be an unfinished static property fetch or unfinished scoped call. */ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM error diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php index f616c627..a7fe129b 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php @@ -19,6 +19,8 @@ class ClassConst implements PhpParser\Builder /** @var Node\AttributeGroup[] */ protected $attributeGroups = []; + /** @var Identifier|Node\Name|Node\ComplexType */ + protected $type; /** * Creates a class constant builder @@ -116,6 +118,19 @@ class ClassConst implements PhpParser\Builder return $this; } + /** + * Sets the constant type. + * + * @param string|Node\Name|Identifier|Node\ComplexType $type + * + * @return $this + */ + public function setType($type) { + $this->type = BuilderHelpers::normalizeType($type); + + return $this; + } + /** * Returns the built class node. * @@ -126,7 +141,8 @@ class ClassConst implements PhpParser\Builder $this->constants, $this->flags, $this->attributes, - $this->attributeGroups + $this->attributeGroups, + $this->type ); } } diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php index fef2579b..af010e02 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php @@ -349,15 +349,15 @@ class BuilderFactory /** * Creates a class constant fetch node. * - * @param string|Name|Expr $class Class name - * @param string|Identifier $name Constant name + * @param string|Name|Expr $class Class name + * @param string|Identifier|Expr $name Constant name * * @return Expr\ClassConstFetch */ public function classConstFetch($class, $name): Expr\ClassConstFetch { return new Expr\ClassConstFetch( BuilderHelpers::normalizeNameOrExpr($class), - BuilderHelpers::normalizeIdentifier($name) + BuilderHelpers::normalizeIdentifierOrExpr($name) ); } diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php index 3eeac04a..67632270 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php @@ -19,6 +19,8 @@ class PrintableNewAnonClassNode extends Expr { /** @var Node\AttributeGroup[] PHP attribute groups */ public $attrGroups; + /** @var int Modifiers */ + public $flags; /** @var Node\Arg[] Arguments */ public $args; /** @var null|Node\Name Name of extended class */ @@ -29,11 +31,12 @@ class PrintableNewAnonClassNode extends Expr public $stmts; public function __construct( - array $attrGroups, array $args, Node\Name $extends = null, array $implements, + array $attrGroups, int $flags, array $args, Node\Name $extends = null, array $implements, array $stmts, array $attributes ) { parent::__construct($attributes); $this->attrGroups = $attrGroups; + $this->flags = $flags; $this->args = $args; $this->extends = $extends; $this->implements = $implements; @@ -46,7 +49,7 @@ class PrintableNewAnonClassNode extends Expr // We don't assert that $class->name is null here, to allow consumers to assign unique names // to anonymous classes for their own purposes. We simplify ignore the name here. return new self( - $class->attrGroups, $newNode->args, $class->extends, $class->implements, + $class->attrGroups, $class->flags, $newNode->args, $class->extends, $class->implements, $class->stmts, $newNode->getAttributes() ); } @@ -56,6 +59,6 @@ class PrintableNewAnonClassNode extends Expr } public function getSubNodeNames() : array { - return ['attrGroups', 'args', 'extends', 'implements', 'stmts']; + return ['attrGroups', 'flags', 'args', 'extends', 'implements', 'stmts']; } } diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php index faf832f9..0c45ffb4 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php @@ -10,15 +10,15 @@ class ClassConstFetch extends Expr { /** @var Name|Expr Class name */ public $class; - /** @var Identifier|Error Constant name */ + /** @var Identifier|Expr|Error Constant name */ public $name; /** * Constructs a class const fetch node. * - * @param Name|Expr $class Class name - * @param string|Identifier|Error $name Constant name - * @param array $attributes Additional attributes + * @param Name|Expr $class Class name + * @param string|Identifier|Expr|Error $name Constant name + * @param array $attributes Additional attributes */ public function __construct($class, $name, array $attributes = []) { $this->attributes = $attributes; @@ -29,7 +29,7 @@ class ClassConstFetch extends Expr public function getSubNodeNames() : array { return ['class', 'name']; } - + public function getType() : string { return 'Expr_ClassConstFetch'; } diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php index 1fc7f336..8abaad6d 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php @@ -10,31 +10,36 @@ class ClassConst extends Node\Stmt public $flags; /** @var Node\Const_[] Constant declarations */ public $consts; - /** @var Node\AttributeGroup[] */ + /** @var Node\AttributeGroup[] PHP attribute groups */ public $attrGroups; + /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */ + public $type; /** * Constructs a class const list node. * - * @param Node\Const_[] $consts Constant declarations - * @param int $flags Modifiers - * @param array $attributes Additional attributes - * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param Node\Const_[] $consts Constant declarations + * @param int $flags Modifiers + * @param array $attributes Additional attributes + * @param Node\AttributeGroup[] $attrGroups PHP attribute groups + * @param null|string|Node\Identifier|Node\Name|Node\ComplexType $type Type declaration */ public function __construct( array $consts, int $flags = 0, array $attributes = [], - array $attrGroups = [] + array $attrGroups = [], + $type = null ) { $this->attributes = $attributes; $this->flags = $flags; $this->consts = $consts; $this->attrGroups = $attrGroups; + $this->type = \is_string($type) ? new Node\Identifier($type) : $type; } public function getSubNodeNames() : array { - return ['attrGroups', 'flags', 'consts']; + return ['attrGroups', 'flags', 'type', 'consts']; } /** diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php index cede4419..fc895cb0 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php @@ -18,16 +18,16 @@ use PhpParser\Node\Stmt; class Php7 extends \PhpParser\ParserAbstract { protected $tokenToSymbolMapSize = 396; - protected $actionTableSize = 1223; - protected $gotoTableSize = 626; + protected $actionTableSize = 1241; + protected $gotoTableSize = 629; protected $invalidSymbol = 168; protected $errorSymbol = 1; protected $defaultAction = -32766; protected $unexpectedTokenRule = 32767; - protected $YY2TBLSTATE = 429; - protected $numNonLeafStates = 726; + protected $YY2TBLSTATE = 434; + protected $numNonLeafStates = 736; protected $symbolToName = array( "EOF", @@ -244,262 +244,266 @@ class Php7 extends \PhpParser\ParserAbstract ); protected $action = array( - 132, 133, 134, 575, 135, 136, 0, 738, 739, 740, - 137, 37, 850, 825, 851, 476,-32766,-32766,-32766,-32767, - -32767,-32767,-32767, 101, 102, 103, 104, 105, 1097, 1098, - 1099, 1096, 1095, 1094, 1100, 732, 731,-32766, 1289,-32766, + 133, 134, 135, 579, 136, 137, 0, 748, 749, 750, + 138, 38, 327,-32766,-32766,-32766,-32766,-32766,-32766,-32767, + -32767,-32767,-32767, 102, 103, 104, 105, 106, 1109, 1110, + 1111, 1108, 1107, 1106, 1112, 742, 741,-32766, 1232,-32766, -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, - -32767, 1022, 377, 376, 2, 741,-32766,-32766,-32766,-32766, - -32766, 822, 417,-32766,-32766,-32766,-32766,-32766,-32766, 267, - 138, 399, 745, 746, 747, 748, 287,-32766, 423,-32766, - -32766,-32766,-32766,-32766,-32766, 749, 750, 751, 752, 753, - 754, 755, 756, 757, 758, 759, 779, 576, 780, 781, - 782, 783, 771, 772, 340, 341, 774, 775, 760, 761, - 762, 764, 765, 766, 351, 806, 807, 808, 809, 810, - 577, 767, 768, 578, 579, 800, 791, 789, 790, 803, - 786, 787, -327, 423, 580, 581, 785, 582, 583, 584, - 585, 586, 587, 605, -590, 477, -86, 814, 788, 588, - 589, -590, 139,-32766,-32766,-32766, 132, 133, 134, 575, - 135, 136, 1046, 738, 739, 740, 137, 37, 323, 1013, - 823, 824, 1334, 1324,-32766, 1335,-32766,-32766,-32766,-32766, - -32766,-32766,-32766, 1097, 1098, 1099, 1096, 1095, 1094, 1100, - -587, 732, 731,-32766,-32766,-32766, 12, -587, 81,-32766, - -32766,-32766, 945, 946, 322, 927, 34, 947, 1224, 1223, - 1225, 741, -86, 942,-32766, 1075,-32766,-32766,-32766,-32766, - -32766, 239,-32766,-32766,-32766, 267, 138, 399, 745, 746, - 747, 748, 461, 462, 423, 35, 247, 103, 104, 105, - 128, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 779, 576, 780, 781, 782, 783, 771, 772, - 340, 341, 774, 775, 760, 761, 762, 764, 765, 766, - 351, 806, 807, 808, 809, 810, 577, 767, 768, 578, - 579, 800, 791, 789, 790, 803, 786, 787, -327, 144, - 580, 581, 785, 582, 583, 584, 585, 586, 587, 1222, - 82, 83, 84, -590, 788, 588, 589, -590, 148, 763, - 733, 734, 735, 736, 737, 1309, 738, 739, 740, 776, - 777, 36, 1308, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 288, 271, -587, - -193, 375, 376, -587, 976,-32766, 1021, 453, 454, 455, - 109, 417, 945, 946, 741, 712, 819, 947,-32766,-32766, - -32766, -271, 1073, 941, 1224, 1223, 1225, 288, 742, 743, - 744, 745, 746, 747, 748, -192, -365, 812, -365,-32766, - 599,-32766,-32766, 549, 749, 750, 751, 752, 753, 754, - 755, 756, 757, 758, 759, 779, 802, 780, 781, 782, - 783, 771, 772, 773, 801, 774, 775, 760, 761, 762, - 764, 765, 766, 805, 806, 807, 808, 809, 810, 811, - 767, 768, 769, 770, 800, 791, 789, 790, 803, 786, - 787, 251, 820, 778, 784, 785, 792, 793, 795, 794, - 796, 797, 732, 731, 1261, 1022, 1019, 788, 799, 798, - 49, 50, 51, 507, 52, 53, 1009, 1008, 1007, 1010, - 54, 55, -111, 56, 816, 1045, 14, -111, 1022, -111, - 287, 1305, 977, 306, 302, 1022, 238, -111, -111, -111, - -111, -111, -111, -111, -111, 106, 107, 108, 1089, 271, - -32766,-32766,-32766, 280, 284, 126, -193, 929, 57, 58, - 287, 109, 1019, -541, 59, 308, 60, 244, 245, 61, - 62, 63, 64, 65, 66, 67, 68, 1229, 27, 269, - 69, 439, 508, -341, 1022, 929, 1255, 1256, 509, 907, - 823, -192, 150, 907, 1253, 41, 24, 510, 352, 511, - 818, 512, 386, 513, 11, 699, 514, 515, 648, 25, - 814, 43, 44, 440, 372, 371, 907, 45, 516, 702, - 1220, 667, 668, 363, 334, -540, 357, -541, -541, 320, - 1215, 1249, 518, 519, 520, -581, 1074, 335, 724, -581, - 1019,-32766, -541, 336, 521, 522, 703, 1243, 1244, 1245, - 1246, 1240, 1241, 294, -541, 850, -547, 851, 823, 1247, - 1242, 365, 1022, 1224, 1223, 1225, 295, -153, -153, -153, - 369, 70, 897, 318, 319, 322, 897, 384, 149, 402, - 373, 374, -153, 435, -153, 436, -153, 280, -153, -540, - -540, 141, 1220, 378, 379, 639, 640, 322, 370, 897, - 907, 437, 438, 829, -540, -88, 151, 732, 731, 945, - 946, 153, 823,-32766, 517, -51, -540, 154, -546, 883, - 941, -111, -111, -111, 31, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 155, 74, - 27, 157, 32, 322, -85, 123, 124, 909, 129, 697, - 130, 909, 823, 697, -153, 143, 1253, 158,-32766, -544, - 1229, -542, 159, 160, 1222, 161, -79, 1134, 1136, -75, - 285,-32766,-32766,-32766, 909,-32766, 697,-32766, -539,-32766, - -301, -73,-32766, 897, -72, -71, 1220,-32766,-32766,-32766, - -16, 140, 1215,-32766,-32766, 732, 731, 322, -70,-32766, - 414, -69, -4, 907, -68, -67, 521, 522,-32766, 1243, - 1244, 1245, 1246, 1240, 1241, -66, -47, -18, 147, 270, - 281, 1247, 1242, -544, -544, -542, -542, 732, 731, 713, - 716, 906,-32766, 72, 146, 907, 319, 322, 1222, -297, - -542, 823, -539, -539, 276,-32766,-32766,-32766, 277,-32766, - -544,-32766, -542,-32766, 282, 283,-32766, -539, 909, 328, - 697,-32766,-32766,-32766,-32766, 704, 286,-32766,-32766, -539, - 1222, 923, 289,-32766, 414, 1220, 290,-32766,-32766,-32766, - 271,-32766,-32766,-32766, 47,-32766, 897, -111,-32766, 677, - 109, 814, 145,-32766,-32766,-32766,-32766, 823, 131,-32766, - -32766, 1336,-32766, 654, 670,-32766, 414, 1104, 370, 637, - 430, 551, 73, 13,-32766, 293, 555, 295, 897, 945, - 946, 649, 74, 434, 517, 458, 322, 487, 690, 842, - 941, -111, -111, -111, 301, 1022, 561, 655, 671, 1260, - 300,-32766, -539,-32766, 907, 603, 303, 1222, 296, 297, - 39, 1262, 9, 40,-32766,-32766,-32766, 0,-32766, 907, - -32766, 909,-32766, 697, -4,-32766, 0, 1229, 907, 0, - -32766,-32766,-32766,-32766, 307, 125,-32766,-32766, 0, 1222, - 907, 0,-32766, 414, 0, 0,-32766,-32766,-32766, 707, - -32766,-32766,-32766, 962,-32766, 697, -505,-32766, 714, -495, - 7, 482,-32766,-32766,-32766,-32766, -539, -539,-32766,-32766, - 16, 1222, 567, 367,-32766, 414, 925, 295,-32766,-32766, - -32766, -539,-32766,-32766,-32766, 822,-32766, 897, 721,-32766, - 722, -575, 888, -539,-32766,-32766,-32766, 986, 963, 970, - -32766,-32766, 897, -249, -249, -249,-32766, 414, 823, 370, - 960, 897, 971, 886, 958,-32766, 1078, 1081, 718, 1082, - 945, 946, 1079, 897, 1080, 517, 1086, 33, 1250, 834, - 883, 941, -111, -111, -111, 27, 1275, 1293, 1327, -248, - -248, -248, 1220, 642, 884, 370, 317, 823, 366, 698, - 701, 1253, 1331, 705, -111, 706, 945, 946, 708, 709, - 710, 517, 909,-32766, 697, -249, 883, 941, -111, -111, - -111, 711, 715, 700, -509, 1333, 845, 909, 48, 697, - -573, 1220, 844, 853, 295, 935, 909, 1215, 697, 74, - 978, 852, 1332, 322, 934, 932, 933, 936, 909, 1206, - 697, -248, 522, 916, 1243, 1244, 1245, 1246, 1240, 1241, - 926, 914, 968, 969, 1330, 1287, 1247, 1242, 1276, 1294, - -32766, 1300, 1303, 1191, -547, -546, 1222, -545, 72, -489, - 1, 319, 322,-32766,-32766,-32766, 28,-32766, 29,-32766, - 38,-32766, 298, 299,-32766, 42, 46, 71, 75,-32766, - -32766,-32766, 76, 77, 78,-32766,-32766, 368, 79, 80, - 142,-32766, 414, 152, 156, 243, 324, 352, 353, 127, - -32766, -274, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 364, 431, 0, -272, -271, 18, 19, 20, 21, - 23, 401, 478, 479, 486, 489, 490, 491, 492, 496, - 497, 498, 505, 684, 1233, 1174, 1251, 1048, 1047, 1028, - 0, 1210, 1024, -276, -103, 17, 22, 26, 292, 400, - 596, 600, 628, 689, 1178, 1228, 1175, 1306, 0, 0, - 1254, 0, 322 + -32767, 2, 107, 108, 109, 751, 274, 381, 380,-32766, + -32766,-32766,-32766, 104, 105, 106, 1024, 422, 110, 265, + 139, 403, 755, 756, 757, 758, 466, 467, 428, 938, + 291,-32766, 287,-32766,-32766, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 789, 580, 790, 791, + 792, 793, 781, 782, 344, 345, 784, 785, 770, 771, + 772, 774, 775, 776, 355, 816, 817, 818, 819, 820, + 581, 777, 778, 582, 583, 810, 801, 799, 800, 813, + 796, 797, 687, -545, 584, 585, 795, 586, 587, 588, + 589, 590, 591, -328, -593, -367, 1234, -367, 798, 592, + 593, -593, 140,-32766,-32766,-32766, 133, 134, 135, 579, + 136, 137, 1057, 748, 749, 750, 138, 38, 688, 1020, + 1019, 1018, 1021, 390,-32766, 7,-32766,-32766,-32766,-32766, + -32766,-32766,-32766,-32766,-32766,-32766, 379, 380, 1033, 689, + 690, 742, 741,-32766,-32766,-32766, 422, -545, -545, -590, + -32766,-32766,-32766, 1032,-32766, 127, -590, 1236, 1235, 1237, + 1318, 751, -545, 290,-32766, 283,-32766,-32766,-32766,-32766, + -32766, 1236, 1235, 1237, -545, 265, 139, 403, 755, 756, + 757, 758, 16, 481, 428, 458, 459, 460, 298, 722, + 35, 759, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 769, 789, 580, 790, 791, 792, 793, 781, 782, + 344, 345, 784, 785, 770, 771, 772, 774, 775, 776, + 355, 816, 817, 818, 819, 820, 581, 777, 778, 582, + 583, 810, 801, 799, 800, 813, 796, 797, 129, 824, + 584, 585, 795, 586, 587, 588, 589, 590, 591, -328, + 83, 84, 85, -593, 798, 592, 593, -593, 149, 773, + 743, 744, 745, 746, 747, 824, 748, 749, 750, 786, + 787, 37, 145, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 291, 274, 835, + 254, 1109, 1110, 1111, 1108, 1107, 1106, 1112, -590, 860, + 110, 861, -590, 482, 751,-32766,-32766,-32766,-32766,-32766, + 142, 603, 1085, 742, 741, 1262, 326, 987, 752, 753, + 754, 755, 756, 757, 758, 309,-32766, 822,-32766,-32766, + -32766,-32766, 242, 553, 759, 760, 761, 762, 763, 764, + 765, 766, 767, 768, 769, 789, 812, 790, 791, 792, + 793, 781, 782, 783, 811, 784, 785, 770, 771, 772, + 774, 775, 776, 815, 816, 817, 818, 819, 820, 821, + 777, 778, 779, 780, 810, 801, 799, 800, 813, 796, + 797, 311, 940, 788, 794, 795, 802, 803, 805, 804, + 806, 807, 323, 609, 1274, 1033, 833, 798, 809, 808, + 50, 51, 52, 512, 53, 54, 860, 241, 861, 918, + 55, 56, -111, 57,-32766,-32766,-32766, -111, 826, -111, + 290, 1302, 1347, 356, 305, 1348, 339, -111, -111, -111, + -111, -111, -111, -111, -111,-32766, -194,-32766,-32766,-32766, + -193, 956, 957, 829, -86, 988, 958, 834, 58, 59, + 340, 428, 952, -544, 60, 832, 61, 247, 248, 62, + 63, 64, 65, 66, 67, 68, 69, 1241, 28, 267, + 70, 444, 513, -342,-32766, 141, 1268, 1269, 514, 918, + 833, 326, -272, 918, 1266, 42, 25, 515, 940, 516, + 14, 517, 908, 518, 828, 369, 519, 520, 373, 709, + 1033, 44, 45, 445, 376, 375, 388, 46, 521, 712, + -86, 440, 1101, 367, 338, -543, 441, -544, -544, 830, + 1227, 442, 523, 524, 525, 290, 1236, 1235, 1237, 361, + 1030, 443, -544, 1087, 526, 527, 839, 1255, 1256, 1257, + 1258, 1252, 1253, 297, -544, 151, -550, -584, 833, 1259, + 1254, -584, 1033, 1236, 1235, 1237, 298, -154, -154, -154, + 152, 71, 908, 321, 322, 326, 908, 920, 1030, 707, + 833, 154, -154, 1337, -154, 155, -154, 283, -154, -543, + -543, 82, 1232, 1086, 1322, 734, 156, 326, 374, 158, + 1033, 1321, -194, -79, -543, -88, -193, 742, 741, 956, + 957, 653, 26,-32766, 522, -51, -543, 33, -549, 894, + 952, -111, -111, -111, 32, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -59, 75, + 28, 672, 673, 326, -58, 36, 250, 920, 124, 707, + 125, 920, 833, 707, -154, 130, 1266, 131,-32766, -547, + 144, -542, 150, 406, 1234, 377, 378, 1146, 1148, 382, + 383,-32766,-32766,-32766, -85,-32766, 1056,-32766, -542,-32766, + 644, 645,-32766, 159, 160, 161, 1232,-32766,-32766,-32766, + 162, -79, 1227,-32766,-32766, 742, 741, 163, -302,-32766, + 419, -75, -4, 918, -73, 287, 526, 527,-32766, 1255, + 1256, 1257, 1258, 1252, 1253, -72, -71, -70, -69, -68, + -67, 1259, 1254, -547, -547, -542, -542, 742, 741, -66, + -47, -18,-32766, 73, 148, 918, 322, 326, 1234, 273, + -542, 284, -542, -542, 723,-32766,-32766,-32766, 726,-32766, + -547,-32766, -542,-32766, 917, 147,-32766, -542, 288, 289, + -298,-32766,-32766,-32766,-32766, 713, 279,-32766,-32766, -542, + 1234, 280, 285,-32766, 419, 48, 286,-32766,-32766,-32766, + 332,-32766,-32766,-32766, 292,-32766, 908, 293,-32766, 934, + 274, 1030, 918,-32766,-32766,-32766, 110, 682, 132,-32766, + -32766, 833, 146,-32766, 559,-32766, 419, 659, 374, 824, + 435, 1349, 74, 1033,-32766, 296, 654, 1116, 908, 956, + 957, 306, 714, 698, 522, 555, 303, 13, 310, 852, + 952, -111, -111, -111, 700, 463, 492, 953, 283, 299, + 300,-32766, 49, 675, 918, 304, 660, 1234, 676, 936, + 1273,-32766, 10, 1263,-32766,-32766,-32766, 642,-32766, 918, + -32766, 920,-32766, 707, -4,-32766, 126, 34, 918, 565, + -32766,-32766,-32766,-32766, 0, 908,-32766,-32766, 0, 1234, + 918, 0,-32766, 419, 0, 0,-32766,-32766,-32766, 717, + -32766,-32766,-32766, 920,-32766, 707, 1033,-32766, 724, 1275, + 0, 487,-32766,-32766,-32766,-32766, 301, 302,-32766,-32766, + -507, 1234, 571, -497,-32766, 419, 607, 8,-32766,-32766, + -32766, 372,-32766,-32766,-32766, 17,-32766, 908, 371,-32766, + 832, 298, 320, 128,-32766,-32766,-32766, 40, 370, 41, + -32766,-32766, 908, -250, -250, -250,-32766, 419, 731, 374, + 973, 908, 707, 732, 899,-32766, 997, 974, 728, 981, + 956, 957, 971, 908, 982, 522, 897, 969, 1090, 1093, + 894, 952, -111, -111, -111, 28, 1094, 1091, 1092, -249, + -249, -249, 1241, 1098, 708, 374, 844, 833, 1288, 1306, + 1340, 1266, 647, 1267, 711, 715, 956, 957, 716, 1241, + 718, 522, 920, 719, 707, -250, 894, 952, -111, -111, + -111, 720, -16, 721, 725, 710, -511, 920, 895, 707, + -578, 1232, 1344, 1346, 855, 854, 920, 1227, 707, -577, + 863, 946, 989, 862, 1345, 945, 943, 944, 920, 947, + 707, -249, 527, 1218, 1255, 1256, 1257, 1258, 1252, 1253, + 927, 937, 925, 979, 980, 631, 1259, 1254, 1343, 1300, + -32766, 1289, 1307, 833, 1316, -275, 1234, -576, 73, -550, + -549, 322, 326,-32766,-32766,-32766, -548,-32766, -491,-32766, + 833,-32766, 1, 29,-32766, 30, 39, 43, 47,-32766, + -32766,-32766, 72, 76, 77,-32766,-32766, 1232, -111, -111, + 78,-32766, 419, -111, 79, 80, 81, 143, 153, -111, + -32766, 157, 246, 328, 1232, -111, -111, 356,-32766, 357, + -111, 358, 359, 360, 361, 362, -111, 363, 364, 365, + 366, 368, 436, 0, -273,-32766, -272, 19, 20, 298, + 21, 22, 24, 405, 75, 1203, 483, 484, 326, 491, + 0, 494, 495, 496, 497, 501, 298, 502, 503, 510, + 693, 75, 0, 1245, 1186, 326, 1264, 1059, 1058, 1039, + 1222, 1035, -277, -103, 18, 23, 27, 295, 404, 600, + 604, 633, 699, 1190, 1240, 1187, 1319, 0, 0, 0, + 326 ); protected $actionCheck = array( 2, 3, 4, 5, 6, 7, 0, 9, 10, 11, - 12, 13, 106, 1, 108, 31, 9, 10, 11, 44, + 12, 13, 70, 9, 10, 11, 9, 10, 11, 44, 45, 46, 47, 48, 49, 50, 51, 52, 116, 117, - 118, 119, 120, 121, 122, 37, 38, 30, 1, 32, + 118, 119, 120, 121, 122, 37, 38, 30, 116, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 138, 106, 107, 8, 57, 9, 10, 11, 9, - 10, 155, 116, 9, 10, 11, 9, 10, 11, 71, - 72, 73, 74, 75, 76, 77, 163, 30, 80, 32, - 33, 34, 35, 36, 30, 87, 88, 89, 90, 91, + 43, 8, 53, 54, 55, 57, 57, 106, 107, 137, + 9, 10, 11, 50, 51, 52, 1, 116, 69, 71, + 72, 73, 74, 75, 76, 77, 134, 135, 80, 1, + 30, 30, 30, 32, 33, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 8, 80, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 51, 1, 161, 31, 80, 150, 151, + 132, 133, 80, 70, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 8, 1, 106, 80, 108, 150, 151, 152, 8, 154, 9, 10, 11, 2, 3, 4, 5, - 6, 7, 164, 9, 10, 11, 12, 13, 70, 1, - 82, 159, 80, 85, 30, 83, 32, 33, 34, 35, - 36, 37, 38, 116, 117, 118, 119, 120, 121, 122, - 1, 37, 38, 9, 10, 11, 8, 8, 161, 9, - 10, 11, 117, 118, 167, 1, 8, 122, 155, 156, - 157, 57, 97, 128, 30, 162, 32, 33, 34, 35, - 30, 14, 32, 33, 34, 71, 72, 73, 74, 75, - 76, 77, 134, 135, 80, 147, 148, 50, 51, 52, + 6, 7, 164, 9, 10, 11, 12, 13, 116, 119, + 120, 121, 122, 106, 30, 108, 32, 33, 34, 35, + 36, 37, 38, 9, 10, 11, 106, 107, 138, 137, + 138, 37, 38, 9, 10, 11, 116, 134, 135, 1, + 9, 10, 11, 137, 30, 14, 8, 155, 156, 157, + 1, 57, 149, 163, 30, 163, 32, 33, 34, 35, + 36, 155, 156, 157, 161, 71, 72, 73, 74, 75, + 76, 77, 8, 31, 80, 129, 130, 131, 158, 161, 8, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 164, 8, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 80, + 126, 127, 128, 129, 130, 131, 132, 133, 8, 80, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 164, 9, 10, 11, 160, 150, 151, 152, 164, 154, 2, - 3, 4, 5, 6, 7, 1, 9, 10, 11, 12, + 3, 4, 5, 6, 7, 80, 9, 10, 11, 12, 13, 30, 8, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 30, 57, 160, - 8, 106, 107, 164, 31, 9, 137, 129, 130, 131, - 69, 116, 117, 118, 57, 161, 80, 122, 9, 10, - 11, 164, 1, 128, 155, 156, 157, 30, 71, 72, - 73, 74, 75, 76, 77, 8, 106, 80, 108, 30, - 1, 32, 33, 85, 87, 88, 89, 90, 91, 92, + 49, 50, 51, 52, 53, 54, 55, 30, 57, 1, + 8, 116, 117, 118, 119, 120, 121, 122, 160, 106, + 69, 108, 164, 161, 57, 9, 10, 11, 9, 10, + 161, 1, 1, 37, 38, 1, 167, 31, 71, 72, + 73, 74, 75, 76, 77, 8, 30, 80, 32, 33, + 34, 35, 14, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 8, 156, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 37, 38, 146, 138, 116, 150, 151, 152, - 2, 3, 4, 5, 6, 7, 119, 120, 121, 122, - 12, 13, 101, 15, 80, 1, 101, 106, 138, 108, - 163, 1, 159, 8, 113, 138, 97, 116, 117, 118, - 119, 120, 121, 122, 123, 53, 54, 55, 123, 57, - 9, 10, 11, 163, 30, 14, 164, 122, 50, 51, - 163, 69, 116, 70, 56, 8, 58, 59, 60, 61, + 133, 8, 122, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 8, 51, 146, 138, 82, 150, 151, 152, + 2, 3, 4, 5, 6, 7, 106, 97, 108, 1, + 12, 13, 101, 15, 9, 10, 11, 106, 80, 108, + 163, 1, 80, 163, 113, 83, 8, 116, 117, 118, + 119, 120, 121, 122, 123, 30, 8, 32, 33, 34, + 8, 117, 118, 80, 31, 159, 122, 159, 50, 51, + 8, 80, 128, 70, 56, 155, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 1, 70, 71, - 72, 73, 74, 162, 138, 122, 78, 79, 80, 1, - 82, 164, 14, 1, 86, 87, 88, 89, 163, 91, - 156, 93, 106, 95, 108, 161, 98, 99, 75, 76, - 80, 103, 104, 105, 106, 107, 1, 109, 110, 31, - 116, 75, 76, 115, 116, 70, 163, 134, 135, 8, - 122, 1, 124, 125, 126, 160, 159, 8, 161, 164, - 116, 137, 149, 8, 136, 137, 31, 139, 140, 141, - 142, 143, 144, 145, 161, 106, 163, 108, 82, 151, - 152, 8, 138, 155, 156, 157, 158, 75, 76, 77, - 8, 163, 84, 165, 166, 167, 84, 8, 101, 102, - 106, 107, 90, 8, 92, 8, 94, 163, 96, 134, - 135, 161, 116, 106, 107, 111, 112, 167, 106, 84, - 1, 8, 8, 8, 149, 31, 14, 37, 38, 117, - 118, 14, 82, 137, 122, 31, 161, 14, 163, 127, + 72, 73, 74, 162, 9, 161, 78, 79, 80, 1, + 82, 167, 164, 1, 86, 87, 88, 89, 122, 91, + 101, 93, 84, 95, 156, 8, 98, 99, 8, 161, + 138, 103, 104, 105, 106, 107, 8, 109, 110, 31, + 97, 8, 123, 115, 116, 70, 8, 134, 135, 156, + 122, 8, 124, 125, 126, 163, 155, 156, 157, 163, + 116, 8, 149, 162, 136, 137, 8, 139, 140, 141, + 142, 143, 144, 145, 161, 14, 163, 160, 82, 151, + 152, 164, 138, 155, 156, 157, 158, 75, 76, 77, + 14, 163, 84, 165, 166, 167, 84, 159, 116, 161, + 82, 14, 90, 85, 92, 14, 94, 163, 96, 134, + 135, 161, 116, 159, 1, 161, 14, 167, 106, 14, + 138, 8, 164, 16, 149, 31, 164, 37, 38, 117, + 118, 75, 76, 137, 122, 31, 161, 14, 163, 127, 128, 129, 130, 131, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 14, 163, - 70, 14, 14, 167, 31, 16, 16, 159, 16, 161, + 22, 23, 24, 25, 26, 27, 28, 29, 16, 163, + 70, 75, 76, 167, 16, 147, 148, 159, 16, 161, 16, 159, 82, 161, 162, 16, 86, 16, 74, 70, - 1, 70, 16, 16, 80, 16, 31, 59, 60, 31, - 37, 87, 88, 89, 159, 91, 161, 93, 70, 95, - 35, 31, 98, 84, 31, 31, 116, 103, 104, 105, - 31, 161, 122, 109, 110, 37, 38, 167, 31, 115, - 116, 31, 0, 1, 31, 31, 136, 137, 124, 139, + 16, 70, 101, 102, 80, 106, 107, 59, 60, 106, + 107, 87, 88, 89, 31, 91, 1, 93, 70, 95, + 111, 112, 98, 16, 16, 16, 116, 103, 104, 105, + 16, 31, 122, 109, 110, 37, 38, 16, 35, 115, + 116, 31, 0, 1, 31, 30, 136, 137, 124, 139, 140, 141, 142, 143, 144, 31, 31, 31, 31, 31, 31, 151, 152, 134, 135, 134, 135, 37, 38, 31, - 31, 31, 74, 163, 31, 1, 166, 167, 80, 35, - 149, 82, 134, 135, 35, 87, 88, 89, 35, 91, - 161, 93, 161, 95, 35, 35, 98, 149, 159, 35, - 161, 103, 104, 105, 74, 31, 37, 109, 110, 161, - 80, 38, 37, 115, 116, 116, 37, 87, 88, 89, - 57, 91, 124, 93, 70, 95, 84, 128, 98, 77, - 69, 80, 70, 103, 104, 105, 137, 82, 31, 109, - 110, 83, 85, 96, 94, 115, 116, 82, 106, 113, - 108, 85, 154, 97, 124, 113, 89, 158, 84, 117, - 118, 90, 163, 128, 122, 97, 167, 97, 92, 127, - 128, 129, 130, 131, 133, 138, 153, 100, 100, 146, - 132, 74, 70, 137, 1, 153, 114, 80, 134, 135, - 159, 146, 150, 159, 87, 88, 89, -1, 91, 1, - 93, 159, 95, 161, 162, 98, -1, 1, 1, -1, - 103, 104, 105, 74, 132, 161, 109, 110, -1, 80, + 31, 31, 74, 163, 31, 1, 166, 167, 80, 31, + 149, 31, 134, 135, 31, 87, 88, 89, 31, 91, + 161, 93, 161, 95, 31, 31, 98, 149, 37, 37, + 35, 103, 104, 105, 74, 31, 35, 109, 110, 161, + 80, 35, 35, 115, 116, 70, 35, 87, 88, 89, + 35, 91, 124, 93, 37, 95, 84, 37, 98, 38, + 57, 116, 1, 103, 104, 105, 69, 77, 31, 109, + 110, 82, 70, 85, 89, 115, 116, 96, 106, 80, + 108, 83, 154, 138, 124, 113, 90, 82, 84, 117, + 118, 114, 31, 80, 122, 85, 132, 97, 132, 127, + 128, 129, 130, 131, 92, 97, 97, 128, 163, 134, + 135, 74, 70, 94, 1, 133, 100, 80, 100, 154, + 146, 137, 150, 160, 87, 88, 89, 113, 91, 1, + 93, 159, 95, 161, 162, 98, 161, 161, 1, 153, + 103, 104, 105, 74, -1, 84, 109, 110, -1, 80, 1, -1, 115, 116, -1, -1, 87, 88, 89, 31, - 91, 124, 93, 159, 95, 161, 149, 98, 31, 149, - 149, 102, 103, 104, 105, 74, 134, 135, 109, 110, - 149, 80, 81, 149, 115, 116, 154, 158, 87, 88, - 89, 149, 91, 124, 93, 155, 95, 84, 159, 98, - 159, 163, 159, 161, 103, 104, 105, 159, 159, 159, - 109, 110, 84, 100, 101, 102, 115, 116, 82, 106, - 159, 84, 159, 159, 159, 124, 159, 159, 162, 159, - 117, 118, 159, 84, 159, 122, 159, 161, 160, 160, - 127, 128, 129, 130, 131, 70, 160, 160, 160, 100, - 101, 102, 116, 160, 162, 106, 161, 82, 161, 161, - 161, 86, 162, 161, 128, 161, 117, 118, 161, 161, - 161, 122, 159, 137, 161, 162, 127, 128, 129, 130, - 131, 161, 161, 161, 165, 162, 162, 159, 70, 161, - 163, 116, 162, 162, 158, 162, 159, 122, 161, 163, - 162, 162, 162, 167, 162, 162, 162, 162, 159, 162, + 91, 124, 93, 159, 95, 161, 138, 98, 31, 146, + -1, 102, 103, 104, 105, 74, 134, 135, 109, 110, + 149, 80, 81, 149, 115, 116, 153, 149, 87, 88, + 89, 149, 91, 124, 93, 149, 95, 84, 149, 98, + 155, 158, 161, 161, 103, 104, 105, 159, 161, 159, + 109, 110, 84, 100, 101, 102, 115, 116, 159, 106, + 159, 84, 161, 159, 159, 124, 159, 159, 162, 159, + 117, 118, 159, 84, 159, 122, 159, 159, 159, 159, + 127, 128, 129, 130, 131, 70, 159, 159, 159, 100, + 101, 102, 1, 159, 161, 106, 160, 82, 160, 160, + 160, 86, 160, 166, 161, 161, 117, 118, 161, 1, + 161, 122, 159, 161, 161, 162, 127, 128, 129, 130, + 131, 161, 31, 161, 161, 161, 165, 159, 162, 161, + 163, 116, 162, 162, 162, 162, 159, 122, 161, 163, + 162, 162, 162, 162, 162, 162, 162, 162, 159, 162, 161, 162, 137, 162, 139, 140, 141, 142, 143, 144, 162, 162, 162, 162, 162, 162, 151, 152, 162, 162, - 74, 162, 162, 165, 163, 163, 80, 163, 163, 163, + 74, 162, 162, 82, 162, 164, 80, 163, 163, 163, 163, 166, 167, 87, 88, 89, 163, 91, 163, 93, - 163, 95, 134, 135, 98, 163, 163, 163, 163, 103, - 104, 105, 163, 163, 163, 109, 110, 149, 163, 163, - 163, 115, 116, 163, 163, 163, 163, 163, 163, 161, - 124, 164, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, -1, 164, 164, 164, 164, 164, 164, + 82, 95, 163, 163, 98, 163, 163, 163, 163, 103, + 104, 105, 163, 163, 163, 109, 110, 116, 117, 118, + 163, 115, 116, 122, 163, 163, 163, 163, 163, 128, + 124, 163, 163, 163, 116, 117, 118, 163, 137, 163, + 122, 163, 163, 163, 163, 163, 128, 163, 163, 163, + 163, 163, 163, -1, 164, 137, 164, 164, 164, 158, + 164, 164, 164, 164, 163, 165, 164, 164, 167, 164, + -1, 164, 164, 164, 164, 164, 158, 164, 164, 164, + 164, 163, -1, 164, 164, 167, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - -1, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, -1, -1, - 166, -1, 167 + 164, 164, 164, 164, 164, 164, 164, -1, -1, -1, + 167 ); protected $actionBase = array( - 0, -2, 154, 542, 752, 893, 929, 580, 53, 394, - 855, 307, 307, 67, 307, 307, 307, 565, 908, 908, - 917, 908, 538, 784, 649, 649, 649, 708, 708, 708, - 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, + 0, -2, 154, 542, 752, 893, 929, 52, 374, 431, + 398, 869, 793, 235, 307, 307, 793, 307, 784, 908, + 908, 917, 908, 538, 841, 468, 468, 468, 708, 708, + 708, 708, 740, 740, 849, 849, 881, 817, 634, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, @@ -512,65 +516,67 @@ class Php7 extends \PhpParser\ParserAbstract 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 12, 323, 389, 678, 1044, 1050, 1046, 1051, - 1042, 1041, 1045, 1047, 1052, 942, 943, 753, 946, 947, - 949, 950, 1048, 873, 1043, 1049, 291, 291, 291, 291, + 1036, 1036, 1036, 1036, 348, 346, 370, 653, 1063, 1069, + 1065, 1070, 1061, 1060, 1064, 1066, 1071, 946, 947, 774, + 949, 950, 943, 952, 1067, 882, 1062, 1068, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 346, 491, 50, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 54, 54, 54, 620, 620, - 359, 190, 184, 955, 955, 955, 955, 955, 955, 955, - 955, 955, 955, 658, 47, 144, 144, 7, 7, 7, - 7, 7, 371, -25, -25, -25, -25, 709, 347, 916, - 474, 526, 375, 280, 317, 245, 340, 340, 187, 187, - 396, 396, -87, -87, 396, 396, 396, 747, 747, 747, - 747, 443, 505, -94, 308, 454, 480, 480, 480, 480, - 454, 454, 454, 454, 755, 1054, 454, 454, 454, 641, - 822, 822, 998, 442, 442, 442, 822, 499, 776, 88, - 499, 88, 37, 92, 756, 85, -54, 425, 756, 639, - 764, 189, 143, 820, 524, 820, 1040, 385, 767, 413, - 735, 688, 857, 902, 1053, 787, 940, 788, 941, 228, - 98, 685, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1055, 415, 1040, 286, 1055, 1055, 1055, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 534, 286, 483, 496, 286, 774, 415, 12, 800, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 736, - -16, 12, 323, 204, 204, 427, 168, 204, 204, 204, - 204, 12, 12, 12, 524, 773, 733, 537, 742, 377, - 773, 773, 773, 115, 124, 207, 342, 695, 754, 446, - 761, 761, 775, 957, 957, 761, 765, 761, 775, 973, - 761, 761, 957, 957, 809, 232, 625, 579, 612, 627, - 957, 475, 761, 761, 761, 761, 792, 643, 761, 433, - 281, 761, 761, 792, 758, 739, 46, 751, 957, 957, - 957, 792, 603, 751, 751, 751, 819, 821, 746, 738, - 571, 507, 645, 198, 783, 738, 738, 761, 619, 746, - 738, 746, 738, 812, 738, 738, 738, 746, 738, 765, - 585, 738, 691, 644, 188, 738, 6, 974, 975, 624, - 979, 967, 980, 1009, 981, 985, 878, 956, 992, 972, - 986, 965, 963, 750, 679, 680, 801, 797, 954, 771, - 771, 771, 951, 771, 771, 771, 771, 771, 771, 771, - 771, 679, 858, 814, 745, 777, 995, 682, 684, 743, - 872, 899, 948, 994, 1030, 987, 741, 689, 1016, 999, - 846, 875, 1000, 1001, 1017, 1031, 1032, 880, 772, 903, - 904, 859, 1003, 879, 771, 974, 985, 663, 972, 986, - 965, 963, 734, 724, 720, 723, 717, 704, 700, 703, - 737, 1033, 907, 818, 866, 1002, 952, 679, 867, 1012, - 856, 1018, 1019, 877, 778, 768, 868, 910, 1004, 1005, - 1006, 882, 1034, 884, 744, 1013, 997, 1020, 780, 911, - 1021, 1022, 1023, 1024, 887, 913, 888, 889, 823, 781, - 1010, 757, 918, 528, 769, 770, 789, 1008, 642, 993, - 900, 919, 920, 1025, 1026, 1027, 922, 923, 990, 828, - 1014, 760, 1015, 1011, 829, 830, 647, 785, 1035, 759, - 763, 779, 653, 674, 924, 925, 927, 991, 748, 762, - 841, 843, 1037, 683, 1038, 931, 677, 844, 696, 938, - 1029, 697, 699, 786, 901, 811, 782, 766, 1007, 749, - 845, 939, 847, 848, 850, 1028, 853, 0, 0, 0, + 291, 291, 291, 291, 291, 525, 191, 359, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 174, 174, + 174, 620, 620, 51, 465, 356, 955, 955, 955, 955, + 955, 955, 955, 955, 955, 955, 658, 184, 144, 144, + 7, 7, 7, 7, 7, 1031, 371, 1048, -25, -25, + -25, -25, 50, 725, 526, 449, 39, 317, 80, 474, + 474, 13, 13, 512, 512, 422, 422, 512, 512, 512, + 808, 808, 808, 808, 443, 505, 360, 308, -78, 209, + 209, 209, 209, -78, -78, -78, -78, 803, 877, -78, + -78, -78, 63, 641, 641, 822, -1, -1, -1, 641, + 253, 790, 548, 253, 384, 548, 480, 402, 764, 759, + -49, 447, 764, 639, 755, 198, 143, 825, 609, 825, + 1059, 320, 768, 426, 749, 720, 874, 904, 1072, 796, + 941, 798, 942, 106, -58, 710, 1058, 1058, 1058, 1058, + 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1073, 336, 1059, + 423, 1073, 1073, 1073, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 619, 423, 586, 616, 423, 795, + 336, 348, 814, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 750, 202, 348, 346, 78, 78, 484, + 65, 78, 78, 78, 78, 348, 348, 348, 348, 609, + 783, 766, 613, 813, 492, 783, 783, 783, 473, 135, + 378, 488, 713, 775, 67, 779, 779, 785, 969, 969, + 779, 769, 779, 785, 975, 779, 779, 969, 969, 823, + 280, 563, 478, 550, 568, 969, 377, 779, 779, 779, + 779, 746, 573, 779, 342, 314, 779, 779, 746, 744, + 760, 43, 762, 969, 969, 969, 746, 547, 762, 762, + 762, 839, 844, 794, 758, 444, 433, 588, 232, 801, + 758, 758, 779, 558, 794, 758, 794, 758, 745, 758, + 758, 758, 794, 758, 769, 502, 758, 717, 583, 224, + 758, 6, 979, 980, 624, 981, 973, 987, 1019, 991, + 992, 873, 965, 999, 974, 993, 972, 970, 773, 682, + 684, 818, 811, 963, 777, 777, 777, 956, 777, 777, + 777, 777, 777, 777, 777, 777, 682, 743, 829, 765, + 1006, 689, 691, 754, 906, 901, 1030, 1004, 1049, 994, + 828, 694, 1028, 1008, 846, 821, 1009, 1010, 1029, 1050, + 1052, 910, 782, 911, 912, 876, 1012, 883, 777, 979, + 992, 693, 974, 993, 972, 970, 748, 739, 737, 738, + 736, 735, 723, 734, 753, 1053, 954, 907, 878, 1011, + 957, 682, 879, 1023, 756, 1032, 1033, 827, 788, 778, + 880, 913, 1014, 1015, 1016, 884, 1054, 887, 830, 1024, + 951, 1035, 789, 918, 1037, 1038, 1039, 1040, 889, 919, + 892, 916, 900, 845, 776, 1020, 761, 920, 591, 787, + 791, 800, 1018, 606, 1000, 902, 921, 922, 1041, 1043, + 1044, 923, 924, 995, 847, 1026, 799, 1027, 1022, 848, + 850, 617, 797, 1055, 781, 786, 772, 621, 632, 925, + 927, 931, 998, 763, 770, 853, 855, 1056, 771, 1057, + 938, 635, 857, 718, 939, 1046, 719, 724, 637, 678, + 672, 731, 792, 903, 826, 757, 780, 1017, 724, 767, + 858, 940, 859, 860, 867, 1045, 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458, 458, 458, - 458, 458, 458, 307, 307, 307, 307, 0, 0, 307, - 0, 0, 0, 458, 458, 458, 458, 458, 458, 458, + 458, 458, 458, 307, 307, 307, 307, 307, 307, 307, + 0, 0, 307, 0, 458, 458, 458, 458, 458, 458, + 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, @@ -584,182 +590,182 @@ class Php7 extends \PhpParser\ParserAbstract 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, + 291, 291, 291, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 219, 219, 291, 291, 291, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 0, - 291, 291, 291, 291, 291, 291, 291, 291, 809, 442, - 442, 442, 442, 219, 219, 219, 219, 219, -88, -88, - 219, 809, 219, 219, 442, 442, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 0, 0, 286, - 88, 219, 765, 765, 765, 765, 219, 219, 219, 219, - 88, 88, 219, 219, 219, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 88, 0, 286, 0, 765, 765, - 219, 0, 809, 314, 219, 0, 0, 0, 0, 286, - 765, 286, 415, 761, 88, 761, 415, 415, 204, 12, - 314, 527, 527, 527, 527, 0, 0, 524, 809, 809, - 809, 809, 809, 809, 809, 809, 809, 809, 809, 765, - 0, 809, 0, 765, 765, 765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 765, 0, 0, 957, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, - 0, 0, 765, 0, 0, 0, 0, 0, 0, 0, - 0, 771, 778, 0, 778, 0, 771, 771, 771, 0, - 0, 0, 0, 785, 683 + 0, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 66, 66, 291, + 291, 291, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 0, 291, 291, 291, 291, 291, 291, 291, + 291, 66, 823, 66, -1, -1, -1, -1, 66, 66, + 66, -88, -88, 66, 384, 66, 66, -1, -1, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 0, 0, 423, 548, 66, 769, 769, 769, 769, 66, + 66, 66, 66, 548, 548, 66, 66, 66, 0, 0, + 0, 0, 0, 0, 0, 0, 423, 548, 0, 423, + 0, 0, 769, 769, 66, 384, 823, 643, 66, 0, + 0, 0, 0, 423, 769, 423, 336, 779, 548, 779, + 336, 336, 78, 348, 643, 611, 611, 611, 611, 0, + 0, 609, 823, 823, 823, 823, 823, 823, 823, 823, + 823, 823, 823, 769, 0, 823, 0, 769, 769, 769, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 769, 0, 0, 969, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, + 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 777, 788, 0, 788, + 0, 777, 777, 777, 0, 0, 0, 0, 797, 771 ); protected $actionDefault = array( 3,32767, 103,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 101,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 593, 593, 593, - 593,32767,32767, 253, 103,32767,32767, 467, 385, 385, - 385,32767,32767, 537, 537, 537, 537, 537, 537,32767, - 32767,32767,32767,32767,32767, 467,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767, 101,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 596, 596, + 596, 596,32767,32767, 254, 103,32767,32767, 469, 387, + 387, 387,32767,32767, 540, 540, 540, 540, 540, 540, + 32767,32767,32767,32767,32767,32767, 469,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 101,32767, - 32767,32767, 37, 7, 8, 10, 11, 50, 17, 323, - 32767,32767,32767,32767, 103,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 101, + 32767,32767,32767, 37, 7, 8, 10, 11, 50, 17, + 324,32767,32767,32767,32767, 103,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 586,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 589,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 471, 450, 451, 453, - 454, 384, 538, 592, 326, 589, 383, 146, 338, 328, - 241, 329, 257, 472, 258, 473, 476, 477, 214, 286, - 380, 150, 414, 468, 416, 466, 470, 415, 390, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 388, 389, 469, 447, 446, 445,32767,32767, - 412, 413, 417,32767,32767,32767,32767,32767,32767,32767, - 32767, 103,32767, 387, 420, 418, 419, 436, 437, 434, - 435, 438,32767, 439, 440, 441, 442,32767, 315,32767, - 32767,32767, 364, 362, 315, 112,32767,32767, 427, 428, + 32767,32767,32767,32767,32767,32767,32767,32767, 473, 452, + 453, 455, 456, 386, 541, 595, 327, 592, 385, 146, + 339, 329, 242, 330, 258, 474, 259, 475, 478, 479, + 215, 287, 382, 150, 151, 416, 470, 418, 468, 472, + 417, 392, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 390, 391, 471, 449, 448, + 447,32767,32767, 414, 415, 419,32767,32767,32767,32767, + 32767,32767,32767,32767, 103,32767, 389, 422, 420, 421, + 438, 439, 436, 437, 440,32767,32767,32767, 441, 442, + 443, 444, 316,32767,32767, 366, 364, 316, 112,32767, + 32767, 429, 430,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767, 534, 446,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 103, + 32767, 101, 536, 411, 413, 503, 424, 425, 423, 393, + 32767, 510,32767, 103,32767, 512,32767,32767,32767,32767, + 32767,32767,32767, 535,32767, 542, 542,32767, 496, 101, + 195,32767,32767,32767, 195, 195,32767,32767,32767,32767, + 32767,32767,32767,32767, 603, 496, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111,32767, 195, 111, + 32767,32767,32767, 101, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 190,32767, 268, 270, 103, 557, + 195,32767, 515,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767, 508,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 496, + 434, 139,32767, 139, 542, 426, 427, 428, 498, 542, + 542, 542, 312, 289,32767,32767,32767,32767, 513, 513, + 101, 101, 101, 101, 508,32767,32767,32767,32767, 112, + 100, 100, 100, 100, 100, 104, 102,32767,32767,32767, + 32767, 223, 100,32767, 102, 102,32767,32767, 223, 225, + 212, 102, 227,32767, 561, 562, 223, 102, 227, 227, + 227, 247, 247, 485, 318, 102, 100, 102, 102, 197, + 318, 318,32767, 102, 485, 318, 485, 318, 199, 318, + 318, 318, 485, 318,32767, 102, 318, 214, 100, 100, + 318,32767,32767,32767, 498,32767,32767,32767,32767,32767, + 32767,32767, 222,32767,32767,32767,32767,32767,32767,32767, + 529,32767, 546, 559, 432, 433, 435, 544, 457, 458, + 459, 460, 461, 462, 463, 465, 591,32767, 502,32767, + 32767,32767, 338, 601,32767, 601,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 531, 444,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 103,32767, 101, 533, - 409, 411, 501, 422, 423, 421, 391,32767, 508,32767, - 103, 510,32767,32767,32767,32767,32767,32767,32767, 532, - 32767, 539, 539,32767, 494, 101, 194,32767,32767,32767, - 194, 194,32767,32767,32767,32767,32767,32767,32767,32767, - 600, 494, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111,32767, 194, 111,32767,32767,32767, 101, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 189,32767, 267, 269, 103, 554, 194,32767, 513,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767, 506, + 32767, 602,32767, 542,32767,32767,32767,32767, 431, 9, + 76, 491, 43, 44, 52, 58, 519, 520, 521, 522, + 516, 517, 523, 518,32767,32767, 524, 567,32767,32767, + 543, 594,32767,32767,32767,32767,32767,32767, 139,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767, 494, 432, 139,32767, 139, 539, - 424, 425, 426, 496, 539, 539, 539, 311, 288,32767, - 32767,32767,32767, 511, 511, 101, 101, 101, 101, 506, - 32767,32767,32767,32767, 112, 100, 100, 100, 100, 100, - 104, 102,32767,32767,32767,32767, 222, 100,32767, 102, - 102,32767,32767, 222, 224, 211, 102, 226,32767, 558, - 559, 222, 102, 226, 226, 226, 246, 246, 483, 317, - 102, 100, 102, 102, 196, 317, 317,32767, 102, 483, - 317, 483, 317, 198, 317, 317, 317, 483, 317,32767, - 102, 317, 213, 100, 100, 317,32767,32767,32767, 496, - 32767,32767,32767,32767,32767,32767,32767, 221,32767,32767, - 32767,32767,32767,32767,32767, 526,32767, 543, 556, 430, - 431, 433, 541, 455, 456, 457, 458, 459, 460, 461, - 463, 588,32767, 500,32767,32767,32767,32767, 337, 598, - 32767, 598,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 599,32767, 539, - 32767,32767,32767,32767, 429, 9, 76, 489, 43, 44, - 52, 58, 517, 518, 519, 520, 514, 515, 521, 516, - 32767,32767, 522, 564,32767,32767, 540, 591,32767,32767, - 32767,32767,32767,32767, 139,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767, 526,32767, 137,32767, + 529,32767, 137,32767,32767,32767,32767,32767,32767,32767, + 32767, 525,32767,32767,32767, 542,32767,32767,32767,32767, + 314, 311,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 542,32767, + 32767,32767,32767,32767, 291,32767, 308,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 539,32767,32767,32767,32767, 313, 310,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767, 539,32767,32767,32767,32767,32767, 290, - 32767, 307,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 285,32767, - 32767, 379,32767,32767,32767,32767, 358,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767, 152, 152, 3, - 3, 340, 152, 152, 152, 340, 340, 152, 340, 340, - 340, 152, 152, 152, 152, 152, 152, 279, 184, 261, - 264, 246, 246, 152, 350, 152 + 32767,32767,32767, 286,32767,32767, 381, 498, 294, 296, + 297,32767,32767,32767,32767, 360,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 153, 153, 3, + 3, 341, 153, 153, 153, 341, 341, 153, 341, 341, + 341, 153, 153, 153, 153, 153, 153, 280, 185, 262, + 265, 247, 247, 153, 352, 153 ); protected $goto = array( - 194, 194, 685, 425, 653, 346, 614, 650, 419, 310, - 311, 331, 569, 316, 424, 332, 426, 630, 1200, 930, - 693, 1051, 1201, 1204, 931, 1205, 165, 165, 165, 165, - 218, 195, 191, 191, 175, 177, 213, 191, 191, 191, - 191, 191, 192, 192, 192, 192, 192, 192, 186, 187, - 188, 189, 190, 215, 213, 216, 529, 530, 415, 531, - 533, 534, 535, 536, 537, 538, 539, 540, 1120, 166, - 167, 168, 193, 169, 170, 171, 164, 172, 173, 174, - 176, 212, 214, 217, 235, 240, 241, 242, 254, 255, - 256, 257, 258, 259, 260, 261, 263, 264, 265, 266, - 278, 279, 313, 314, 315, 420, 421, 422, 574, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 178, 234, 179, 196, 197, 198, - 236, 186, 187, 188, 189, 190, 215, 1120, 199, 180, - 181, 182, 200, 196, 183, 237, 201, 199, 163, 202, - 203, 184, 204, 205, 206, 185, 207, 208, 209, 210, - 211, 275, 275, 275, 275, 843, 593, 646, 647, 560, - 664, 665, 666, 720, 629, 631, 840, 418, 651, 604, - 841, 350, 675, 679, 996, 683, 691, 992, 616, 616, - 817, 350, 350, 1252, 1252, 1252, 1252, 1252, 1252, 1252, - 1252, 1252, 1252, 1092, 1093, 350, 350, 874, 350, 848, - 1337, 896, 891, 892, 905, 849, 893, 846, 894, 895, - 847, 548, 900, 899, 901, 350, 391, 394, 554, 594, - 598, 1270, 1270, 1072, 1068, 1069, 1270, 1270, 1270, 1270, - 1270, 1270, 1270, 1270, 1270, 1270, 1268, 1268, 815, 347, - 348, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, - 1268, 1221, 1020, 1221, 1020, 1221, 836, 5, 1020, 6, - 1020, 1020, 1281, 961, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 349, 349, 349, 349, 1221, - 460, 460, 566, 678, 1221, 1221, 1221, 1221, 344, 460, - 1221, 1221, 1221, 1302, 1302, 1302, 1302, 602, 617, 620, - 621, 622, 623, 643, 644, 645, 695, 836, 912, 553, - 546, 1310, 913, 548, 532, 532, 821, 856, 982, 532, - 532, 532, 532, 532, 532, 532, 532, 532, 532, 543, - 473, 543, 868, 543, 928, 855, 928, 389, 475, 337, - 546, 553, 562, 563, 339, 572, 595, 609, 610, 1320, - 1320, 249, 249, 1026, 1025, 15, 821, 450, 821, 494, - 565, 495, 955, 955, 955, 955, 1320, 501, 450, 949, - 956, 839, 652, 1321, 1321, 1169, 1214, 246, 246, 246, - 246, 248, 250, 1323, 985, 959, 959, 957, 959, 719, - 1321, 545, 994, 989, 470, 1295, 1296, 953, 405, 692, - 917, 1108, 432, 541, 541, 541, 541, 612, 597, 452, - 444, 1029, 1030, 1001, 658, 444, 1292, 444, 1292, 674, - 1292, 860, 833, 656, 980, 836, 861, 547, 557, 854, - 321, 305, 547, 333, 557, 1297, 1298, 392, 456, 570, - 607, 1211, 944, 398, 858, 1304, 1304, 1304, 1304, 463, - 573, 464, 465, 608, 1004, 866, 403, 404, 1328, 1329, - 1057, 662, 1212, 663, 471, 407, 408, 409, 723, 676, - 870, 1288, 410, 624, 626, 627, 342, 427, 1216, 869, - 857, 1056, 1060, 427, 864, 1061, 1103, 966, 0, 0, - 964, 1027, 1027, 0, 0, 0, 657, 1038, 1034, 1035, - 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, - 444, 0, 1059, 444, 954, 0, 1290, 1290, 1059, 592, - 1085, 0, 696, 682, 682, 0, 502, 688, 1083, 0, - 0, 0, 1217, 1218, 272, 428, 1101, 873, 0, 544, - 831, 544, 0, 0, 0, 673, 938, 0, 0, 1015, - 1031, 1032, 0, 0, 0, 0, 0, 0, 1219, 1278, - 1279, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, + 196, 196, 1031, 703, 694, 430, 658, 1062, 1334, 1334, + 424, 313, 314, 335, 573, 319, 429, 336, 431, 635, + 651, 652, 850, 669, 670, 671, 1334, 167, 167, 167, + 167, 221, 197, 193, 193, 177, 179, 216, 193, 193, + 193, 193, 193, 194, 194, 194, 194, 194, 194, 188, + 189, 190, 191, 192, 218, 216, 219, 534, 535, 420, + 536, 538, 539, 540, 541, 542, 543, 544, 545, 1132, + 168, 169, 170, 195, 171, 172, 173, 166, 174, 175, + 176, 178, 215, 217, 220, 238, 243, 244, 245, 257, + 258, 259, 260, 261, 262, 263, 264, 268, 269, 270, + 271, 281, 282, 316, 317, 318, 425, 426, 427, 578, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 180, 237, 181, 198, 199, + 200, 239, 188, 189, 190, 191, 192, 218, 1132, 201, + 182, 183, 184, 202, 198, 185, 240, 203, 201, 165, + 204, 205, 186, 206, 207, 208, 187, 209, 210, 211, + 212, 213, 214, 853, 851, 278, 278, 278, 278, 418, + 620, 620, 350, 570, 597, 1265, 1265, 1265, 1265, 1265, + 1265, 1265, 1265, 1265, 1265, 1283, 1283, 831, 618, 655, + 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, + 353, 353, 353, 353, 866, 557, 550, 858, 825, 907, + 902, 903, 916, 859, 904, 856, 905, 906, 857, 878, + 457, 910, 865, 884, 546, 546, 546, 546, 831, 601, + 831, 1084, 1079, 1080, 1081, 341, 550, 557, 566, 567, + 343, 576, 599, 613, 614, 407, 408, 972, 465, 465, + 667, 15, 668, 1323, 411, 412, 413, 465, 681, 348, + 1233, 414, 1233, 478, 569, 346, 439, 1031, 1031, 1233, + 993, 480, 1031, 393, 1031, 1031, 1104, 1105, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1315, + 1315, 1315, 1315, 1233, 657, 1333, 1333, 1055, 1233, 1233, + 1233, 1233, 1037, 1036, 1233, 1233, 1233, 1034, 1034, 1181, + 354, 678, 949, 1333, 437, 1026, 1042, 1043, 337, 691, + 354, 354, 827, 923, 691, 1040, 1041, 924, 691, 663, + 1336, 939, 871, 939, 354, 354, 1281, 1281, 354, 679, + 1350, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 552, 537, 537, 911, 354, 912, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 548, 564, 548, + 574, 611, 730, 634, 636, 849, 548, 656, 475, 1308, + 1309, 680, 684, 1007, 692, 701, 1003, 252, 252, 996, + 970, 970, 968, 970, 729, 843, 549, 1005, 1000, 423, + 455, 608, 1294, 846, 955, 966, 966, 966, 966, 325, + 308, 455, 960, 967, 249, 249, 249, 249, 251, 253, + 402, 351, 352, 683, 868, 551, 561, 449, 449, 449, + 551, 1305, 561, 1305, 612, 396, 461, 1010, 1010, 1224, + 1305, 395, 398, 558, 598, 602, 1015, 468, 577, 469, + 470, 1310, 1311, 876, 552, 846, 1341, 1342, 964, 409, + 702, 733, 324, 275, 324, 1317, 1317, 1317, 1317, 606, + 621, 624, 625, 626, 627, 648, 649, 650, 705, 1068, + 596, 1097, 874, 706, 476, 1228, 507, 697, 880, 1095, + 1115, 432, 1301, 628, 630, 632, 432, 879, 867, 1067, + 1071, 5, 1072, 6, 1038, 1038, 977, 0, 975, 662, + 1049, 1045, 1046, 0, 0, 0, 0, 1226, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 928, + 1120, 449, 965, 1070, 0, 0, 616, 1303, 1303, 1070, + 1229, 1230, 1012, 499, 0, 500, 0, 0, 841, 0, + 870, 506, 661, 991, 1113, 883, 1212, 941, 864, 0, + 1213, 1216, 942, 1217, 0, 0, 1231, 1291, 1292, 0, + 1223, 0, 0, 0, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 999, 999 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255 ); protected $gotoCheck = array( - 42, 42, 72, 65, 65, 96, 55, 55, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 78, 78, - 9, 126, 78, 78, 78, 78, 42, 42, 42, 42, + 42, 42, 72, 9, 72, 65, 65, 126, 181, 181, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, + 85, 85, 26, 85, 85, 85, 181, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, @@ -773,97 +779,97 @@ class Php7 extends \PhpParser\ParserAbstract 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 23, 23, 23, 23, 15, 129, 85, 85, 48, - 85, 85, 85, 48, 48, 48, 26, 13, 48, 13, - 27, 14, 48, 48, 48, 48, 48, 48, 107, 107, - 7, 14, 14, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 143, 143, 14, 14, 45, 14, 15, - 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 14, 64, 15, 64, 14, 58, 58, 58, 58, - 58, 168, 168, 15, 15, 15, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 169, 169, 6, 96, - 96, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 72, 72, 72, 72, 72, 22, 46, 72, 46, - 72, 72, 14, 49, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 24, 24, 24, 24, 72, - 148, 148, 170, 14, 72, 72, 72, 72, 177, 148, - 72, 72, 72, 9, 9, 9, 9, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 22, 72, 75, - 75, 179, 72, 14, 171, 171, 12, 35, 102, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 19, - 83, 19, 35, 19, 9, 35, 9, 61, 83, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 180, - 180, 5, 5, 117, 117, 75, 12, 19, 12, 154, - 103, 154, 19, 19, 19, 19, 180, 154, 19, 19, - 19, 25, 63, 181, 181, 150, 14, 5, 5, 5, - 5, 5, 5, 180, 25, 25, 25, 25, 25, 25, - 181, 25, 25, 25, 174, 174, 174, 92, 92, 92, - 17, 17, 112, 106, 106, 106, 106, 17, 106, 82, - 23, 118, 118, 17, 119, 23, 129, 23, 129, 115, - 129, 17, 18, 17, 17, 22, 39, 9, 9, 17, - 167, 167, 9, 29, 9, 176, 176, 9, 9, 2, - 2, 17, 91, 28, 37, 129, 129, 129, 129, 9, - 9, 9, 9, 79, 109, 9, 81, 81, 9, 9, - 128, 81, 159, 81, 156, 81, 81, 81, 98, 81, - 41, 129, 81, 84, 84, 84, 81, 116, 20, 16, - 16, 16, 16, 116, 9, 131, 146, 95, -1, -1, - 16, 116, 116, -1, -1, -1, 116, 116, 116, 116, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, -1, 129, 23, 16, -1, 129, 129, 129, 8, - 8, -1, 8, 8, 8, -1, 8, 8, 8, -1, - -1, -1, 20, 20, 24, 88, 16, 16, -1, 24, - 20, 24, -1, -1, -1, 88, 88, -1, -1, 88, - 88, 88, -1, -1, -1, -1, -1, -1, 20, 20, - 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 5, 5, + 42, 42, 42, 15, 27, 23, 23, 23, 23, 43, + 107, 107, 96, 170, 129, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 168, 168, 12, 55, 55, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 24, 24, 24, 24, 35, 75, 75, 15, 6, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, + 82, 15, 35, 45, 106, 106, 106, 106, 12, 106, + 12, 15, 15, 15, 15, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 81, 81, 49, 148, 148, + 81, 75, 81, 179, 81, 81, 81, 148, 81, 177, + 72, 81, 72, 83, 103, 81, 82, 72, 72, 72, + 102, 83, 72, 61, 72, 72, 143, 143, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 9, + 9, 9, 9, 72, 63, 180, 180, 113, 72, 72, + 72, 72, 117, 117, 72, 72, 72, 88, 88, 150, + 14, 88, 88, 180, 112, 88, 88, 88, 29, 7, + 14, 14, 7, 72, 7, 118, 118, 72, 7, 119, + 180, 9, 39, 9, 14, 14, 169, 169, 14, 115, + 14, 169, 169, 169, 169, 169, 169, 169, 169, 169, + 169, 14, 171, 171, 64, 14, 64, 171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 19, 48, 19, + 2, 2, 48, 48, 48, 25, 19, 48, 174, 174, + 174, 48, 48, 48, 48, 48, 48, 5, 5, 25, + 25, 25, 25, 25, 25, 18, 25, 25, 25, 13, + 19, 13, 14, 22, 91, 19, 19, 19, 19, 167, + 167, 19, 19, 19, 5, 5, 5, 5, 5, 5, + 28, 96, 96, 14, 37, 9, 9, 23, 23, 23, + 9, 129, 9, 129, 79, 9, 9, 106, 106, 159, + 129, 58, 58, 58, 58, 58, 109, 9, 9, 9, + 9, 176, 176, 9, 14, 22, 9, 9, 92, 92, + 92, 98, 24, 24, 24, 129, 129, 129, 129, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 128, + 8, 8, 9, 8, 156, 20, 8, 8, 41, 8, + 146, 116, 129, 84, 84, 84, 116, 16, 16, 16, + 16, 46, 131, 46, 116, 116, 95, -1, 16, 116, + 116, 116, 116, -1, -1, -1, -1, 14, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 17, + 17, 23, 16, 129, -1, -1, 17, 129, 129, 129, + 20, 20, 17, 154, -1, 154, -1, -1, 20, -1, + 17, 154, 17, 17, 16, 16, 78, 78, 17, -1, + 78, 78, 78, 78, -1, -1, 20, 20, 20, -1, + 17, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 106, 106 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 5, 5 ); protected $gotoBase = array( - 0, 0, -250, 0, 0, 360, 235, 181, 522, 7, - 0, 0, 33, -156, -113, -178, 43, -49, 126, 72, - 100, 0, -9, 158, 282, 377, 172, 176, 120, 150, - 0, 0, 0, 0, 0, -39, 0, 119, 0, 116, - 0, 45, -1, 0, 0, 195, -456, 0, -529, 250, - 0, 0, 0, 0, 0, -33, 0, 0, 182, 0, - 0, 306, 0, 143, 203, -235, 0, 0, 0, 0, - 0, 0, -6, 0, 0, -21, 0, 0, -385, 124, - -46, -19, 144, -123, 10, -538, 0, 0, 275, 0, - 0, 127, 106, 0, 0, 60, -472, 0, 76, 0, - 0, 0, 294, 328, 0, 0, 386, -50, 0, 99, - 0, 0, 138, 0, 0, 149, 219, 87, 139, 137, - 0, 0, 0, 0, 0, 0, 19, 0, 101, 159, - 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -69, 0, 0, 58, 0, 257, 0, - 114, 0, 0, 0, -120, 0, 40, 0, 0, 108, - 0, 0, 0, 0, 0, 0, 0, 122, -7, 8, - 264, 86, 0, 0, 107, 0, 78, 269, 0, 291, - 55, 79, 0, 0 + 0, 0, -339, 0, 0, 386, 195, 312, 472, -10, + 0, 0, -109, 62, 13, -184, 46, 65, 86, 102, + 93, 0, 125, 162, 197, 371, 18, 160, 83, 22, + 0, 0, 0, 0, 0, -166, 0, 85, 0, 9, + 0, 48, -1, 157, 0, 207, -232, 0, -340, 223, + 0, 0, 0, 0, 0, 148, 0, 0, 396, 0, + 0, 231, 0, 52, 334, -236, 0, 0, 0, 0, + 0, 0, -5, 0, 0, -139, 0, 0, 149, 91, + 112, -245, -58, -205, 15, -695, 0, 0, 28, 0, + 0, 75, 154, 0, 0, 64, -310, 0, 55, 0, + 0, 0, 235, 221, 0, 0, 196, -71, 0, 77, + 0, 0, 37, 24, 0, 56, 219, 23, 40, 39, + 0, 0, 0, 0, 0, 0, 5, 0, 106, 166, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 47, 0, 214, 0, + 35, 0, 0, 0, 49, 0, 45, 0, 0, 71, + 0, 0, 0, 0, 0, 0, 0, 88, -56, 95, + 144, 111, 0, 0, 78, 0, 80, 229, 0, 222, + -12, -299, 0, 0 ); protected $gotoDefault = array( - -32768, 506, 727, 4, 728, 921, 804, 813, 590, 523, - 694, 343, 618, 416, 1286, 898, 1107, 571, 832, 1230, - 1238, 451, 835, 326, 717, 880, 881, 882, 395, 381, - 387, 393, 641, 619, 488, 867, 447, 859, 480, 862, - 446, 871, 162, 413, 504, 875, 3, 877, 550, 908, - 382, 885, 383, 669, 887, 556, 889, 890, 390, 396, - 397, 1112, 564, 615, 902, 253, 558, 903, 380, 904, - 911, 385, 388, 680, 459, 499, 493, 406, 1087, 559, - 601, 638, 441, 467, 613, 625, 611, 474, 1023, 411, - 325, 943, 951, 481, 457, 965, 345, 973, 725, 1119, - 632, 483, 981, 633, 988, 991, 524, 525, 472, 1003, - 268, 1006, 484, 1044, 659, 1017, 1018, 660, 634, 1040, - 635, 661, 636, 1042, 466, 591, 1050, 448, 1058, 1274, - 449, 1062, 262, 1065, 274, 412, 429, 1070, 1071, 8, - 1077, 686, 687, 10, 273, 503, 1102, 681, 445, 1118, - 433, 1188, 1190, 552, 485, 1208, 1207, 672, 500, 1213, - 442, 1277, 443, 526, 468, 312, 527, 304, 329, 309, - 542, 291, 330, 528, 469, 1283, 1291, 327, 30, 1311, - 1322, 338, 568, 606 + -32768, 511, 737, 4, 738, 932, 814, 823, 594, 528, + 704, 347, 622, 421, 1299, 909, 1119, 575, 842, 1242, + 1250, 456, 845, 330, 727, 891, 892, 893, 399, 385, + 391, 397, 646, 623, 493, 877, 452, 869, 485, 872, + 451, 881, 164, 417, 509, 885, 3, 888, 554, 919, + 386, 896, 387, 674, 898, 560, 900, 901, 394, 400, + 401, 1124, 568, 619, 913, 256, 562, 914, 384, 915, + 922, 389, 392, 685, 464, 504, 498, 410, 1099, 563, + 605, 643, 446, 472, 617, 629, 615, 479, 433, 415, + 329, 954, 962, 486, 462, 976, 349, 984, 735, 1131, + 637, 488, 992, 638, 999, 1002, 529, 530, 477, 1014, + 272, 1017, 489, 12, 664, 1028, 1029, 665, 639, 1051, + 640, 666, 641, 1053, 471, 595, 1061, 453, 1069, 1287, + 454, 1073, 266, 1076, 277, 416, 434, 1082, 1083, 9, + 1089, 695, 696, 11, 276, 508, 1114, 686, 450, 1130, + 438, 1200, 1202, 556, 490, 1220, 1219, 677, 505, 1225, + 447, 1290, 448, 531, 473, 315, 532, 307, 333, 312, + 547, 294, 334, 533, 474, 1296, 1304, 331, 31, 1324, + 1335, 342, 572, 610 ); protected $ruleToNonTerminal = array( @@ -882,30 +888,30 @@ class Php7 extends \PhpParser\ParserAbstract 4, 4, 4, 4, 29, 29, 30, 30, 32, 34, 34, 28, 36, 36, 33, 38, 38, 35, 35, 37, 37, 39, 39, 31, 40, 40, 41, 43, 44, 44, - 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, + 45, 45, 46, 46, 48, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 25, 25, 68, 68, 71, 71, 70, 69, - 69, 62, 74, 74, 75, 75, 76, 76, 77, 77, - 78, 78, 79, 79, 26, 26, 27, 27, 27, 27, - 27, 87, 87, 89, 89, 82, 82, 90, 90, 91, - 91, 91, 83, 83, 86, 86, 84, 84, 92, 93, - 93, 56, 56, 64, 64, 67, 67, 67, 66, 94, - 94, 95, 57, 57, 57, 57, 96, 96, 97, 97, - 98, 98, 99, 100, 100, 101, 101, 102, 102, 54, - 54, 50, 50, 104, 52, 52, 105, 51, 51, 53, - 53, 63, 63, 63, 63, 80, 80, 108, 108, 110, - 110, 111, 111, 111, 111, 109, 109, 109, 113, 113, - 113, 113, 88, 88, 116, 116, 116, 117, 117, 114, - 114, 118, 118, 120, 120, 121, 121, 115, 122, 122, - 119, 123, 123, 123, 123, 112, 112, 81, 81, 81, - 20, 20, 20, 125, 124, 124, 126, 126, 126, 126, - 59, 127, 127, 128, 60, 130, 130, 131, 131, 132, - 132, 85, 133, 133, 133, 133, 133, 133, 138, 138, - 139, 139, 140, 140, 140, 140, 140, 141, 142, 142, - 137, 137, 134, 134, 136, 136, 144, 144, 143, 143, - 143, 143, 143, 143, 143, 135, 145, 145, 147, 146, - 146, 61, 103, 148, 148, 55, 55, 42, 42, 42, + 49, 49, 49, 25, 25, 68, 68, 71, 71, 70, + 69, 69, 62, 74, 74, 75, 75, 76, 76, 77, + 77, 78, 78, 79, 79, 26, 26, 27, 27, 27, + 27, 27, 87, 87, 89, 89, 82, 82, 90, 90, + 91, 91, 91, 83, 83, 86, 86, 84, 84, 92, + 93, 93, 56, 56, 64, 64, 67, 67, 67, 66, + 94, 94, 95, 57, 57, 57, 57, 96, 96, 97, + 97, 98, 98, 99, 100, 100, 101, 101, 102, 102, + 54, 54, 50, 50, 104, 52, 52, 105, 51, 51, + 53, 53, 63, 63, 63, 63, 80, 80, 108, 108, + 110, 110, 111, 111, 111, 111, 109, 109, 109, 113, + 113, 113, 113, 88, 88, 116, 116, 116, 117, 117, + 114, 114, 118, 118, 120, 120, 121, 121, 115, 122, + 122, 119, 123, 123, 123, 123, 112, 112, 81, 81, + 81, 20, 20, 20, 125, 124, 124, 126, 126, 126, + 126, 59, 127, 127, 128, 60, 130, 130, 131, 131, + 132, 132, 85, 133, 133, 133, 133, 133, 133, 133, + 138, 138, 139, 139, 140, 140, 140, 140, 140, 141, + 142, 142, 137, 137, 134, 134, 136, 136, 144, 144, + 143, 143, 143, 143, 143, 143, 143, 135, 145, 145, + 147, 146, 146, 61, 103, 148, 148, 55, 55, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, @@ -915,20 +921,20 @@ class Php7 extends \PhpParser\ParserAbstract 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 155, 149, 149, 154, 154, 157, 158, 158, 159, 160, - 161, 161, 161, 161, 19, 19, 72, 72, 72, 72, - 150, 150, 150, 150, 163, 163, 151, 151, 153, 153, - 153, 156, 156, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 169, 169, 107, 171, 171, 171, 171, 152, - 152, 152, 152, 152, 152, 152, 152, 58, 58, 166, - 166, 166, 166, 172, 172, 162, 162, 162, 173, 173, - 173, 173, 173, 173, 73, 73, 65, 65, 65, 65, - 129, 129, 129, 129, 176, 175, 165, 165, 165, 165, - 165, 165, 165, 164, 164, 164, 174, 174, 174, 174, - 106, 170, 178, 178, 177, 177, 179, 179, 179, 179, - 179, 179, 179, 179, 167, 167, 167, 167, 181, 182, - 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, - 183, 183 + 42, 42, 155, 149, 149, 154, 154, 157, 158, 158, + 159, 160, 161, 161, 161, 161, 19, 19, 72, 72, + 72, 72, 150, 150, 150, 150, 163, 163, 151, 151, + 153, 153, 153, 156, 156, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 169, 169, 169, 107, 171, 171, + 171, 171, 152, 152, 152, 152, 152, 152, 152, 152, + 58, 58, 166, 166, 166, 166, 172, 172, 162, 162, + 162, 173, 173, 173, 173, 173, 173, 73, 73, 65, + 65, 65, 65, 129, 129, 129, 129, 176, 175, 165, + 165, 165, 165, 165, 165, 165, 164, 164, 164, 174, + 174, 174, 174, 106, 170, 178, 178, 177, 177, 179, + 179, 179, 179, 179, 179, 179, 179, 167, 167, 167, + 167, 181, 182, 180, 180, 180, 180, 180, 180, 180, + 180, 183, 183, 183, 183 ); protected $ruleToLength = array( @@ -947,53 +953,53 @@ class Php7 extends \PhpParser\ParserAbstract 3, 4, 2, 3, 1, 1, 7, 6, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 3, 1, 3, 1, 2, 2, 3, 1, 3, 2, 3, 1, - 3, 2, 0, 1, 1, 1, 1, 1, 3, 7, - 10, 5, 7, 9, 5, 3, 3, 3, 3, 3, - 3, 1, 2, 5, 7, 9, 6, 5, 6, 3, - 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, - 4, 2, 1, 3, 0, 1, 0, 1, 0, 1, - 3, 1, 1, 1, 8, 9, 7, 8, 7, 6, - 8, 0, 2, 0, 2, 1, 2, 1, 2, 1, - 1, 1, 0, 2, 0, 2, 0, 2, 2, 1, - 3, 1, 4, 1, 4, 1, 1, 4, 2, 1, - 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, - 1, 1, 7, 0, 2, 1, 3, 3, 4, 1, - 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, - 3, 1, 2, 1, 1, 2, 0, 1, 3, 0, - 2, 1, 1, 1, 1, 6, 8, 6, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, - 1, 1, 2, 1, 1, 0, 1, 0, 2, 2, - 2, 4, 3, 1, 1, 3, 1, 2, 2, 3, - 2, 3, 1, 1, 2, 3, 1, 1, 3, 2, - 0, 1, 5, 5, 10, 3, 5, 1, 1, 3, - 0, 2, 4, 5, 4, 4, 4, 3, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 3, 1, 1, - 3, 2, 2, 3, 1, 0, 1, 1, 3, 3, - 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 0, 1, 1, 1, 1, 1, 3, + 7, 10, 5, 7, 9, 5, 3, 3, 3, 3, + 3, 3, 1, 2, 5, 7, 9, 6, 5, 6, + 3, 2, 1, 1, 1, 0, 2, 1, 3, 8, + 0, 4, 2, 1, 3, 0, 1, 0, 1, 0, + 1, 3, 1, 1, 1, 8, 9, 7, 8, 7, + 6, 8, 0, 2, 0, 2, 1, 2, 1, 2, + 1, 1, 1, 0, 2, 0, 2, 0, 2, 2, + 1, 3, 1, 4, 1, 4, 1, 1, 4, 2, + 1, 3, 3, 3, 4, 4, 5, 0, 2, 4, + 3, 1, 1, 7, 0, 2, 1, 3, 3, 4, + 1, 4, 0, 2, 5, 0, 2, 6, 0, 2, + 0, 3, 1, 2, 1, 1, 2, 0, 1, 3, + 0, 2, 1, 1, 1, 1, 6, 8, 6, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, + 3, 1, 1, 2, 1, 1, 0, 1, 0, 2, + 2, 2, 4, 3, 1, 1, 3, 1, 2, 2, + 3, 2, 3, 1, 1, 2, 3, 1, 1, 3, + 2, 0, 1, 5, 5, 6, 10, 3, 5, 1, + 1, 3, 0, 2, 4, 5, 4, 4, 4, 3, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, + 1, 1, 3, 2, 2, 3, 1, 0, 1, 1, + 3, 3, 3, 4, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 4, 3, 4, 4, - 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 3, 2, 1, 2, 4, - 2, 2, 8, 9, 8, 9, 9, 10, 9, 10, - 8, 3, 2, 0, 4, 2, 1, 3, 2, 1, - 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 0, 3, 0, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 4, 1, 1, 3, 1, - 1, 1, 1, 1, 3, 2, 3, 0, 1, 1, - 3, 1, 1, 1, 1, 1, 3, 1, 1, 4, - 4, 1, 4, 4, 0, 1, 1, 1, 3, 3, - 1, 4, 2, 2, 1, 3, 1, 4, 4, 3, - 3, 3, 3, 1, 3, 1, 1, 3, 1, 1, - 4, 1, 1, 1, 3, 1, 1, 2, 1, 3, - 4, 3, 2, 0, 2, 2, 1, 2, 1, 1, - 1, 4, 3, 3, 3, 3, 6, 3, 1, 1, - 2, 1 + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 5, 4, 3, + 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 3, 2, 1, + 2, 4, 2, 2, 8, 9, 8, 9, 9, 10, + 9, 10, 8, 3, 2, 0, 4, 2, 1, 3, + 2, 1, 2, 2, 2, 4, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 1, 1, 0, 3, + 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 5, 3, 3, 4, 1, + 1, 3, 1, 1, 1, 1, 1, 3, 2, 3, + 0, 1, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 1, 4, 4, 1, 4, 4, 0, 1, 1, + 1, 3, 3, 1, 4, 2, 2, 1, 3, 1, + 4, 4, 3, 3, 3, 3, 1, 3, 1, 1, + 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, + 2, 1, 3, 4, 3, 2, 0, 2, 2, 1, + 2, 1, 1, 1, 4, 3, 3, 3, 3, 6, + 3, 1, 1, 2, 1 ); protected function initReduceCallbacks() { @@ -1456,20 +1462,20 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 150 => function ($stackPos) { - $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos-(3-1)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributeStack[$stackPos-(3-1)]), $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 151 => function ($stackPos) { - if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }; + $this->semValue = new Node\Const_(new Node\Identifier($this->semStack[$stackPos-(3-1)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributeStack[$stackPos-(3-1)]), $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 152 => function ($stackPos) { - $this->semValue = array(); + if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }; }, 153 => function ($stackPos) { - $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; }; - if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = array(); }, 154 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; }; + if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 155 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -1478,9 +1484,12 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 157 => function ($stackPos) { - throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 158 => function ($stackPos) { + throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 159 => function ($stackPos) { if ($this->semStack[$stackPos-(3-2)]) { $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); }; @@ -1490,46 +1499,46 @@ class Php7 extends \PhpParser\ParserAbstract } }, - 159 => function ($stackPos) { + 160 => function ($stackPos) { $this->semValue = new Stmt\If_($this->semStack[$stackPos-(7-3)], ['stmts' => is_array($this->semStack[$stackPos-(7-5)]) ? $this->semStack[$stackPos-(7-5)] : array($this->semStack[$stackPos-(7-5)]), 'elseifs' => $this->semStack[$stackPos-(7-6)], 'else' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); }, - 160 => function ($stackPos) { + 161 => function ($stackPos) { $this->semValue = new Stmt\If_($this->semStack[$stackPos-(10-3)], ['stmts' => $this->semStack[$stackPos-(10-6)], 'elseifs' => $this->semStack[$stackPos-(10-7)], 'else' => $this->semStack[$stackPos-(10-8)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); }, - 161 => function ($stackPos) { + 162 => function ($stackPos) { $this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, - 162 => function ($stackPos) { + 163 => function ($stackPos) { $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(7-5)], is_array($this->semStack[$stackPos-(7-2)]) ? $this->semStack[$stackPos-(7-2)] : array($this->semStack[$stackPos-(7-2)]), $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); }, - 163 => function ($stackPos) { + 164 => function ($stackPos) { $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 164 => function ($stackPos) { + 165 => function ($stackPos) { $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, - 165 => function ($stackPos) { + 166 => function ($stackPos) { $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 166 => function ($stackPos) { + 167 => function ($stackPos) { $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 167 => function ($stackPos) { + 168 => function ($stackPos) { $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 168 => function ($stackPos) { + 169 => function ($stackPos) { $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 169 => function ($stackPos) { + 170 => function ($stackPos) { $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 170 => function ($stackPos) { + 171 => function ($stackPos) { $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 171 => function ($stackPos) { + 172 => function ($stackPos) { $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 172 => function ($stackPos) { + 173 => function ($stackPos) { $e = $this->semStack[$stackPos-(2-1)]; if ($e instanceof Expr\Throw_) { @@ -1541,1128 +1550,1126 @@ class Php7 extends \PhpParser\ParserAbstract } }, - 173 => function ($stackPos) { + 174 => function ($stackPos) { $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, - 174 => function ($stackPos) { + 175 => function ($stackPos) { $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); }, - 175 => function ($stackPos) { + 176 => function ($stackPos) { $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 176 => function ($stackPos) { + 177 => function ($stackPos) { $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(6-3)], new Expr\Error($this->startAttributeStack[$stackPos-(6-4)] + $this->endAttributeStack[$stackPos-(6-4)]), ['stmts' => $this->semStack[$stackPos-(6-6)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, - 177 => function ($stackPos) { + 178 => function ($stackPos) { $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, - 178 => function ($stackPos) { + 179 => function ($stackPos) { $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue); }, - 179 => function ($stackPos) { + 180 => function ($stackPos) { $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 180 => function ($stackPos) { + 181 => function ($stackPos) { $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 181 => function ($stackPos) { + 182 => function ($stackPos) { $this->semValue = array(); /* means: no statement */ }, - 182 => function ($stackPos) { + 183 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 183 => function ($stackPos) { + 184 => function ($stackPos) { $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; }; if ($this->semValue === null) $this->semValue = array(); /* means: no statement */ }, - 184 => function ($stackPos) { + 185 => function ($stackPos) { $this->semValue = array(); }, - 185 => function ($stackPos) { + 186 => function ($stackPos) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, - 186 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, 187 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 188 => function ($stackPos) { - $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); - }, - 189 => function ($stackPos) { - $this->semValue = null; - }, - 190 => function ($stackPos) { - $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 191 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 192 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 193 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, + 189 => function ($stackPos) { + $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); + }, + 190 => function ($stackPos) { + $this->semValue = null; + }, + 191 => function ($stackPos) { + $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 192 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 193 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, 194 => function ($stackPos) { - $this->semValue = false; + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 195 => function ($stackPos) { - $this->semValue = true; + $this->semValue = false; }, 196 => function ($stackPos) { - $this->semValue = false; + $this->semValue = true; }, 197 => function ($stackPos) { - $this->semValue = true; - }, - 198 => function ($stackPos) { $this->semValue = false; }, - 199 => function ($stackPos) { + 198 => function ($stackPos) { $this->semValue = true; }, + 199 => function ($stackPos) { + $this->semValue = false; + }, 200 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = true; }, 201 => function ($stackPos) { - $this->semValue = []; + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 202 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = []; }, 203 => function ($stackPos) { - $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 204 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); + $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 205 => function ($stackPos) { - $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); + $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); }, 206 => function ($stackPos) { + $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); + }, + 207 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos-(7-2)); }, - 207 => function ($stackPos) { + 208 => function ($stackPos) { $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(8-3)], ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); $this->checkClass($this->semValue, $stackPos-(8-3)); }, - 208 => function ($stackPos) { + 209 => function ($stackPos) { $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(7-3)], ['extends' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => $this->semStack[$stackPos-(7-1)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); $this->checkInterface($this->semValue, $stackPos-(7-3)); }, - 209 => function ($stackPos) { + 210 => function ($stackPos) { $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(6-3)], ['stmts' => $this->semStack[$stackPos-(6-5)], 'attrGroups' => $this->semStack[$stackPos-(6-1)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, - 210 => function ($stackPos) { + 211 => function ($stackPos) { $this->semValue = new Stmt\Enum_($this->semStack[$stackPos-(8-3)], ['scalarType' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); $this->checkEnum($this->semValue, $stackPos-(8-3)); }, - 211 => function ($stackPos) { - $this->semValue = null; - }, 212 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; + $this->semValue = null; }, 213 => function ($stackPos) { - $this->semValue = null; + $this->semValue = $this->semStack[$stackPos-(2-2)]; }, 214 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; + $this->semValue = null; }, 215 => function ($stackPos) { - $this->semValue = 0; + $this->semValue = $this->semStack[$stackPos-(2-2)]; }, 216 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = 0; }, 217 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 218 => function ($stackPos) { - $this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 219 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; + $this->checkClassModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; }, 220 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_FINAL; + $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; }, 221 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_READONLY; + $this->semValue = Stmt\Class_::MODIFIER_FINAL; }, 222 => function ($stackPos) { - $this->semValue = null; + $this->semValue = Stmt\Class_::MODIFIER_READONLY; }, 223 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; - }, - 224 => function ($stackPos) { - $this->semValue = array(); - }, - 225 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; - }, - 226 => function ($stackPos) { - $this->semValue = array(); - }, - 227 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; - }, - 228 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 229 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 230 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 231 => function ($stackPos) { - $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); - }, - 232 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; - }, - 233 => function ($stackPos) { - $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); - }, - 234 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; - }, - 235 => function ($stackPos) { - $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); - }, - 236 => function ($stackPos) { $this->semValue = null; }, - 237 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; + 224 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-2)]; }, - 238 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 239 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 240 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 241 => function ($stackPos) { - $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 242 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; - }, - 243 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-3)]; - }, - 244 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; - }, - 245 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(5-3)]; - }, - 246 => function ($stackPos) { + 225 => function ($stackPos) { $this->semValue = array(); }, + 226 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-2)]; + }, + 227 => function ($stackPos) { + $this->semValue = array(); + }, + 228 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-2)]; + }, + 229 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 230 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 231 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 232 => function ($stackPos) { + $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); + }, + 233 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-2)]; + }, + 234 => function ($stackPos) { + $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); + }, + 235 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-2)]; + }, + 236 => function ($stackPos) { + $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); + }, + 237 => function ($stackPos) { + $this->semValue = null; + }, + 238 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-2)]; + }, + 239 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 240 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 241 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 242 => function ($stackPos) { + $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 243 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, + 244 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-3)]; + }, + 245 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-2)]; + }, + 246 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(5-3)]; + }, 247 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = array(); }, 248 => function ($stackPos) { - $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 249 => function ($stackPos) { - $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 250 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos]; + $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 251 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos]; }, 252 => function ($stackPos) { - $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos]; }, 253 => function ($stackPos) { - $this->semValue = []; + $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes); }, 254 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = []; }, 255 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 256 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 257 => function ($stackPos) { - $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 258 => function ($stackPos) { - $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 259 => function ($stackPos) { - $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); + $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 260 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; + $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]); }, 261 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = $this->semStack[$stackPos-(4-2)]; }, 262 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 263 => function ($stackPos) { - $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); - }, - 264 => function ($stackPos) { $this->semValue = array(); }, - 265 => function ($stackPos) { + 263 => function ($stackPos) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, + 264 => function ($stackPos) { + $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + }, + 265 => function ($stackPos) { + $this->semValue = array(); + }, 266 => function ($stackPos) { - $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue); + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 267 => function ($stackPos) { - $this->semValue = null; + $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue); }, 268 => function ($stackPos) { - $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 269 => function ($stackPos) { $this->semValue = null; }, + 269 => function ($stackPos) { + $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, 270 => function ($stackPos) { - $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue); + $this->semValue = null; }, 271 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)], false); + $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->fixupAlternativeElse($this->semValue); }, 272 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(2-2)], true); + $this->semValue = array($this->semStack[$stackPos-(1-1)], false); }, 273 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)], false); + $this->semValue = array($this->semStack[$stackPos-(2-2)], true); }, 274 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(1-1)], false); }, 275 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = array($this->semStack[$stackPos-(1-1)], false); }, 276 => function ($stackPos) { - $this->semValue = array(); + $this->semValue = $this->semStack[$stackPos-(2-1)]; }, 277 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + $this->semValue = array(); }, 278 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, 279 => function ($stackPos) { - $this->semValue = 0; + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 280 => function ($stackPos) { - $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; + $this->semValue = 0; }, 281 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; + $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; }, 282 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; + $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; }, 283 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; + $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; }, 284 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_READONLY; + $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; }, 285 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_READONLY; + }, + 286 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos-(6-6)], null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]); $this->checkParam($this->semValue); }, - 286 => function ($stackPos) { + 287 => function ($stackPos) { $this->semValue = new Node\Param($this->semStack[$stackPos-(8-6)], $this->semStack[$stackPos-(8-8)], $this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-5)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes, $this->semStack[$stackPos-(8-2)], $this->semStack[$stackPos-(8-1)]); $this->checkParam($this->semValue); }, - 287 => function ($stackPos) { + 288 => function ($stackPos) { $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]); }, - 288 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, 289 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 290 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 291 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 292 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 293 => function ($stackPos) { - $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 294 => function ($stackPos) { - $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]); + $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 295 => function ($stackPos) { - $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]); }, 296 => function ($stackPos) { - $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 297 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 298 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 299 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); - }, - 300 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 301 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 302 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(3-2)]; }, - 303 => function ($stackPos) { + 300 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); }, + 301 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 302 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 303 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, 304 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); }, 305 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, 306 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 307 => function ($stackPos) { - $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 308 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); }, - 309 => function ($stackPos) { + 307 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, - 310 => function ($stackPos) { + 308 => function ($stackPos) { $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, + 309 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); + }, + 310 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, 311 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 312 => function ($stackPos) { - $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 313 => function ($stackPos) { - $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 314 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 315 => function ($stackPos) { - $this->semValue = null; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 316 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = null; }, 317 => function ($stackPos) { - $this->semValue = null; - }, - 318 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-2)]; - }, - 319 => function ($stackPos) { - $this->semValue = null; - }, - 320 => function ($stackPos) { - $this->semValue = array(); - }, - 321 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(4-2)]; - }, - 322 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(3-2)]); - }, - 323 => function ($stackPos) { - $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 324 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 325 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 326 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 327 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 328 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 329 => function ($stackPos) { - $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]); - }, - 330 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 331 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 332 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 333 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 334 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; + 318 => function ($stackPos) { + $this->semValue = null; }, - 335 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + 319 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-2)]; }, - 336 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); + 320 => function ($stackPos) { + $this->semValue = null; }, - 337 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 338 => function ($stackPos) { - $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 339 => function ($stackPos) { - if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; } - }, - 340 => function ($stackPos) { + 321 => function ($stackPos) { $this->semValue = array(); }, + 322 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(4-2)]; + }, + 323 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(3-2)]); + }, + 324 => function ($stackPos) { + $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 325 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 326 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 327 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 328 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 329 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 330 => function ($stackPos) { + $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]); + }, + 331 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 332 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 333 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 334 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 335 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 336 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 337 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 338 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 339 => function ($stackPos) { + $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 340 => function ($stackPos) { + if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; } + }, 341 => function ($stackPos) { + $this->semValue = array(); + }, + 342 => function ($stackPos) { $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; }; if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 342 => function ($stackPos) { + 343 => function ($stackPos) { $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]); $this->checkProperty($this->semValue, $stackPos-(5-2)); }, - 343 => function ($stackPos) { + 344 => function ($stackPos) { $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]); $this->checkClassConst($this->semValue, $stackPos-(5-2)); }, - 344 => function ($stackPos) { + 345 => function ($stackPos) { + $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-2)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)]); + $this->checkClassConst($this->semValue, $stackPos-(6-2)); + }, + 346 => function ($stackPos) { $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); $this->checkClassMethod($this->semValue, $stackPos-(10-2)); }, - 345 => function ($stackPos) { + 347 => function ($stackPos) { $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 346 => function ($stackPos) { + 348 => function ($stackPos) { $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-1)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, - 347 => function ($stackPos) { - $this->semValue = null; /* will be skipped */ - }, - 348 => function ($stackPos) { - $this->semValue = array(); - }, 349 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = null; /* will be skipped */ }, 350 => function ($stackPos) { $this->semValue = array(); }, 351 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 352 => function ($stackPos) { - $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 353 => function ($stackPos) { - $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); - }, - 354 => function ($stackPos) { - $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 355 => function ($stackPos) { - $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 356 => function ($stackPos) { - $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 357 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); - }, - 358 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 359 => function ($stackPos) { - $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]); - }, - 360 => function ($stackPos) { - $this->semValue = null; - }, - 361 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 362 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 363 => function ($stackPos) { - $this->semValue = 0; - }, - 364 => function ($stackPos) { - $this->semValue = 0; - }, - 365 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 366 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 367 => function ($stackPos) { - $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; - }, - 368 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; - }, - 369 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; - }, - 370 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; - }, - 371 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_STATIC; - }, - 372 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; - }, - 373 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_FINAL; - }, - 374 => function ($stackPos) { - $this->semValue = Stmt\Class_::MODIFIER_READONLY; - }, - 375 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 376 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 377 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 378 => function ($stackPos) { - $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 379 => function ($stackPos) { - $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 380 => function ($stackPos) { - $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 381 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 382 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 383 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 384 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 385 => function ($stackPos) { $this->semValue = array(); }, - 386 => function ($stackPos) { + 353 => function ($stackPos) { + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 354 => function ($stackPos) { + $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 355 => function ($stackPos) { + $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + }, + 356 => function ($stackPos) { + $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 357 => function ($stackPos) { + $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 358 => function ($stackPos) { + $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 359 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]); + }, + 360 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 361 => function ($stackPos) { + $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]); + }, + 362 => function ($stackPos) { + $this->semValue = null; + }, + 363 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 364 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 365 => function ($stackPos) { + $this->semValue = 0; + }, + 366 => function ($stackPos) { + $this->semValue = 0; + }, + 367 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 368 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 369 => function ($stackPos) { + $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)]; + }, + 370 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_PUBLIC; + }, + 371 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_PROTECTED; + }, + 372 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_PRIVATE; + }, + 373 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_STATIC; + }, + 374 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT; + }, + 375 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_FINAL; + }, + 376 => function ($stackPos) { + $this->semValue = Stmt\Class_::MODIFIER_READONLY; + }, + 377 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 378 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 379 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 380 => function ($stackPos) { + $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 381 => function ($stackPos) { + $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 382 => function ($stackPos) { + $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 383 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 384 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 385 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 386 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, 387 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = array(); }, 388 => function ($stackPos) { - $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 389 => function ($stackPos) { - $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 390 => function ($stackPos) { $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 391 => function ($stackPos) { - $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 392 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 393 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 394 => function ($stackPos) { - $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 395 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 396 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 397 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 398 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 399 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 400 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 401 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 402 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 403 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 404 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 405 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 406 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 407 => function ($stackPos) { - $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 408 => function ($stackPos) { - $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 409 => function ($stackPos) { - $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 410 => function ($stackPos) { - $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 411 => function ($stackPos) { - $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 412 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 413 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 414 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 415 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 416 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 417 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 418 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 419 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 420 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 421 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 422 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 423 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 424 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 425 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 426 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 427 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 428 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 429 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 430 => function ($stackPos) { - $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 431 => function ($stackPos) { - $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 432 => function ($stackPos) { - $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 433 => function ($stackPos) { - $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 434 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 435 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 436 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 437 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 438 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 439 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 440 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 441 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 442 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 443 => function ($stackPos) { - $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 444 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 445 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 446 => function ($stackPos) { - $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 447 => function ($stackPos) { - $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); }, 448 => function ($stackPos) { - $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 449 => function ($stackPos) { - $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 450 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 451 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 452 => function ($stackPos) { - $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 453 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 454 => function ($stackPos) { - $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 455 => function ($stackPos) { - $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 456 => function ($stackPos) { + $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 457 => function ($stackPos) { + $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 458 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]); $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs); }, - 457 => function ($stackPos) { + 459 => function ($stackPos) { $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 458 => function ($stackPos) { + 460 => function ($stackPos) { $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 459 => function ($stackPos) { + 461 => function ($stackPos) { $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 460 => function ($stackPos) { + 462 => function ($stackPos) { $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 461 => function ($stackPos) { + 463 => function ($stackPos) { $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 462 => function ($stackPos) { + 464 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes; $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE; $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs); }, - 463 => function ($stackPos) { + 465 => function ($stackPos) { $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 464 => function ($stackPos) { + 466 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 465 => function ($stackPos) { + 467 => function ($stackPos) { $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 466 => function ($stackPos) { + 468 => function ($stackPos) { $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 467 => function ($stackPos) { + 469 => function ($stackPos) { $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 468 => function ($stackPos) { + 470 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 469 => function ($stackPos) { + 471 => function ($stackPos) { $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, - 470 => function ($stackPos) { + 472 => function ($stackPos) { $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 471 => function ($stackPos) { + 473 => function ($stackPos) { $this->semValue = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 472 => function ($stackPos) { + 474 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); }, - 473 => function ($stackPos) { + 475 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 474 => function ($stackPos) { + 476 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes); }, - 475 => function ($stackPos) { + 477 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 476 => function ($stackPos) { + 478 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 477 => function ($stackPos) { + 479 => function ($stackPos) { $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); }, - 478 => function ($stackPos) { + 480 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes); }, - 479 => function ($stackPos) { + 481 => function ($stackPos) { $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes); }, - 480 => function ($stackPos) { - $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]); + 482 => function ($stackPos) { + $this->semValue = array(new Stmt\Class_(null, ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]); $this->checkClass($this->semValue[0], -1); }, - 481 => function ($stackPos) { + 483 => function ($stackPos) { $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 482 => function ($stackPos) { + 484 => function ($stackPos) { list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 483 => function ($stackPos) { + 485 => function ($stackPos) { $this->semValue = array(); }, - 484 => function ($stackPos) { + 486 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(4-3)]; }, - 485 => function ($stackPos) { + 487 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(2-1)]; }, - 486 => function ($stackPos) { + 488 => function ($stackPos) { $this->semValue = array($this->semStack[$stackPos-(1-1)]); }, - 487 => function ($stackPos) { + 489 => function ($stackPos) { $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; }, - 488 => function ($stackPos) { + 490 => function ($stackPos) { $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, - 489 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 490 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, 491 => function ($stackPos) { - $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 492 => function ($stackPos) { $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 493 => function ($stackPos) { - $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 494 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); }, 495 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 496 => function ($stackPos) { $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 497 => function ($stackPos) { - $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 498 => function ($stackPos) { - $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 499 => function ($stackPos) { - $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 500 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 501 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 502 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 503 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 504 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 505 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 506 => function ($stackPos) { - $this->semValue = null; - }, - 507 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(3-2)]; }, - 508 => function ($stackPos) { - $this->semValue = array(); + 505 => function ($stackPos) { + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; }, - 509 => function ($stackPos) { - $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); - }, - 510 => function ($stackPos) { - foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 511 => function ($stackPos) { - $this->semValue = array(); - }, - 512 => function ($stackPos) { + 506 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, + 507 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 508 => function ($stackPos) { + $this->semValue = null; + }, + 509 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(3-2)]; + }, + 510 => function ($stackPos) { + $this->semValue = array(); + }, + 511 => function ($stackPos) { + $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes)); + }, + 512 => function ($stackPos) { + foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, 513 => function ($stackPos) { - $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = array(); }, 514 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 515 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 516 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 517 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 518 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 519 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 520 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 521 => function ($stackPos) { - $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 522 => function ($stackPos) { - $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 523 => function ($stackPos) { - $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2; + $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, 524 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 525 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes); + }, + 526 => function ($stackPos) { + $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2; + }, + 527 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs); }, - 525 => function ($stackPos) { + 528 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG; $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs); }, - 526 => function ($stackPos) { + 529 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 527 => function ($stackPos) { + 530 => function ($stackPos) { $this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 528 => function ($stackPos) { + 531 => function ($stackPos) { $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED; foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs); }, - 529 => function ($stackPos) { + 532 => function ($stackPos) { $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 530 => function ($stackPos) { + 533 => function ($stackPos) { $this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); }, - 531 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 532 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 533 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, 534 => function ($stackPos) { - $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 535 => function ($stackPos) { - $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 536 => function ($stackPos) { - $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 537 => function ($stackPos) { - $this->semValue = null; + $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); }, 538 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true); }, 539 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true); }, 540 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = null; }, 541 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2671,7 +2678,7 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 543 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 544 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2680,7 +2687,7 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 546 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 547 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2689,85 +2696,85 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 549 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 550 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 551 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 552 => function ($stackPos) { - $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 553 => function ($stackPos) { - $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 554 => function ($stackPos) { - $this->semValue = null; + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 555 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 556 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); }, 557 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = null; }, 558 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 559 => function ($stackPos) { - $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 560 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 561 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 562 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 563 => function ($stackPos) { - $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2; - }, - 564 => function ($stackPos) { - $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; - }, - 565 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 566 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; - }, - 567 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 568 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 569 => function ($stackPos) { $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 570 => function ($stackPos) { + 562 => function ($stackPos) { $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, - 571 => function ($stackPos) { + 563 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 564 => function ($stackPos) { + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 565 => function ($stackPos) { + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 566 => function ($stackPos) { + $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2; + }, + 567 => function ($stackPos) { + $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var; + }, + 568 => function ($stackPos) { $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, + 569 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 570 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 571 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, 572 => function ($stackPos) { - $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 573 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 574 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(3-2)]; + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 575 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; + $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 576 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; @@ -2779,102 +2786,111 @@ class Php7 extends \PhpParser\ParserAbstract $this->semValue = $this->semStack[$stackPos-(1-1)]; }, 579 => function ($stackPos) { - $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; - }, - 580 => function ($stackPos) { - $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 581 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue); - }, - 582 => function ($stackPos) { - $this->semValue = $this->semStack[$stackPos]; - }, - 583 => function ($stackPos) { - /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ - }, - 584 => function ($stackPos) { - $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; - }, - 585 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 586 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 587 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); - }, - 588 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 589 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 590 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 591 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 592 => function ($stackPos) { - $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true); - }, - 593 => function ($stackPos) { - $this->semValue = null; - }, - 594 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 595 => function ($stackPos) { - $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; - }, - 596 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(1-1)]); - }, - 597 => function ($stackPos) { - $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); - }, - 598 => function ($stackPos) { - $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 599 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); - }, - 600 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, - 601 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); - }, - 602 => function ($stackPos) { - $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 603 => function ($stackPos) { - $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 604 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 605 => function ($stackPos) { - $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); - }, - 606 => function ($stackPos) { - $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); - }, - 607 => function ($stackPos) { + 580 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(3-2)]; }, + 581 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 582 => function ($stackPos) { + $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2; + }, + 583 => function ($stackPos) { + $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 584 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue); + }, + 585 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos]; + }, + 586 => function ($stackPos) { + /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */ + }, + 587 => function ($stackPos) { + $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)]; + }, + 588 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 589 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 590 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 591 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 592 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 593 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 594 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 595 => function ($stackPos) { + $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true); + }, + 596 => function ($stackPos) { + $this->semValue = null; + }, + 597 => function ($stackPos) { + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 598 => function ($stackPos) { + $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; + }, + 599 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(1-1)]); + }, + 600 => function ($stackPos) { + $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); + }, + 601 => function ($stackPos) { + $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 602 => function ($stackPos) { + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 603 => function ($stackPos) { + $this->semValue = $this->semStack[$stackPos-(1-1)]; + }, + 604 => function ($stackPos) { + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); + }, + 605 => function ($stackPos) { + $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 606 => function ($stackPos) { + $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, + 607 => function ($stackPos) { + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); + }, 608 => function ($stackPos) { - $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); }, 609 => function ($stackPos) { - $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); }, 610 => function ($stackPos) { - $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + $this->semValue = $this->semStack[$stackPos-(3-2)]; }, 611 => function ($stackPos) { + $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 612 => function ($stackPos) { + $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); + }, + 613 => function ($stackPos) { + $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); + }, + 614 => function ($stackPos) { $this->semValue = $this->semStack[$stackPos-(1-1)]; }, ]; diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php index c256e897..7c32e5a3 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php @@ -529,7 +529,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticCall(Expr\StaticCall $node) { - return $this->pDereferenceLhs($node->class) . '::' + return $this->pStaticDereferenceLhs($node->class) . '::' . ($node->name instanceof Expr ? ($node->name instanceof Expr\Variable ? $this->p($node->name) @@ -606,7 +606,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) { - return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::' . $this->pObjectProperty($node->name); } protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) { @@ -618,7 +618,7 @@ class Standard extends PrettyPrinterAbstract } protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) { - return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); + return $this->pStaticDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name); } protected function pExpr_ShellExec(Expr\ShellExec $node) { @@ -814,7 +814,9 @@ class Standard extends PrettyPrinterAbstract protected function pStmt_ClassConst(Stmt\ClassConst $node) { return $this->pAttrGroups($node->attrGroups) . $this->pModifiers($node->flags) - . 'const ' . $this->pCommaSeparated($node->consts) . ';'; + . 'const ' + . (null !== $node->type ? $this->p($node->type) . ' ' : '') + . $this->pCommaSeparated($node->consts) . ';'; } protected function pStmt_Function(Stmt\Function_ $node) { @@ -1067,6 +1069,14 @@ class Standard extends PrettyPrinterAbstract } } + protected function pStaticDereferenceLhs(Node $node) { + if (!$this->staticDereferenceLhsRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } + } + protected function pCallLhs(Node $node) { if (!$this->callLhsRequiresParens($node)) { return $this->p($node); @@ -1075,9 +1085,12 @@ class Standard extends PrettyPrinterAbstract } } - protected function pNewVariable(Node $node) { - // TODO: This is not fully accurate. - return $this->pDereferenceLhs($node); + protected function pNewVariable(Node $node): string { + if (!$this->newOperandRequiresParens($node)) { + return $this->p($node); + } else { + return '(' . $this->p($node) . ')'; + } } /** diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php index 6ed936fe..770d5009 100644 --- a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php @@ -21,6 +21,8 @@ abstract class PrettyPrinterAbstract const FIXUP_BRACED_NAME = 4; // Name operand that may require bracing const FIXUP_VAR_BRACED_NAME = 5; // Name operand that may require ${} bracing const FIXUP_ENCAPSED = 6; // Encapsed string part + const FIXUP_NEW = 7; // New/instanceof operand + const FIXUP_STATIC_DEREF_LHS = 8; // LHS of static dereferencing operation protected $precedenceMap = [ // [precedence, associativity] @@ -977,6 +979,19 @@ abstract class PrettyPrinterAbstract return '(' . $this->p($subNode) . ')'; } break; + case self::FIXUP_STATIC_DEREF_LHS: + if ($this->staticDereferenceLhsRequiresParens($subNode) + && !$this->origTokens->haveParens($subStartPos, $subEndPos) + ) { + return '(' . $this->p($subNode) . ')'; + } + break; + case self::FIXUP_NEW: + if ($this->newOperandRequiresParens($subNode) + && !$this->origTokens->haveParens($subStartPos, $subEndPos)) { + return '(' . $this->p($subNode) . ')'; + } + break; case self::FIXUP_BRACED_NAME: case self::FIXUP_VAR_BRACED_NAME: if ($subNode instanceof Expr @@ -1047,13 +1062,26 @@ abstract class PrettyPrinterAbstract } /** - * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis. + * Determines whether the LHS of an array/object operation must be wrapped in parentheses. * * @param Node $node LHS of dereferencing operation * * @return bool Whether parentheses are required */ protected function dereferenceLhsRequiresParens(Node $node) : bool { + // A constant can occur on the LHS of an array/object deref, but not a static deref. + return $this->staticDereferenceLhsRequiresParens($node) + && !$node instanceof Expr\ConstFetch; + } + + /** + * Determines whether the LHS of a static operation must be wrapped in parentheses. + * + * @param Node $node LHS of dereferencing operation + * + * @return bool Whether parentheses are required + */ + protected function staticDereferenceLhsRequiresParens(Node $node): bool { return !($node instanceof Expr\Variable || $node instanceof Node\Name || $node instanceof Expr\ArrayDimFetch @@ -1066,10 +1094,31 @@ abstract class PrettyPrinterAbstract || $node instanceof Expr\StaticCall || $node instanceof Expr\Array_ || $node instanceof Scalar\String_ - || $node instanceof Expr\ConstFetch || $node instanceof Expr\ClassConstFetch); } + /** + * Determines whether an expression used in "new" or "instanceof" requires parentheses. + * + * @param Node $node New or instanceof operand + * + * @return bool Whether parentheses are required + */ + protected function newOperandRequiresParens(Node $node): bool { + if ($node instanceof Node\Name || $node instanceof Expr\Variable) { + return false; + } + if ($node instanceof Expr\ArrayDimFetch || $node instanceof Expr\PropertyFetch || + $node instanceof Expr\NullsafePropertyFetch + ) { + return $this->newOperandRequiresParens($node->var); + } + if ($node instanceof Expr\StaticPropertyFetch) { + return $this->newOperandRequiresParens($node->class); + } + return true; + } + /** * Print modifiers, including trailing whitespace. * @@ -1171,7 +1220,7 @@ abstract class PrettyPrinterAbstract Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT], Expr\Instanceof_::class => [ 'expr' => self::FIXUP_PREC_LEFT, - 'class' => self::FIXUP_PREC_RIGHT, // TODO: FIXUP_NEW_VARIABLE + 'class' => self::FIXUP_NEW, ], Expr\Ternary::class => [ 'cond' => self::FIXUP_PREC_LEFT, @@ -1179,10 +1228,13 @@ abstract class PrettyPrinterAbstract ], Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS], - Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS], + Expr\StaticCall::class => ['class' => self::FIXUP_STATIC_DEREF_LHS], Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS], - Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], // TODO: FIXUP_NEW_VARIABLE + Expr\ClassConstFetch::class => [ + 'class' => self::FIXUP_STATIC_DEREF_LHS, + 'name' => self::FIXUP_BRACED_NAME, + ], + Expr\New_::class => ['class' => self::FIXUP_NEW], Expr\MethodCall::class => [ 'var' => self::FIXUP_DEREF_LHS, 'name' => self::FIXUP_BRACED_NAME, @@ -1192,7 +1244,7 @@ abstract class PrettyPrinterAbstract 'name' => self::FIXUP_BRACED_NAME, ], Expr\StaticPropertyFetch::class => [ - 'class' => self::FIXUP_DEREF_LHS, + 'class' => self::FIXUP_STATIC_DEREF_LHS, 'name' => self::FIXUP_VAR_BRACED_NAME, ], Expr\PropertyFetch::class => [ @@ -1278,6 +1330,7 @@ abstract class PrettyPrinterAbstract 'Param->default' => $stripEquals, 'Stmt_Break->num' => $stripBoth, 'Stmt_Catch->var' => $stripLeft, + 'Stmt_ClassConst->type' => $stripRight, 'Stmt_ClassMethod->returnType' => $stripColon, 'Stmt_Class->extends' => ['left' => \T_EXTENDS], 'Stmt_Enum->scalarType' => $stripColon, @@ -1319,6 +1372,7 @@ abstract class PrettyPrinterAbstract 'Stmt_Break->num' => [\T_BREAK, false, ' ', null], 'Stmt_Catch->var' => [null, false, ' ', null], 'Stmt_ClassMethod->returnType' => [')', false, ' : ', null], + 'Stmt_ClassConst->type' => [\T_CONST, false, ' ', null], 'Stmt_Class->extends' => [null, false, ' extends ', null], 'Stmt_Enum->scalarType' => [null, false, ' : ', null], 'Stmt_EnumCase->expr' => [null, false, ' = ', null], @@ -1508,6 +1562,7 @@ abstract class PrettyPrinterAbstract 'Stmt_ClassMethod->flags' => \T_FUNCTION, 'Stmt_Class->flags' => \T_CLASS, 'Stmt_Property->flags' => \T_VARIABLE, + 'Expr_PrintableNewAnonClass->flags' => \T_CLASS, 'Param->flags' => \T_VARIABLE, //'Stmt_TraitUseAdaptation_Alias->newModifier' => 0, // TODO ]; diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php index 892ee0f9..4909ab73 100644 --- a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php +++ b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php @@ -181,6 +181,7 @@ final class ContextFactory $currentNamespace = $this->parseNamespace($tokens); break; case T_CLASS: + case T_TRAIT: // Fast-forward the iterator through the class so that any // T_USE tokens found within are skipped - these are not // valid namespace use statements so should be ignored. diff --git a/vendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.php b/vendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.php new file mode 100644 index 00000000..a503937b --- /dev/null +++ b/vendor/phpstan/phpdoc-parser/src/Ast/ConstExpr/DoctrineConstExprStringNode.php @@ -0,0 +1,42 @@ +value = $value; + } + + public function __toString(): string + { + return self::escape($this->value); + } + + public static function unescape(string $value): string + { + // from https://github.com/doctrine/annotations/blob/a9ec7af212302a75d1f92fa65d3abfbd16245a2a/lib/Doctrine/Common/Annotations/DocLexer.php#L103-L107 + return str_replace('""', '"', substr($value, 1, strlen($value) - 2)); + } + + private static function escape(string $value): string + { + // from https://github.com/phpstan/phpdoc-parser/issues/205#issuecomment-1662323656 + return sprintf('"%s"', str_replace('"', '""', $value)); + } + +} diff --git a/vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.php b/vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.php index 86ae8239..32539faf 100644 --- a/vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.php +++ b/vendor/phpstan/phpdoc-parser/src/Lexer/Lexer.php @@ -35,19 +35,20 @@ class Lexer public const TOKEN_INTEGER = 20; public const TOKEN_SINGLE_QUOTED_STRING = 21; public const TOKEN_DOUBLE_QUOTED_STRING = 22; - public const TOKEN_IDENTIFIER = 23; - public const TOKEN_THIS_VARIABLE = 24; - public const TOKEN_VARIABLE = 25; - public const TOKEN_HORIZONTAL_WS = 26; - public const TOKEN_PHPDOC_EOL = 27; - public const TOKEN_OTHER = 28; - public const TOKEN_END = 29; - public const TOKEN_COLON = 30; - public const TOKEN_WILDCARD = 31; - public const TOKEN_OPEN_CURLY_BRACKET = 32; - public const TOKEN_CLOSE_CURLY_BRACKET = 33; - public const TOKEN_NEGATED = 34; - public const TOKEN_ARROW = 35; + public const TOKEN_DOCTRINE_ANNOTATION_STRING = 23; + public const TOKEN_IDENTIFIER = 24; + public const TOKEN_THIS_VARIABLE = 25; + public const TOKEN_VARIABLE = 26; + public const TOKEN_HORIZONTAL_WS = 27; + public const TOKEN_PHPDOC_EOL = 28; + public const TOKEN_OTHER = 29; + public const TOKEN_END = 30; + public const TOKEN_COLON = 31; + public const TOKEN_WILDCARD = 32; + public const TOKEN_OPEN_CURLY_BRACKET = 33; + public const TOKEN_CLOSE_CURLY_BRACKET = 34; + public const TOKEN_NEGATED = 35; + public const TOKEN_ARROW = 36; public const TOKEN_LABELS = [ self::TOKEN_REFERENCE => '\'&\'', @@ -79,6 +80,7 @@ class Lexer self::TOKEN_INTEGER => 'TOKEN_INTEGER', self::TOKEN_SINGLE_QUOTED_STRING => 'TOKEN_SINGLE_QUOTED_STRING', self::TOKEN_DOUBLE_QUOTED_STRING => 'TOKEN_DOUBLE_QUOTED_STRING', + self::TOKEN_DOCTRINE_ANNOTATION_STRING => 'TOKEN_DOCTRINE_ANNOTATION_STRING', self::TOKEN_IDENTIFIER => 'type', self::TOKEN_THIS_VARIABLE => '\'$this\'', self::TOKEN_VARIABLE => 'variable', @@ -180,6 +182,7 @@ class Lexer if ($this->parseDoctrineAnnotations) { $patterns[self::TOKEN_DOCTRINE_TAG] = '@[a-z_\\\\][a-z0-9_\:\\\\]*[a-z_][a-z0-9_]*'; + $patterns[self::TOKEN_DOCTRINE_ANNOTATION_STRING] = '"(?:""|[^"])*+"'; } // anything but TOKEN_CLOSE_PHPDOC or TOKEN_HORIZONTAL_WS or TOKEN_EOL diff --git a/vendor/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php b/vendor/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php index f97c260c..f6a7306e 100644 --- a/vendor/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php +++ b/vendor/phpstan/phpdoc-parser/src/Parser/ConstExprParser.php @@ -23,6 +23,9 @@ class ConstExprParser /** @var bool */ private $useIndexAttributes; + /** @var bool */ + private $parseDoctrineStrings; + /** * @param array{lines?: bool, indexes?: bool} $usedAttributes */ @@ -36,6 +39,24 @@ class ConstExprParser $this->quoteAwareConstExprString = $quoteAwareConstExprString; $this->useLinesAttributes = $usedAttributes['lines'] ?? false; $this->useIndexAttributes = $usedAttributes['indexes'] ?? false; + $this->parseDoctrineStrings = false; + } + + /** + * @internal + */ + public function toDoctrine(): self + { + $self = new self( + $this->unescapeStrings, + $this->quoteAwareConstExprString, + [ + 'lines' => $this->useLinesAttributes, + 'indexes' => $this->useIndexAttributes, + ] + ); + $self->parseDoctrineStrings = true; + return $self; } public function parse(TokenIterator $tokens, bool $trimStrings = false): Ast\ConstExpr\ConstExprNode @@ -66,7 +87,41 @@ class ConstExprParser ); } + if ($this->parseDoctrineStrings && $tokens->isCurrentTokenType(Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { + $value = $tokens->currentTokenValue(); + $tokens->next(); + + return $this->enrichWithAttributes( + $tokens, + new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($value)), + $startLine, + $startIndex + ); + } + if ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING, Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { + if ($this->parseDoctrineStrings) { + if ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING)) { + throw new ParserException( + $tokens->currentTokenValue(), + $tokens->currentTokenType(), + $tokens->currentTokenOffset(), + Lexer::TOKEN_DOUBLE_QUOTED_STRING, + null, + $tokens->currentTokenLine() + ); + } + + $value = $tokens->currentTokenValue(); + $tokens->next(); + + return $this->enrichWithAttributes( + $tokens, + $this->parseDoctrineString($value, $tokens), + $startLine, + $startIndex + ); + } $value = $tokens->currentTokenValue(); $type = $tokens->currentTokenType(); if ($trimStrings) { @@ -214,6 +269,23 @@ class ConstExprParser } + /** + * This method is supposed to be called with TokenIterator after reading TOKEN_DOUBLE_QUOTED_STRING and shifting + * to the next token. + */ + public function parseDoctrineString(string $text, TokenIterator $tokens): Ast\ConstExpr\DoctrineConstExprStringNode + { + // Because of how Lexer works, a valid Doctrine string + // can consist of a sequence of TOKEN_DOUBLE_QUOTED_STRING and TOKEN_DOCTRINE_ANNOTATION_STRING + while ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING, Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { + $text .= $tokens->currentTokenValue(); + $tokens->next(); + } + + return new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($text)); + } + + private function parseArrayItem(TokenIterator $tokens): Ast\ConstExpr\ConstExprArrayItemNode { $startLine = $tokens->currentTokenLine(); diff --git a/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php b/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php index 7b56e3bd..ff5f18f6 100644 --- a/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php +++ b/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php @@ -35,6 +35,9 @@ class PhpDocParser /** @var ConstExprParser */ private $constantExprParser; + /** @var ConstExprParser */ + private $doctrineConstantExprParser; + /** @var bool */ private $requireWhitespaceBeforeDescription; @@ -68,6 +71,7 @@ class PhpDocParser { $this->typeParser = $typeParser; $this->constantExprParser = $constantExprParser; + $this->doctrineConstantExprParser = $constantExprParser->toDoctrine(); $this->requireWhitespaceBeforeDescription = $requireWhitespaceBeforeDescription; $this->preserveTypeAliasesWithInvalidTypes = $preserveTypeAliasesWithInvalidTypes; $this->parseDoctrineAnnotations = $parseDoctrineAnnotations; @@ -688,7 +692,7 @@ class PhpDocParser ); try { - $constExpr = $this->constantExprParser->parse($tokens, true); + $constExpr = $this->doctrineConstantExprParser->parse($tokens, true); if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) { throw $exception; } @@ -750,14 +754,15 @@ class PhpDocParser $key = new Ast\ConstExpr\ConstExprIntegerNode(str_replace('_', '', $tokens->currentTokenValue())); $tokens->next(); - } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_SINGLE_QUOTED_STRING)) { - $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::SINGLE_QUOTED); + } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOCTRINE_ANNOTATION_STRING)) { + $key = new Ast\ConstExpr\DoctrineConstExprStringNode(Ast\ConstExpr\DoctrineConstExprStringNode::unescape($tokens->currentTokenValue())); + $tokens->next(); } elseif ($tokens->isCurrentTokenType(Lexer::TOKEN_DOUBLE_QUOTED_STRING)) { - $key = new Ast\ConstExpr\QuoteAwareConstExprStringNode(StringUnescaper::unescapeString($tokens->currentTokenValue()), Ast\ConstExpr\QuoteAwareConstExprStringNode::DOUBLE_QUOTED); - + $value = $tokens->currentTokenValue(); $tokens->next(); + $key = $this->doctrineConstantExprParser->parseDoctrineString($value, $tokens); } else { $currentTokenValue = $tokens->currentTokenValue(); @@ -786,7 +791,7 @@ class PhpDocParser } $tokens->rollback(); - $constExpr = $this->constantExprParser->parse($tokens, true); + $constExpr = $this->doctrineConstantExprParser->parse($tokens, true); if (!$constExpr instanceof Ast\ConstExpr\ConstFetchNode) { throw new ParserException( $tokens->currentTokenValue(), diff --git a/vendor/phpstan/phpstan-deprecation-rules/README.md b/vendor/phpstan/phpstan-deprecation-rules/README.md index 3a93df70..59677028 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/README.md +++ b/vendor/phpstan/phpstan-deprecation-rules/README.md @@ -36,3 +36,48 @@ In case you don't own the code which you want to be considered deprecated, use [ /** @deprecated */ class ThirdPartyClass {} ``` + + +## Custom deprecated scopes + +Usage of deprecated code is not reported in code that is also deprecated: + +```php +/** @deprecated */ +function doFoo(): void +{ + // not reported: + anotherDeprecatedFunction(); +} +``` + +If you have [a different way](https://github.com/phpstan/phpstan-deprecation-rules/issues/64) of marking code that calls deprecated symbols on purpose and you don't want these calls to be reported either, you can write an extension by implementing the [`DeprecatedScopeResolver`](https://github.com/phpstan/phpstan-deprecation-rules/blob/1.1.x/src/Rules/Deprecations/DeprecatedScopeResolver.php) interface. + +For example if you mark your PHPUnit tests that test deprecated code with `@group legacy`, you can implement the extension this way: + +```php +class GroupLegacyScopeResolver implements DeprecatedScopeResolver +{ + + public function isScopeDeprecated(Scope $scope): bool + { + $function = $scope->getFunction(); + return $function !== null + && $function->getDocComment() !== null + && strpos($function->getDocComment(), '@group legacy') !== false; + } + +} +``` + +And register it in your [configuration file](https://phpstan.org/config-reference): + +```neon +services: + - + class: GroupLegacyScopeResolver + tags: + - phpstan.deprecations.deprecatedScopeResolver +``` + +[Learn more about Scope](https://phpstan.org/developing-extensions/scope), a core concept for implementing custom PHPStan extensions. diff --git a/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.json b/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.json index e3079710..16a240bc 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.json +++ b/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.json @@ -1,8 +1,9 @@ { "require-dev": { - "consistence-community/coding-standard": "^3.10", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "slevomat/coding-standard": "^7.0" + "consistence-community/coding-standard": "^3.11.0", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0.0", + "slevomat/coding-standard": "^8.8.0", + "squizlabs/php_codesniffer": "^3.5.3" }, "config": { "allow-plugins": { diff --git a/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.lock b/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.lock index 4bcc8de4..db122416 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.lock +++ b/vendor/phpstan/phpstan-deprecation-rules/build-cs/composer.lock @@ -4,35 +4,35 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4485bbedba7bcc71ace5f69dbb9b6c47", + "content-hash": "e69c1916405a7e3c8001c1b609a0ee61", "packages": [], "packages-dev": [ { "name": "consistence-community/coding-standard", - "version": "3.11.1", + "version": "3.11.3", "source": { "type": "git", "url": "https://github.com/consistence-community/coding-standard.git", - "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df" + "reference": "f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consistence-community/coding-standard/zipball/4632fead8c9ee8f50044fcbce9f66c797b34c0df", - "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df", + "url": "https://api.github.com/repos/consistence-community/coding-standard/zipball/f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1", + "reference": "f38e06327d5bf80ff5ff523a2c05e623b5e8d8b1", "shasum": "" }, "require": { - "php": ">=7.4", - "slevomat/coding-standard": "~7.0", - "squizlabs/php_codesniffer": "~3.6.0" + "php": "~8.0", + "slevomat/coding-standard": "~8.0", + "squizlabs/php_codesniffer": "~3.7.0" }, "replace": { "consistence/coding-standard": "3.10.*" }, "require-dev": { - "phing/phing": "2.16.4", - "php-parallel-lint/php-parallel-lint": "1.3.0", - "phpunit/phpunit": "9.5.4" + "phing/phing": "2.17.0", + "php-parallel-lint/php-parallel-lint": "1.3.1", + "phpunit/phpunit": "9.5.10" }, "type": "library", "autoload": { @@ -70,41 +70,44 @@ ], "support": { "issues": "https://github.com/consistence-community/coding-standard/issues", - "source": "https://github.com/consistence-community/coding-standard/tree/3.11.1" + "source": "https://github.com/consistence-community/coding-standard/tree/3.11.3" }, - "time": "2021-05-03T18:13:22+00:00" + "time": "2023-03-27T14:55:41+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", + "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -120,7 +123,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -144,23 +147,23 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.5.1", + "version": "1.20.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "981cc368a216c988e862a75e526b6076987d1b50" + "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", - "reference": "981cc368a216c988e862a75e526b6076987d1b50", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", "shasum": "" }, "require": { @@ -170,6 +173,7 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -189,48 +193,48 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4" }, - "time": "2022-05-05T11:32:40+00:00" + "time": "2023-05-02T09:19:37+00:00" }, { "name": "slevomat/coding-standard", - "version": "7.2.1", + "version": "8.12.0", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" + "reference": "cc04334ed0ce5a251389112fbd2dbe1dbc931ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc04334ed0ce5a251389112fbd2dbe1dbc931ae8", + "reference": "cc04334ed0ce5a251389112fbd2dbe1dbc931ae8", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.5.1", - "squizlabs/php_codesniffer": "^3.6.2" + "phpstan/phpdoc-parser": ">=1.20.0 <1.21.0", + "squizlabs/php_codesniffer": "^3.7.1" }, "require-dev": { - "phing/phing": "2.17.3", + "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.7.1", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.1", - "phpstan/phpstan-strict-rules": "1.2.3", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" + "phpstan/phpstan": "1.10.15", + "phpstan/phpstan-deprecation-rules": "1.1.3", + "phpstan/phpstan-phpunit": "1.3.11", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.1.3" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" } }, "notification-url": "https://packagist.org/downloads/", @@ -238,9 +242,13 @@ "MIT" ], "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.12.0" }, "funding": [ { @@ -252,20 +260,20 @@ "type": "tidelift" } ], - "time": "2022-05-25T10:58:12+00:00" + "time": "2023-05-14T20:06:01+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.2", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -301,14 +309,15 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-12-12T21:44:58+00:00" + "time": "2023-02-22T23:07:41+00:00" } ], "aliases": [], diff --git a/vendor/phpstan/phpstan-deprecation-rules/composer.json b/vendor/phpstan/phpstan-deprecation-rules/composer.json index 0c115d77..149508f4 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/composer.json +++ b/vendor/phpstan/phpstan-deprecation-rules/composer.json @@ -7,7 +7,7 @@ ], "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", diff --git a/vendor/phpstan/phpstan-deprecation-rules/rules.neon b/vendor/phpstan/phpstan-deprecation-rules/rules.neon index 9b63b386..704579b7 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/rules.neon +++ b/vendor/phpstan/phpstan-deprecation-rules/rules.neon @@ -2,8 +2,19 @@ parameters: deprecationRulesInstalled: true services: - - - class: PHPStan\Rules\Deprecations\DeprecatedClassHelper + - + class: PHPStan\Rules\Deprecations\DeprecatedClassHelper + + - + class: PHPStan\DependencyInjection\LazyDeprecatedScopeResolverProvider + - + class: PHPStan\Rules\Deprecations\DeprecatedScopeHelper + factory: @PHPStan\DependencyInjection\LazyDeprecatedScopeResolverProvider::get + + - + class: PHPStan\Rules\Deprecations\DefaultDeprecatedScopeResolver + tags: + - phpstan.deprecations.deprecatedScopeResolver rules: - PHPStan\Rules\Deprecations\AccessDeprecatedPropertyRule diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/DependencyInjection/LazyDeprecatedScopeResolverProvider.php b/vendor/phpstan/phpstan-deprecation-rules/src/DependencyInjection/LazyDeprecatedScopeResolverProvider.php new file mode 100644 index 00000000..467ca511 --- /dev/null +++ b/vendor/phpstan/phpstan-deprecation-rules/src/DependencyInjection/LazyDeprecatedScopeResolverProvider.php @@ -0,0 +1,33 @@ +container = $container; + } + + public function get(): DeprecatedScopeHelper + { + if ($this->scopeHelper === null) { + $this->scopeHelper = new DeprecatedScopeHelper( + $this->container->getServicesByTag(self::EXTENSION_TAG) + ); + } + return $this->scopeHelper; + } + +} diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedPropertyRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedPropertyRule.php index 3e1f88b9..a05512f4 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedPropertyRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedPropertyRule.php @@ -21,9 +21,13 @@ class AccessDeprecatedPropertyRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -33,7 +37,7 @@ class AccessDeprecatedPropertyRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedStaticPropertyRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedStaticPropertyRule.php index beb9891f..224b48a7 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedStaticPropertyRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/AccessDeprecatedStaticPropertyRule.php @@ -28,10 +28,14 @@ class AccessDeprecatedStaticPropertyRule implements Rule /** @var RuleLevelHelper */ private $ruleLevelHelper; - public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; $this->ruleLevelHelper = $ruleLevelHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -41,7 +45,7 @@ class AccessDeprecatedStaticPropertyRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedFunctionRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedFunctionRule.php index f8ccefe0..857a02d6 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedFunctionRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedFunctionRule.php @@ -20,9 +20,13 @@ class CallToDeprecatedFunctionRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -32,7 +36,7 @@ class CallToDeprecatedFunctionRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedMethodRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedMethodRule.php index 6ec4e0cd..998d4288 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedMethodRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedMethodRule.php @@ -21,9 +21,13 @@ class CallToDeprecatedMethodRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -33,7 +37,7 @@ class CallToDeprecatedMethodRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedStaticMethodRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedStaticMethodRule.php index 8b7d995d..6978d593 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedStaticMethodRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/CallToDeprecatedStaticMethodRule.php @@ -28,10 +28,14 @@ class CallToDeprecatedStaticMethodRule implements Rule /** @var RuleLevelHelper */ private $ruleLevelHelper; - public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; $this->ruleLevelHelper = $ruleLevelHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -41,7 +45,7 @@ class CallToDeprecatedStaticMethodRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DefaultDeprecatedScopeResolver.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DefaultDeprecatedScopeResolver.php new file mode 100644 index 00000000..14807272 --- /dev/null +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DefaultDeprecatedScopeResolver.php @@ -0,0 +1,30 @@ +getClassReflection(); + if ($class !== null && $class->isDeprecated()) { + return true; + } + + $trait = $scope->getTraitReflection(); + if ($trait !== null && $trait->isDeprecated()) { + return true; + } + + $function = $scope->getFunction(); + if ($function !== null && $function->isDeprecated()->yes()) { + return true; + } + + return false; + } + +} diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeHelper.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeHelper.php index 6b19151e..dda31721 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeHelper.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeHelper.php @@ -7,21 +7,23 @@ use PHPStan\Analyser\Scope; class DeprecatedScopeHelper { - public static function isScopeDeprecated(Scope $scope): bool + /** @var DeprecatedScopeResolver[] */ + private $resolvers; + + /** + * @param DeprecatedScopeResolver[] $checkers + */ + public function __construct(array $checkers) { - $class = $scope->getClassReflection(); - if ($class !== null && $class->isDeprecated()) { - return true; - } + $this->resolvers = $checkers; + } - $trait = $scope->getTraitReflection(); - if ($trait !== null && $trait->isDeprecated()) { - return true; - } - - $function = $scope->getFunction(); - if ($function !== null && $function->isDeprecated()->yes()) { - return true; + public function isScopeDeprecated(Scope $scope): bool + { + foreach ($this->resolvers as $checker) { + if ($checker->isScopeDeprecated($scope)) { + return true; + } } return false; diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeResolver.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeResolver.php new file mode 100644 index 00000000..27d4b878 --- /dev/null +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/DeprecatedScopeResolver.php @@ -0,0 +1,27 @@ +reflectionProvider = $reflectionProvider; $this->ruleLevelHelper = $ruleLevelHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -41,7 +45,7 @@ class FetchingClassConstOfDeprecatedClassRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/FetchingDeprecatedConstRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/FetchingDeprecatedConstRule.php index 407f9046..8b77ce12 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/FetchingDeprecatedConstRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/FetchingDeprecatedConstRule.php @@ -19,12 +19,16 @@ class FetchingDeprecatedConstRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + /** @var array */ private $deprecatedConstants = []; - public function __construct(ReflectionProvider $reflectionProvider) + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; // phpcs:ignore SlevomatCodingStandard.ControlStructures.EarlyExit.EarlyExitNotUsed if (PHP_VERSION_ID >= 70300) { @@ -40,7 +44,7 @@ class FetchingDeprecatedConstRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/ImplementationOfDeprecatedInterfaceRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/ImplementationOfDeprecatedInterfaceRule.php index 3b3cda05..cec9187c 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/ImplementationOfDeprecatedInterfaceRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/ImplementationOfDeprecatedInterfaceRule.php @@ -19,9 +19,13 @@ class ImplementationOfDeprecatedInterfaceRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -31,7 +35,7 @@ class ImplementationOfDeprecatedInterfaceRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InheritanceOfDeprecatedClassRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InheritanceOfDeprecatedClassRule.php index 772cb1ed..62119a14 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InheritanceOfDeprecatedClassRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InheritanceOfDeprecatedClassRule.php @@ -19,9 +19,13 @@ class InheritanceOfDeprecatedClassRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -31,7 +35,7 @@ class InheritanceOfDeprecatedClassRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InstantiationOfDeprecatedClassRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InstantiationOfDeprecatedClassRule.php index 6450a100..e65564ad 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InstantiationOfDeprecatedClassRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/InstantiationOfDeprecatedClassRule.php @@ -26,10 +26,14 @@ class InstantiationOfDeprecatedClassRule implements Rule /** @var RuleLevelHelper */ private $ruleLevelHelper; - public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, RuleLevelHelper $ruleLevelHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; $this->ruleLevelHelper = $ruleLevelHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -39,7 +43,7 @@ class InstantiationOfDeprecatedClassRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClassMethodSignatureRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClassMethodSignatureRule.php index f1165727..735b9e38 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClassMethodSignatureRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClassMethodSignatureRule.php @@ -18,9 +18,13 @@ class TypeHintDeprecatedInClassMethodSignatureRule implements Rule /** @var DeprecatedClassHelper */ private $deprecatedClassHelper; - public function __construct(DeprecatedClassHelper $deprecatedClassHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(DeprecatedClassHelper $deprecatedClassHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->deprecatedClassHelper = $deprecatedClassHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -30,7 +34,7 @@ class TypeHintDeprecatedInClassMethodSignatureRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClosureSignatureRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClosureSignatureRule.php index bfb83a11..36f952ae 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClosureSignatureRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInClosureSignatureRule.php @@ -18,9 +18,13 @@ class TypeHintDeprecatedInClosureSignatureRule implements Rule /** @var DeprecatedClassHelper */ private $deprecatedClassHelper; - public function __construct(DeprecatedClassHelper $deprecatedClassHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(DeprecatedClassHelper $deprecatedClassHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->deprecatedClassHelper = $deprecatedClassHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -30,7 +34,7 @@ class TypeHintDeprecatedInClosureSignatureRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInFunctionSignatureRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInFunctionSignatureRule.php index 9c91ec90..80d8c8d7 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInFunctionSignatureRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/TypeHintDeprecatedInFunctionSignatureRule.php @@ -19,9 +19,13 @@ class TypeHintDeprecatedInFunctionSignatureRule implements Rule /** @var DeprecatedClassHelper */ private $deprecatedClassHelper; - public function __construct(DeprecatedClassHelper $deprecatedClassHelper) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(DeprecatedClassHelper $deprecatedClassHelper, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->deprecatedClassHelper = $deprecatedClassHelper; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -31,7 +35,7 @@ class TypeHintDeprecatedInFunctionSignatureRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedCastRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedCastRule.php index 04ff91fe..e6d653a7 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedCastRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedCastRule.php @@ -14,6 +14,14 @@ use function sprintf; class UsageOfDeprecatedCastRule implements Rule { + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(DeprecatedScopeHelper $deprecatedScopeHelper) + { + $this->deprecatedScopeHelper = $deprecatedScopeHelper; + } + public function getNodeType(): string { return Cast::class; @@ -21,7 +29,7 @@ class UsageOfDeprecatedCastRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedTraitRule.php b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedTraitRule.php index cd06f7a3..80b94313 100644 --- a/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedTraitRule.php +++ b/vendor/phpstan/phpstan-deprecation-rules/src/Rules/Deprecations/UsageOfDeprecatedTraitRule.php @@ -20,9 +20,13 @@ class UsageOfDeprecatedTraitRule implements Rule /** @var ReflectionProvider */ private $reflectionProvider; - public function __construct(ReflectionProvider $reflectionProvider) + /** @var DeprecatedScopeHelper */ + private $deprecatedScopeHelper; + + public function __construct(ReflectionProvider $reflectionProvider, DeprecatedScopeHelper $deprecatedScopeHelper) { $this->reflectionProvider = $reflectionProvider; + $this->deprecatedScopeHelper = $deprecatedScopeHelper; } public function getNodeType(): string @@ -32,7 +36,7 @@ class UsageOfDeprecatedTraitRule implements Rule public function processNode(Node $node, Scope $scope): array { - if (DeprecatedScopeHelper::isScopeDeprecated($scope)) { + if ($this->deprecatedScopeHelper->isScopeDeprecated($scope)) { return []; } diff --git a/vendor/phpstan/phpstan/phpstan.phar b/vendor/phpstan/phpstan/phpstan.phar index 7f766674..82a9730c 100755 Binary files a/vendor/phpstan/phpstan/phpstan.phar and b/vendor/phpstan/phpstan/phpstan.phar differ diff --git a/vendor/phpstan/phpstan/phpstan.phar.asc b/vendor/phpstan/phpstan/phpstan.phar.asc index bbc2c3a4..351b3852 100644 --- a/vendor/phpstan/phpstan/phpstan.phar.asc +++ b/vendor/phpstan/phpstan/phpstan.phar.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmS32poACgkQUcZzBf/C -5cCvmg/+JJmyX663fa+FHy7ED2SexVuChivpbp82dyLx1gRAl15rtNG4zjxNRfnW -6GpsysMhKqrN7p6xur18ZkLqdFKAjeNnpTunnh/ADetcrs8wzLNyAy7luQtyXAuj -SOv5f/Yitg9yvZ2GHrbzchQuSjkbUR2KroBYsRhwVTH7pMIgdvysRBYiENfbz350 -n91WOCApDnVCygzEhBbhkwA/xklJnUxkRJX3AlbbCwES9K64ELyGd0BqJ1Ohy2a7 -4cFjwRJq9/tXf99fyncamN8xyBdvYBXSNRNMPYcjKqKIZCOePlR8Q3b7nt154w+e -w2qnAevOB4dYzJaSjwJlaVQYR1YIQ7NlYkGboONq/lrtJlEejDdiRmGvgHZ8nSYW -Ob2JwqgYDfUPfsnXAwXM+whpUNJi30MDB7MSw3SiDlyw690HheT/DCKOJ9yNUiOB -TSGkbIGW/ASett78gowjwniYdryE5ufUPwZbkSaFC3CDysHfs6Jgc+lxe3wnOHtD -WyPl1TqDRNuLOZ26TgxI3gGEYqMcVDYQfmuiOakoebHx6j0bpvyEaP51j0/JFpu6 -okKulXgC1DUluKFWMPhobPQRZ8zC29macnU74JvmJIiUhfiP2Pl16D+XcjFW++zH -EDEghcCdgz0pIF6UI5j02rbNAfu7Oo685pnYeXq0DexgXjqoFOE= -=NF4z +iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmTaKt8ACgkQUcZzBf/C +5cBjcA//TOyzijQKOpxHJ73Y0F9j5169FDZE95exCWDYxOLkFOr8V/lvjZhXESqh +g5qSn93q4BjAq60pjocZe/sBHxPpyxVLmvWzZcwozP0fauZABsPAXuhPrGtuBn7Q +v7ykPPycayBUiCNNcUi00x5d9+5V4Fvd3URDg/eC/rpBb7O3mA2UWcQrR+bx178z +v91dnztyti8U8PL4ol+BZr56g7mm75wy/oFhDgr4h4xtmH6RzDiCa3DUyKyNqUIG +KqAILtxhcSYRFoDWlakwKGY6lGQrrcrcwKZL+d9yEdXxrgsV0qw5y58b3Tmz39vR +A2CapzNmpuUaSIH7jjdiFak6fAKwKsgZysKRilbMLoON2AS+NZmezqMsX2invrPl +QgURzFJZ2iP2i+83Z02nIB3DiHAZOapQwBEfqhdPq6yG5SNFh5ZvLsSPbbEI2jRL +b29ehUYag3ccxe7tvU2nwOWljMg6zKKAVFTxyGRQ7PW5P7FFxYZ6KCW+25wFj2/d +sXfOAnr+TWmftNkCs8HFkKV2EyxPcslHk3hKfBFh+3GqL1UtcvQdM0NxfwQmklG3 +FZ5J+P7UmbZhqXdNIXXtxUa9N7pnEJ1b9sL8DpXd0lCSqjiHwH+euXauouiVcLXd +jl2N0U5M/Qc8tIfeGCxEYm81wTzLi44XcHv62yPqST3UzZ0jYEI= +=jF08 -----END PGP SIGNATURE----- diff --git a/vendor/vimeo/psalm/composer.json b/vendor/vimeo/psalm/composer.json index 7df7c97a..fcce61b5 100644 --- a/vendor/vimeo/psalm/composer.json +++ b/vendor/vimeo/psalm/composer.json @@ -39,6 +39,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, diff --git a/vendor/vimeo/psalm/dictionaries/CallMap.php b/vendor/vimeo/psalm/dictionaries/CallMap.php index 7d8c477b..4f511a04 100644 --- a/vendor/vimeo/psalm/dictionaries/CallMap.php +++ b/vendor/vimeo/psalm/dictionaries/CallMap.php @@ -1679,10 +1679,10 @@ return [ 'DOMDocument::getElementsByTagName' => ['DOMNodeList', 'qualifiedName'=>'string'], 'DOMDocument::getElementsByTagNameNS' => ['DOMNodeList', 'namespace'=>'?string', 'localName'=>'string'], 'DOMDocument::importNode' => ['DOMNode|false', 'node'=>'DOMNode', 'deep='=>'bool'], -'DOMDocument::load' => ['DOMDocument|bool', 'filename'=>'string', 'options='=>'int'], +'DOMDocument::load' => ['bool', 'filename'=>'string', 'options='=>'int'], 'DOMDocument::loadHTML' => ['bool', 'source'=>'non-empty-string', 'options='=>'int'], 'DOMDocument::loadHTMLFile' => ['bool', 'filename'=>'string', 'options='=>'int'], -'DOMDocument::loadXML' => ['DOMDocument|bool', 'source'=>'non-empty-string', 'options='=>'int'], +'DOMDocument::loadXML' => ['bool', 'source'=>'non-empty-string', 'options='=>'int'], 'DOMDocument::normalizeDocument' => ['void'], 'DOMDocument::registerNodeClass' => ['bool', 'baseClass'=>'string', 'extendedClass'=>'?string'], 'DOMDocument::relaxNGValidate' => ['bool', 'filename'=>'string'], @@ -7825,10 +7825,10 @@ return [ 'mysqli::begin_transaction' => ['bool', 'flags='=>'int', 'name='=>'?string'], 'mysqli::change_user' => ['bool', 'username'=>'string', 'password'=>'string', 'database'=>'?string'], 'mysqli::character_set_name' => ['string'], -'mysqli::close' => ['bool'], +'mysqli::close' => ['true'], 'mysqli::commit' => ['bool', 'flags='=>'int', 'name='=>'?string'], 'mysqli::connect' => ['bool', 'hostname='=>'string|null', 'username='=>'string|null', 'password='=>'string|null', 'database='=>'string|null', 'port='=>'int|null', 'socket='=>'string|null'], -'mysqli::debug' => ['bool', 'options'=>'string'], +'mysqli::debug' => ['true', 'options'=>'string'], 'mysqli::dump_debug_info' => ['bool'], 'mysqli::escape_string' => ['string', 'string'=>'string'], 'mysqli::execute_query' => ['mysqli_result|bool', 'query'=>'non-empty-string', 'params='=>'list|null'], @@ -7857,7 +7857,7 @@ return [ 'mysqli::select_db' => ['bool', 'database'=>'string'], 'mysqli::set_charset' => ['bool', 'charset'=>'string'], 'mysqli::set_opt' => ['bool', 'option'=>'int', 'value'=>'string|int'], -'mysqli::ssl_set' => ['bool', 'key'=>'?string', 'certificate'=>'?string', 'ca_certificate'=>'?string', 'ca_path'=>'?string', 'cipher_algos'=>'?string'], +'mysqli::ssl_set' => ['true', 'key'=>'?string', 'certificate'=>'?string', 'ca_certificate'=>'?string', 'ca_path'=>'?string', 'cipher_algos'=>'?string'], 'mysqli::stat' => ['string|false'], 'mysqli::stmt_init' => ['mysqli_stmt'], 'mysqli::store_result' => ['mysqli_result|false', 'mode='=>'int'], @@ -7903,7 +7903,7 @@ return [ 'mysqli_fetch_object' => ['object|false|null', 'result'=>'mysqli_result', 'class='=>'string', 'constructor_args='=>'array'], 'mysqli_fetch_row' => ['list|false|null', 'result'=>'mysqli_result'], 'mysqli_field_count' => ['int', 'mysql'=>'mysqli'], -'mysqli_field_seek' => ['bool', 'result'=>'mysqli_result', 'index'=>'int'], +'mysqli_field_seek' => ['true', 'result'=>'mysqli_result', 'index'=>'int'], 'mysqli_field_tell' => ['int', 'result'=>'mysqli_result'], 'mysqli_free_result' => ['void', 'result'=>'mysqli_result'], 'mysqli_get_cache_stats' => ['array|false'], @@ -7957,7 +7957,7 @@ return [ 'mysqli_result::fetch_fields' => ['list'], 'mysqli_result::fetch_object' => ['object|false|null', 'class='=>'string', 'constructor_args='=>'array'], 'mysqli_result::fetch_row' => ['list|false|null'], -'mysqli_result::field_seek' => ['bool', 'index'=>'int'], +'mysqli_result::field_seek' => ['true', 'index'=>'int'], 'mysqli_result::free' => ['void'], 'mysqli_result::free_result' => ['void'], 'mysqli_rollback' => ['bool', 'mysql'=>'mysqli', 'flags='=>'int', 'name='=>'?string'], @@ -7981,7 +7981,7 @@ return [ 'mysqli_stmt::attr_set' => ['bool', 'attribute'=>'int', 'value'=>'int'], 'mysqli_stmt::bind_param' => ['bool', 'types'=>'string', '&var'=>'mixed', '&...vars='=>'mixed'], 'mysqli_stmt::bind_result' => ['bool', '&w_var1'=>'', '&...w_vars='=>''], -'mysqli_stmt::close' => ['bool'], +'mysqli_stmt::close' => ['true'], 'mysqli_stmt::data_seek' => ['void', 'offset'=>'int'], 'mysqli_stmt::execute' => ['bool', 'params='=>'list|null'], 'mysqli_stmt::fetch' => ['bool|null'], diff --git a/vendor/vimeo/psalm/dictionaries/CallMap_80_delta.php b/vendor/vimeo/psalm/dictionaries/CallMap_80_delta.php index 134b79a0..a9cde9ff 100644 --- a/vendor/vimeo/psalm/dictionaries/CallMap_80_delta.php +++ b/vendor/vimeo/psalm/dictionaries/CallMap_80_delta.php @@ -100,6 +100,22 @@ return [ 'old' => ['DOMNodeList', 'namespace'=>'string', 'localName'=>'string'], 'new' => ['DOMNodeList', 'namespace'=>'?string', 'localName'=>'string'], ], + 'DOMDocument::load' => [ + 'old' => ['DOMDocument|bool', 'filename'=>'string', 'options='=>'int'], + 'new' => ['bool', 'filename'=>'string', 'options='=>'int'], + ], + 'DOMDocument::loadXML' => [ + 'old' => ['DOMDocument|bool', 'source'=>'non-empty-string', 'options='=>'int'], + 'new' => ['bool', 'source'=>'non-empty-string', 'options='=>'int'], + ], + 'DOMDocument::loadHTML' => [ + 'old' => ['DOMDocument|bool', 'source'=>'non-empty-string', 'options='=>'int'], + 'new' => ['bool', 'source'=>'non-empty-string', 'options='=>'int'], + ], + 'DOMDocument::loadHTMLFile' => [ + 'old' => ['DOMDocument|bool', 'filename'=>'string', 'options='=>'int'], + 'new' => ['bool', 'filename'=>'string', 'options='=>'int'], + ], 'DOMImplementation::createDocument' => [ 'old' => ['DOMDocument|false', 'namespace='=>'string', 'qualifiedName='=>'string', 'doctype='=>'DOMDocumentType'], 'new' => ['DOMDocument|false', 'namespace='=>'?string', 'qualifiedName='=>'string', 'doctype='=>'?DOMDocumentType'], @@ -224,6 +240,14 @@ return [ 'old' => ['string', 'locale'=>'string', 'displayLocale='=>'string'], 'new' => ['string', 'locale'=>'string', 'displayLocale='=>'?string'], ], + 'mysqli_field_seek' => [ + 'old' => ['bool', 'result'=>'mysqli_result', 'index'=>'int'], + 'new' => ['true', 'result'=>'mysqli_result', 'index'=>'int'], + ], + 'mysqli_result::field_seek' => [ + 'old' => ['bool', 'index'=>'int'], + 'new' => ['true', 'index'=>'int'], + ], 'mysqli_stmt::__construct' => [ 'old' => ['void', 'mysql'=>'mysqli', 'query='=>'string'], 'new' => ['void', 'mysql'=>'mysqli', 'query='=>'?string'], diff --git a/vendor/vimeo/psalm/dictionaries/CallMap_81_delta.php b/vendor/vimeo/psalm/dictionaries/CallMap_81_delta.php index 3bd304ea..18cc1ae4 100644 --- a/vendor/vimeo/psalm/dictionaries/CallMap_81_delta.php +++ b/vendor/vimeo/psalm/dictionaries/CallMap_81_delta.php @@ -94,6 +94,10 @@ return [ 'old' => ['int|false', 'fields'=>'array', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string'], 'new' => ['int|false', 'fields'=>'array', 'separator='=>'string', 'enclosure='=>'string', 'escape='=>'string', 'eol='=>'string'], ], + 'hash_pbkdf2' => [ + 'old' => ['non-empty-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'binary='=>'bool'], + 'new' => ['non-empty-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'binary='=>'bool', 'options=' => 'array'], + ], 'finfo_buffer' => [ 'old' => ['string|false', 'finfo'=>'resource', 'string'=>'string', 'flags='=>'int', 'context='=>'resource'], 'new' => ['string|false', 'finfo'=>'finfo', 'string'=>'string', 'flags='=>'int', 'context='=>'resource'], diff --git a/vendor/vimeo/psalm/dictionaries/CallMap_83_delta.php b/vendor/vimeo/psalm/dictionaries/CallMap_83_delta.php index 9bcf76de..39ad21c4 100644 --- a/vendor/vimeo/psalm/dictionaries/CallMap_83_delta.php +++ b/vendor/vimeo/psalm/dictionaries/CallMap_83_delta.php @@ -49,10 +49,6 @@ return [ 'old' => ['bool', '&rw_array'=>'array', 'flags='=>'int'], 'new' => ['true', '&rw_array'=>'array', 'flags='=>'int'], ], - 'hash_pbkdf2' => [ - 'old' => ['non-empty-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'binary='=>'bool'], - 'new' => ['non-empty-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'binary='=>'bool', 'options=' => 'array'], - ], 'imap_setflag_full' => [ 'old' => ['bool', 'imap'=>'IMAP\Connection', 'sequence'=>'string', 'flag'=>'string', 'options='=>'int'], 'new' => ['true', 'imap'=>'IMAP\Connection', 'sequence'=>'string', 'flag'=>'string', 'options='=>'int'], diff --git a/vendor/vimeo/psalm/dictionaries/CallMap_historical.php b/vendor/vimeo/psalm/dictionaries/CallMap_historical.php index d20efff9..1e3e862a 100644 --- a/vendor/vimeo/psalm/dictionaries/CallMap_historical.php +++ b/vendor/vimeo/psalm/dictionaries/CallMap_historical.php @@ -733,8 +733,8 @@ return [ 'DOMDocument::getElementsByTagNameNS' => ['DOMNodeList', 'namespace'=>'string', 'localName'=>'string'], 'DOMDocument::importNode' => ['DOMNode|false', 'node'=>'DOMNode', 'deep='=>'bool'], 'DOMDocument::load' => ['DOMDocument|bool', 'filename'=>'string', 'options='=>'int'], - 'DOMDocument::loadHTML' => ['bool', 'source'=>'non-empty-string', 'options='=>'int'], - 'DOMDocument::loadHTMLFile' => ['bool', 'filename'=>'string', 'options='=>'int'], + 'DOMDocument::loadHTML' => ['DOMDocument|bool', 'source'=>'non-empty-string', 'options='=>'int'], + 'DOMDocument::loadHTMLFile' => ['DOMDocument|bool', 'filename'=>'string', 'options='=>'int'], 'DOMDocument::loadXML' => ['DOMDocument|bool', 'source'=>'non-empty-string', 'options='=>'int'], 'DOMDocument::normalizeDocument' => ['void'], 'DOMDocument::registerNodeClass' => ['bool', 'baseClass'=>'string', 'extendedClass'=>'?string'], @@ -12737,10 +12737,10 @@ return [ 'mysqli::begin_transaction' => ['bool', 'flags='=>'int', 'name='=>'string'], 'mysqli::change_user' => ['bool', 'username'=>'string', 'password'=>'string', 'database'=>'?string'], 'mysqli::character_set_name' => ['string'], - 'mysqli::close' => ['bool'], + 'mysqli::close' => ['true'], 'mysqli::commit' => ['bool', 'flags='=>'int', 'name='=>'string'], 'mysqli::connect' => ['null|false', 'hostname='=>'string', 'username='=>'string', 'password='=>'string', 'database='=>'string', 'port='=>'int', 'socket='=>'string'], - 'mysqli::debug' => ['bool', 'options'=>'string'], + 'mysqli::debug' => ['true', 'options'=>'string'], 'mysqli::dump_debug_info' => ['bool'], 'mysqli::escape_string' => ['string', 'string'=>'string'], 'mysqli::get_charset' => ['object'], @@ -12768,7 +12768,7 @@ return [ 'mysqli::select_db' => ['bool', 'database'=>'string'], 'mysqli::set_charset' => ['bool', 'charset'=>'string'], 'mysqli::set_opt' => ['bool', 'option'=>'int', 'value'=>'string|int'], - 'mysqli::ssl_set' => ['bool', 'key'=>'?string', 'certificate'=>'?string', 'ca_certificate'=>'?string', 'ca_path'=>'?string', 'cipher_algos'=>'?string'], + 'mysqli::ssl_set' => ['true', 'key'=>'?string', 'certificate'=>'?string', 'ca_certificate'=>'?string', 'ca_path'=>'?string', 'cipher_algos'=>'?string'], 'mysqli::stat' => ['string|false'], 'mysqli::stmt_init' => ['mysqli_stmt'], 'mysqli::store_result' => ['mysqli_result|false', 'mode='=>'int'], @@ -12889,7 +12889,7 @@ return [ 'mysqli_stmt::attr_set' => ['bool', 'attribute'=>'int', 'value'=>'int'], 'mysqli_stmt::bind_param' => ['bool', 'types'=>'string', '&var'=>'mixed', '&...vars='=>'mixed'], 'mysqli_stmt::bind_result' => ['bool', '&w_var1'=>'', '&...w_vars='=>''], - 'mysqli_stmt::close' => ['bool'], + 'mysqli_stmt::close' => ['true'], 'mysqli_stmt::data_seek' => ['void', 'offset'=>'int'], 'mysqli_stmt::execute' => ['bool'], 'mysqli_stmt::fetch' => ['bool|null'], diff --git a/vendor/vimeo/psalm/src/Psalm/Codebase.php b/vendor/vimeo/psalm/src/Psalm/Codebase.php index 56a9aab5..c56145a1 100644 --- a/vendor/vimeo/psalm/src/Psalm/Codebase.php +++ b/vendor/vimeo/psalm/src/Psalm/Codebase.php @@ -699,6 +699,7 @@ final class Codebase ); } + /** @psalm-mutation-free */ public function classExtendsOrImplements(string $fq_class_name, string $possible_parent): bool { return $this->classlikes->classExtends($fq_class_name, $possible_parent) diff --git a/vendor/vimeo/psalm/src/Psalm/Config.php b/vendor/vimeo/psalm/src/Psalm/Config.php index e84a134f..1439c9bb 100644 --- a/vendor/vimeo/psalm/src/Psalm/Config.php +++ b/vendor/vimeo/psalm/src/Psalm/Config.php @@ -42,7 +42,6 @@ use Psalm\Progress\Progress; use Psalm\Progress\VoidProgress; use RuntimeException; use SimpleXMLElement; -use SimpleXMLIterator; use Symfony\Component\Filesystem\Path; use Throwable; use UnexpectedValueException; @@ -728,8 +727,6 @@ class Config $this->eventDispatcher = new EventDispatcher(); $this->universal_object_crates = [ strtolower(stdClass::class), - strtolower(SimpleXMLElement::class), - strtolower(SimpleXMLIterator::class), ]; } @@ -1030,7 +1027,6 @@ class Config /** * @param non-empty-string $file_contents - * @psalm-suppress MixedMethodCall * @psalm-suppress MixedAssignment * @psalm-suppress MixedArgument * @psalm-suppress MixedPropertyFetch @@ -1161,12 +1157,13 @@ class Config } if (isset($config_xml['autoloader'])) { - $autoloader_path = $config->base_dir . DIRECTORY_SEPARATOR . $config_xml['autoloader']; + $autoloader = (string) $config_xml['autoloader']; + $autoloader_path = $config->base_dir . DIRECTORY_SEPARATOR . $autoloader; if (!file_exists($autoloader_path)) { // in here for legacy reasons where people put absolute paths but psalm resolved it relative - if ($config_xml['autoloader']->__toString()[0] === '/') { - $autoloader_path = $config_xml['autoloader']->__toString(); + if ($autoloader[0] === '/') { + $autoloader_path = $autoloader; } if (!file_exists($autoloader_path)) { @@ -1312,7 +1309,7 @@ class Config ); } - if (isset($config_xml->fileExtensions)) { + if (isset($config_xml->fileExtensions->extension)) { $config->file_extensions = []; $config->loadFileExtensions($config_xml->fileExtensions->extension); @@ -1336,7 +1333,6 @@ class Config if (isset($config_xml->ignoreExceptions)) { if (isset($config_xml->ignoreExceptions->class)) { - /** @var SimpleXMLElement $exception_class */ foreach ($config_xml->ignoreExceptions->class as $exception_class) { $exception_name = (string) $exception_class['name']; $global_attribute_text = (string) $exception_class['onlyGlobalScope']; @@ -1347,7 +1343,6 @@ class Config } } if (isset($config_xml->ignoreExceptions->classAndDescendants)) { - /** @var SimpleXMLElement $exception_class */ foreach ($config_xml->ignoreExceptions->classAndDescendants as $exception_class) { $exception_name = (string) $exception_class['name']; $global_attribute_text = (string) $exception_class['onlyGlobalScope']; @@ -1401,7 +1396,6 @@ class Config // this plugin loading system borrows heavily from etsy/phan if (isset($config_xml->plugins)) { if (isset($config_xml->plugins->plugin)) { - /** @var SimpleXMLElement $plugin */ foreach ($config_xml->plugins->plugin as $plugin) { $plugin_file_name = (string) $plugin['filename']; @@ -1413,7 +1407,6 @@ class Config } } if (isset($config_xml->plugins->pluginClass)) { - /** @var SimpleXMLElement $plugin */ foreach ($config_xml->plugins->pluginClass as $plugin) { $plugin_class_name = $plugin['class']; // any child elements are used as plugin configuration @@ -1429,21 +1422,23 @@ class Config if (isset($config_xml->issueHandlers)) { foreach ($config_xml->issueHandlers as $issue_handlers) { - /** @var SimpleXMLElement $issue_handler */ - foreach ($issue_handlers->children() as $key => $issue_handler) { - if ($key === 'PluginIssue') { - $custom_class_name = (string) $issue_handler['name']; - /** @var string $key */ - $config->issue_handlers[$custom_class_name] = IssueHandler::loadFromXMLElement( - $issue_handler, - $base_dir, - ); - } else { - /** @var string $key */ - $config->issue_handlers[$key] = IssueHandler::loadFromXMLElement( - $issue_handler, - $base_dir, - ); + $issue_handler_children = $issue_handlers->children(); + if ($issue_handler_children) { + foreach ($issue_handler_children as $key => $issue_handler) { + if ($key === 'PluginIssue') { + $custom_class_name = (string)$issue_handler['name']; + /** @var string $key */ + $config->issue_handlers[$custom_class_name] = IssueHandler::loadFromXMLElement( + $issue_handler, + $base_dir, + ); + } else { + /** @var string $key */ + $config->issue_handlers[$key] = IssueHandler::loadFromXMLElement( + $issue_handler, + $base_dir, + ); + } } } } @@ -2263,6 +2258,10 @@ class Config $stubsDir . 'SPL.phpstub', ]; + if ($codebase->analysis_php_version_id >= 7_04_00) { + $this->internal_stubs[] = $stubsDir . 'Php74.phpstub'; + } + if ($codebase->analysis_php_version_id >= 8_00_00) { $this->internal_stubs[] = $stubsDir . 'CoreGenericAttributes.phpstub'; $this->internal_stubs[] = $stubsDir . 'Php80.phpstub'; diff --git a/vendor/vimeo/psalm/src/Psalm/Config/FileFilter.php b/vendor/vimeo/psalm/src/Psalm/Config/FileFilter.php index 6e51d088..8ca44094 100644 --- a/vendor/vimeo/psalm/src/Psalm/Config/FileFilter.php +++ b/vendor/vimeo/psalm/src/Psalm/Config/FileFilter.php @@ -389,7 +389,6 @@ class FileFilter if ($e->directory) { $config['directory'] = []; - /** @var SimpleXMLElement $directory */ foreach ($e->directory as $directory) { $config['directory'][] = [ 'name' => (string) $directory['name'], @@ -402,7 +401,6 @@ class FileFilter if ($e->file) { $config['file'] = []; - /** @var SimpleXMLElement $file */ foreach ($e->file as $file) { $config['file'][]['name'] = (string) $file['name']; } @@ -410,7 +408,6 @@ class FileFilter if ($e->referencedClass) { $config['referencedClass'] = []; - /** @var SimpleXMLElement $referenced_class */ foreach ($e->referencedClass as $referenced_class) { $config['referencedClass'][]['name'] = strtolower((string)$referenced_class['name']); } @@ -418,7 +415,6 @@ class FileFilter if ($e->referencedMethod) { $config['referencedMethod'] = []; - /** @var SimpleXMLElement $referenced_method */ foreach ($e->referencedMethod as $referenced_method) { $config['referencedMethod'][]['name'] = (string)$referenced_method['name']; } @@ -426,7 +422,6 @@ class FileFilter if ($e->referencedFunction) { $config['referencedFunction'] = []; - /** @var SimpleXMLElement $referenced_function */ foreach ($e->referencedFunction as $referenced_function) { $config['referencedFunction'][]['name'] = strtolower((string)$referenced_function['name']); } @@ -434,7 +429,6 @@ class FileFilter if ($e->referencedProperty) { $config['referencedProperty'] = []; - /** @var SimpleXMLElement $referenced_property */ foreach ($e->referencedProperty as $referenced_property) { $config['referencedProperty'][]['name'] = strtolower((string)$referenced_property['name']); } @@ -442,7 +436,6 @@ class FileFilter if ($e->referencedConstant) { $config['referencedConstant'] = []; - /** @var SimpleXMLElement $referenced_constant */ foreach ($e->referencedConstant as $referenced_constant) { $config['referencedConstant'][]['name'] = strtolower((string)$referenced_constant['name']); } @@ -450,8 +443,6 @@ class FileFilter if ($e->referencedVariable) { $config['referencedVariable'] = []; - - /** @var SimpleXMLElement $referenced_variable */ foreach ($e->referencedVariable as $referenced_variable) { $config['referencedVariable'][]['name'] = strtolower((string)$referenced_variable['name']); } diff --git a/vendor/vimeo/psalm/src/Psalm/Config/IssueHandler.php b/vendor/vimeo/psalm/src/Psalm/Config/IssueHandler.php index 258b16d9..48791659 100644 --- a/vendor/vimeo/psalm/src/Psalm/Config/IssueHandler.php +++ b/vendor/vimeo/psalm/src/Psalm/Config/IssueHandler.php @@ -38,9 +38,10 @@ final class IssueHandler } } - /** @var SimpleXMLElement $error_level */ - foreach ($e->errorLevel as $error_level) { - $handler->custom_levels[] = ErrorLevelFileFilter::loadFromXMLElement($error_level, $base_dir, true); + if (isset($e->errorLevel)) { + foreach ($e->errorLevel as $error_level) { + $handler->custom_levels[] = ErrorLevelFileFilter::loadFromXMLElement($error_level, $base_dir, true); + } } return $handler; diff --git a/vendor/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php b/vendor/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php index 8513f98f..0395e227 100644 --- a/vendor/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php +++ b/vendor/vimeo/psalm/src/Psalm/Config/ProjectFileFilter.php @@ -28,7 +28,6 @@ final class ProjectFileFilter extends FileFilter throw new ConfigException('Cannot nest ignoreFiles inside itself'); } - /** @var SimpleXMLElement $e->ignoreFiles */ $filter->file_filter = static::loadFromXMLElement($e->ignoreFiles, $base_dir, false); } diff --git a/vendor/vimeo/psalm/src/Psalm/Context.php b/vendor/vimeo/psalm/src/Psalm/Context.php index fea57cf9..bf732295 100644 --- a/vendor/vimeo/psalm/src/Psalm/Context.php +++ b/vendor/vimeo/psalm/src/Psalm/Context.php @@ -12,7 +12,8 @@ use Psalm\Internal\Scope\LoopScope; use Psalm\Internal\Type\AssertionReconciler; use Psalm\Storage\FunctionLikeStorage; use Psalm\Type\Atomic\DependentType; -use Psalm\Type\Atomic\TArray; +use Psalm\Type\Atomic\TIntRange; +use Psalm\Type\Atomic\TNull; use Psalm\Type\Union; use RuntimeException; @@ -868,10 +869,19 @@ final class Context public function defineGlobals(): void { $globals = [ + // not sure why this is declared here again, see VariableFetchAnalyzer '$argv' => new Union([ - new TArray([Type::getInt(), Type::getString()]), + Type::getNonEmptyListAtomic(Type::getString()), + new TNull(), + ], [ + 'ignore_nullable_issues' => true, + ]), + '$argc' => new Union([ + new TIntRange(1, null), + new TNull(), + ], [ + 'ignore_nullable_issues' => true, ]), - '$argc' => Type::getInt(), ]; $config = Config::getInstance(); diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php index a418a52b..6be055ea 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/ProjectAnalyzer.php @@ -200,6 +200,10 @@ class ProjectAnalyzer UnnecessaryVarAnnotation::class, ]; + private const PHP_VERSION_REGEX = '^(0|[1-9]\d*)\.(0|[1-9]\d*)(?:\..*)?$'; + + private const PHP_SUPPORTED_VERSIONS_REGEX = '^(5\.[456]|7\.[01234]|8\.[0123])(\..*)?$'; + /** * @param array $generated_report_options */ @@ -1179,8 +1183,16 @@ class ProjectAnalyzer */ public function setPhpVersion(string $version, string $source): void { - if (!preg_match('/^(5\.[456]|7\.[01234]|8\.[012])(\..*)?$/', $version)) { - throw new UnexpectedValueException('Expecting a version number in the format x.y'); + if (!preg_match('/' . self::PHP_VERSION_REGEX . '/', $version)) { + throw new UnexpectedValueException('Expecting a version number in the format x.y or x.y.z'); + } + + if (!preg_match('/' . self::PHP_SUPPORTED_VERSIONS_REGEX . '/', $version)) { + throw new UnexpectedValueException( + 'Psalm supports PHP version ">=5.4". The specified version ' + . $version + . " is either not supported or doesn't exist.", + ); } [$php_major_version, $php_minor_version] = explode('.', $version); diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php index bb55c91f..905dc3d8 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php @@ -755,20 +755,6 @@ class ForeachAnalyzer $has_valid_iterator = true; - if ($iterator_atomic_type instanceof TNamedObject - && strtolower($iterator_atomic_type->value) === 'simplexmlelement' - ) { - $value_type = Type::combineUnionTypes( - $value_type, - new Union([$iterator_atomic_type]), - ); - - $key_type = Type::combineUnionTypes( - $key_type, - Type::getString(), - ); - } - if ($iterator_atomic_type instanceof TIterable || (strtolower($iterator_atomic_type->value) === 'traversable' || $codebase->classImplements( diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php index 4773c21b..437f65d7 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php @@ -29,6 +29,7 @@ use Psalm\Issue\UndefinedMethod; use Psalm\IssueBuffer; use Psalm\Type; use Psalm\Type\Atomic\TNamedObject; +use Psalm\Type\Atomic\TObject; use Psalm\Type\Atomic\TTemplateParam; use Psalm\Type\Union; @@ -412,7 +413,7 @@ class MethodCallAnalyzer extends CallAnalyzer $types = $class_type->getAtomicTypes(); foreach ($types as $key => &$type) { - if (!$type instanceof TNamedObject) { + if (!$type instanceof TNamedObject && !$type instanceof TObject) { unset($types[$key]); } else { $type = $type->setFromDocblock(false); diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php index 2567ca86..9c6d85d7 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php @@ -1737,8 +1737,12 @@ class ArrayFetchAnalyzer ?Union &$array_access_type, bool &$has_array_access ): void { - if (strtolower($type->value) === 'simplexmlelement') { - $call_array_access_type = new Union([new TNamedObject('SimpleXMLElement')]); + $codebase = $statements_analyzer->getCodebase(); + if (strtolower($type->value) === 'simplexmlelement' + || ($codebase->classExists($type->value) + && $codebase->classExtendsOrImplements($type->value, 'SimpleXMLElement')) + ) { + $call_array_access_type = new Union([new TNull(), new TNamedObject('SimpleXMLElement')]); } elseif (strtolower($type->value) === 'domnodelist' && $stmt->dim) { $old_data_provider = $statements_analyzer->node_data; diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php index 66367938..d6289b66 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/AtomicPropertyFetchAnalyzer.php @@ -228,7 +228,7 @@ class AtomicPropertyFetchAnalyzer self::handleEnumValue($statements_analyzer, $stmt, $stmt_var_type, $class_storage); } elseif ($prop_name === 'name') { $has_valid_fetch_type = true; - self::handleEnumName($statements_analyzer, $stmt, $lhs_type_part); + self::handleEnumName($statements_analyzer, $stmt, $stmt_var_type, $class_storage); } else { self::handleNonExistentProperty( $statements_analyzer, @@ -979,16 +979,31 @@ class AtomicPropertyFetchAnalyzer private static function handleEnumName( StatementsAnalyzer $statements_analyzer, PropertyFetch $stmt, - Atomic $lhs_type_part + Union $stmt_var_type, + ClassLikeStorage $class_storage ): void { - if ($lhs_type_part instanceof TEnumCase) { - $statements_analyzer->node_data->setType( - $stmt, - new Union([Type::getAtomicStringFromLiteral($lhs_type_part->case_name)]), - ); - } else { - $statements_analyzer->node_data->setType($stmt, Type::getNonEmptyString()); + $relevant_enum_cases = array_filter( + $stmt_var_type->getAtomicTypes(), + static fn(Atomic $type): bool => $type instanceof TEnumCase, + ); + $relevant_enum_case_names = array_map( + static fn(TEnumCase $enumCase): string => $enumCase->case_name, + $relevant_enum_cases, + ); + + if (empty($relevant_enum_case_names)) { + $relevant_enum_case_names = array_keys($class_storage->enum_cases); } + + $statements_analyzer->node_data->setType( + $stmt, + empty($relevant_enum_case_names) + ? Type::getNonEmptyString() + : new Union(array_map( + fn(string $name): TString => Type::getAtomicStringFromLiteral($name), + $relevant_enum_case_names, + )), + ); } private static function handleEnumValue( diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php index 6b5d2069..a9db2fea 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Analyzer/Statements/Expression/IssetAnalyzer.php @@ -3,9 +3,12 @@ namespace Psalm\Internal\Analyzer\Statements\Expression; use PhpParser; +use Psalm\CodeLocation; use Psalm\Context; use Psalm\Internal\Analyzer\Statements\ExpressionAnalyzer; use Psalm\Internal\Analyzer\StatementsAnalyzer; +use Psalm\Issue\InvalidArgument; +use Psalm\IssueBuffer; use Psalm\Type; /** @@ -30,6 +33,15 @@ class IssetAnalyzer $context->vars_in_scope[$var_id] = Type::getMixed(); $context->vars_possibly_in_scope[$var_id] = true; } + } elseif (!self::isValidStatement($isset_var)) { + IssueBuffer::maybeAdd( + new InvalidArgument( + 'Isset only works with variables and array elements', + new CodeLocation($statements_analyzer->getSource(), $isset_var), + 'empty', + ), + $statements_analyzer->getSuppressedIssues(), + ); } self::analyzeIssetVar($statements_analyzer, $isset_var, $context); @@ -49,4 +61,15 @@ class IssetAnalyzer $context->inside_isset = false; } + + private static function isValidStatement(PhpParser\Node\Expr $stmt): bool + { + return $stmt instanceof PhpParser\Node\Expr\Variable + || $stmt instanceof PhpParser\Node\Expr\ArrayDimFetch + || $stmt instanceof PhpParser\Node\Expr\PropertyFetch + || $stmt instanceof PhpParser\Node\Expr\StaticPropertyFetch + || $stmt instanceof PhpParser\Node\Expr\NullsafePropertyFetch + || $stmt instanceof PhpParser\Node\Expr\ClassConstFetch + || $stmt instanceof PhpParser\Node\Expr\AssignRef; + } } diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/CliUtils.php b/vendor/vimeo/psalm/src/Psalm/Internal/CliUtils.php index 1e5a1abd..03328e0d 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/CliUtils.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/CliUtils.php @@ -12,6 +12,7 @@ use Psalm\Exception\ConfigNotFoundException; use Psalm\Internal\Analyzer\ProjectAnalyzer; use Psalm\Report; use RuntimeException; +use UnexpectedValueException; use function array_filter; use function array_key_exists; @@ -485,7 +486,15 @@ final class CliUtils } if ($version !== null && $source !== null) { - $project_analyzer->setPhpVersion($version, $source); + try { + $project_analyzer->setPhpVersion($version, $source); + } catch (UnexpectedValueException $e) { + fwrite( + STDERR, + $e->getMessage() . PHP_EOL, + ); + exit(1); + } } } diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php b/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php index 15953d98..a7045a43 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Codebase/ClassLikes.php @@ -597,6 +597,7 @@ class ClassLikes /** * Determine whether or not a class extends a parent * + * @psalm-mutation-free * @throws UnpopulatedClasslikeException when called on unpopulated class * @throws InvalidArgumentException when class does not exist */ @@ -620,6 +621,8 @@ class ClassLikes /** * Check whether a class implements an interface + * + * @psalm-mutation-free */ public function classImplements(string $fq_class_name, string $interface): bool { diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php b/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php index cc358753..ed6b879d 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/LanguageServer.php @@ -23,7 +23,6 @@ use LanguageServerProtocol\CodeDescription; use LanguageServerProtocol\CompletionOptions; use LanguageServerProtocol\Diagnostic; use LanguageServerProtocol\DiagnosticSeverity; -use LanguageServerProtocol\ExecuteCommandOptions; use LanguageServerProtocol\InitializeResult; use LanguageServerProtocol\InitializeResultServerInfo; use LanguageServerProtocol\LogMessage; @@ -446,9 +445,6 @@ class LanguageServer extends Dispatcher $serverCapabilities = new ServerCapabilities(); - //The server provides execute command support. - $serverCapabilities->executeCommandProvider = new ExecuteCommandOptions(['test']); - $textDocumentSyncOptions = new TextDocumentSyncOptions(); //Open and close notifications are sent to the server. diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php b/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php index 508af5ae..cb359d5b 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/LanguageServer/Server/TextDocument.php @@ -455,25 +455,6 @@ class TextDocument ], ]), ); - - /* - $fixers["fixAll.{$diagnostic->data->type}"] = new CodeAction( - "FixAll {$diagnostic->data->type} for this file", - CodeActionKind::QUICK_FIX, - null, - null, - null, - null, - new Command( - "Fix All", - "psalm.fixall", - [ - 'uri' => $textDocument->uri, - 'type' => $diagnostic->data->type - ] - ) - ); - */ } if (empty($fixers)) { diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php b/vendor/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php index cd06f4a8..bba8d867 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Provider/MethodReturnTypeProvider.php @@ -11,7 +11,6 @@ use Psalm\Internal\Provider\ReturnTypeProvider\DateTimeModifyReturnTypeProvider; use Psalm\Internal\Provider\ReturnTypeProvider\DomNodeAppendChild; use Psalm\Internal\Provider\ReturnTypeProvider\ImagickPixelColorReturnTypeProvider; use Psalm\Internal\Provider\ReturnTypeProvider\PdoStatementReturnTypeProvider; -use Psalm\Internal\Provider\ReturnTypeProvider\SimpleXmlElementAsXml; use Psalm\Plugin\EventHandler\Event\MethodReturnTypeProviderEvent; use Psalm\Plugin\EventHandler\MethodReturnTypeProviderInterface; use Psalm\StatementsSource; @@ -39,7 +38,6 @@ class MethodReturnTypeProvider $this->registerClass(DomNodeAppendChild::class); $this->registerClass(ImagickPixelColorReturnTypeProvider::class); - $this->registerClass(SimpleXmlElementAsXml::class); $this->registerClass(PdoStatementReturnTypeProvider::class); $this->registerClass(ClosureFromCallableReturnTypeProvider::class); $this->registerClass(DateTimeModifyReturnTypeProvider::class); diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SimpleXmlElementAsXml.php b/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SimpleXmlElementAsXml.php deleted file mode 100644 index 612ebdb8..00000000 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SimpleXmlElementAsXml.php +++ /dev/null @@ -1,34 +0,0 @@ -getCallArgs(); - $method_name_lowercase = $event->getMethodNameLowercase(); - if ($method_name_lowercase === 'asxml' - && !count($call_args) - ) { - return Type::parseString('string|false'); - } - - return null; - } -} diff --git a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SprintfReturnTypeProvider.php b/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SprintfReturnTypeProvider.php index 8c9af941..cca21b07 100644 --- a/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SprintfReturnTypeProvider.php +++ b/vendor/vimeo/psalm/src/Psalm/Internal/Provider/ReturnTypeProvider/SprintfReturnTypeProvider.php @@ -4,6 +4,7 @@ namespace Psalm\Internal\Provider\ReturnTypeProvider; use ArgumentCountError; use Psalm\Issue\InvalidArgument; +use Psalm\Issue\RedundantFunctionCall; use Psalm\Issue\TooFewArguments; use Psalm\Issue\TooManyArguments; use Psalm\IssueBuffer; @@ -25,6 +26,7 @@ use function count; use function is_string; use function preg_match; use function sprintf; +use function strlen; /** * @internal @@ -47,6 +49,11 @@ class SprintfReturnTypeProvider implements FunctionReturnTypeProviderInterface $statements_source = $event->getStatementsSource(); $call_args = $event->getCallArgs(); + // invalid - will already report an error for the params anyway + if (count($call_args) < 1) { + return null; + } + $has_splat_args = false; $node_type_provider = $statements_source->getNodeTypeProvider(); foreach ($call_args as $call_arg) { @@ -67,17 +74,29 @@ class SprintfReturnTypeProvider implements FunctionReturnTypeProviderInterface // eventually this could be refined // to check if it's an array with literal string as first element for further checking if (count($call_args) === 1 && $has_splat_args === true) { + IssueBuffer::maybeAdd( + new RedundantFunctionCall( + 'Using the splat operator is redundant, as v' . $event->getFunctionId() + . ' without splat operator can be used instead of ' . $event->getFunctionId(), + $event->getCodeLocation(), + ), + $statements_source->getSuppressedIssues(), + ); + return null; } // it makes no sense to use sprintf when there is only 1 arg (the format) // as it wouldn't have any placeholders - if (count($call_args) === 1 && $event->getFunctionId() === 'sprintf') { + // if it's a literal string, we can check it further though! + $first_arg_type = $node_type_provider->getType($call_args[0]->value); + if (count($call_args) === 1 + && ($first_arg_type === null || !$first_arg_type->isSingleStringLiteral())) { IssueBuffer::maybeAdd( - new TooFewArguments( - 'Too few arguments for ' . $event->getFunctionId() . ', expecting at least 2 arguments', + new RedundantFunctionCall( + 'Using ' . $event->getFunctionId() + . ' with a single argument is redundant, since there are no placeholder params to be substituted', $event->getCodeLocation(), - $event->getFunctionId(), ), $statements_source->getSuppressedIssues(), ); @@ -89,7 +108,10 @@ class SprintfReturnTypeProvider implements FunctionReturnTypeProviderInterface $is_falsable = true; foreach ($call_args as $index => $call_arg) { $type = $node_type_provider->getType($call_arg->value); + if ($type === null && $index === 0 && $event->getFunctionId() === 'printf') { + // printf only has the format validated above + // don't change the return type break; } @@ -100,10 +122,9 @@ class SprintfReturnTypeProvider implements FunctionReturnTypeProviderInterface if ($index === 0 && $type->isSingleStringLiteral()) { if ($type->getSingleStringLiteral()->value === '') { IssueBuffer::maybeAdd( - new InvalidArgument( - 'Argument 1 of ' . $event->getFunctionId() . ' must not be an empty string', + new RedundantFunctionCall( + 'Calling ' . $event->getFunctionId() . ' with an empty first argument does nothing', $event->getCodeLocation(), - $event->getFunctionId(), ), $statements_source->getSuppressedIssues(), ); @@ -158,17 +179,48 @@ class SprintfReturnTypeProvider implements FunctionReturnTypeProviderInterface $initial_result = $result; if ($result === $type->getSingleStringLiteral()->value) { - IssueBuffer::maybeAdd( - new InvalidArgument( - 'Argument 1 of ' . $event->getFunctionId() - . ' does not contain any placeholders', - $event->getCodeLocation(), - $event->getFunctionId(), - ), - $statements_source->getSuppressedIssues(), - ); + if (count($call_args) > 1) { + // we need to report this here too, since we return early without further validation + // otherwise people who have suspended RedundantFunctionCall errors + // will not get an error for this + IssueBuffer::maybeAdd( + new TooManyArguments( + 'Too many arguments for the number of placeholders in ' + . $event->getFunctionId(), + $event->getCodeLocation(), + $event->getFunctionId(), + ), + $statements_source->getSuppressedIssues(), + ); + } - return null; + // the same error as above, but we have validated the pattern now + if (count($call_args) === 1) { + IssueBuffer::maybeAdd( + new RedundantFunctionCall( + 'Using ' . $event->getFunctionId() + . ' with a single argument is redundant,' + . ' since there are no placeholder params to be substituted', + $event->getCodeLocation(), + ), + $statements_source->getSuppressedIssues(), + ); + } else { + IssueBuffer::maybeAdd( + new RedundantFunctionCall( + 'Argument 1 of ' . $event->getFunctionId() + . ' does not contain any placeholders', + $event->getCodeLocation(), + ), + $statements_source->getSuppressedIssues(), + ); + } + + if ($event->getFunctionId() === 'printf') { + return Type::getInt(false, strlen($type->getSingleStringLiteral()->value)); + } + + return $type; } } } catch (ValueError $value_error) { diff --git a/vendor/vimeo/psalm/src/Psalm/Type/Atomic.php b/vendor/vimeo/psalm/src/Psalm/Type/Atomic.php index 5eacc03f..d54d1a6e 100644 --- a/vendor/vimeo/psalm/src/Psalm/Type/Atomic.php +++ b/vendor/vimeo/psalm/src/Psalm/Type/Atomic.php @@ -323,7 +323,7 @@ abstract class Atomic implements TypeNode return $analysis_php_version_id !== null ? new TNamedObject($value) : new TScalar(); case 'null': - if ($analysis_php_version_id === null || $analysis_php_version_id >= 8_00_00) { + if ($analysis_php_version_id === null || $analysis_php_version_id >= 7_00_00) { return new TNull(); } diff --git a/vendor/vimeo/psalm/src/Psalm/Type/Reconciler.php b/vendor/vimeo/psalm/src/Psalm/Type/Reconciler.php index 074ef233..1ae92b40 100644 --- a/vendor/vimeo/psalm/src/Psalm/Type/Reconciler.php +++ b/vendor/vimeo/psalm/src/Psalm/Type/Reconciler.php @@ -424,6 +424,10 @@ class Reconciler { foreach ($new_types as $nk => $type) { if (strpos($nk, '[') || strpos($nk, '->')) { + $type = array_values($type); + if (!isset($type[0][0])) { + continue; + } if ($type[0][0] instanceof IsEqualIsset || $type[0][0] instanceof IsIsset || $type[0][0] instanceof NonEmpty diff --git a/vendor/vimeo/psalm/stubs/CoreGenericFunctions.phpstub b/vendor/vimeo/psalm/stubs/CoreGenericFunctions.phpstub index 6603f130..2a5a74d7 100644 --- a/vendor/vimeo/psalm/stubs/CoreGenericFunctions.phpstub +++ b/vendor/vimeo/psalm/stubs/CoreGenericFunctions.phpstub @@ -1359,9 +1359,10 @@ function realpath(string $path) {} * * @param numeric-string $num1 * @param numeric-string $num2 + * @param int|null $scale * @return (PHP_MAJOR_VERSION is 8 ? numeric-string : ($num2 is "0" ? null : numeric-string)) */ -function bcdiv(string $num1, string $num2, int $scale = 0): ?string {} +function bcdiv(string $num1, string $num2, ?int $scale = null): ?string {} /** * @psalm-pure diff --git a/vendor/vimeo/psalm/stubs/Php74.phpstub b/vendor/vimeo/psalm/stubs/Php74.phpstub new file mode 100644 index 00000000..4ade3a6d --- /dev/null +++ b/vendor/vimeo/psalm/stubs/Php74.phpstub @@ -0,0 +1,11 @@ + return + * + * @param null|string|array $allowed_tags + */ +function strip_tags(string $string, null|string|array $allowed_tags = null) : string {} diff --git a/vendor/vimeo/psalm/stubs/extensions/dom.phpstub b/vendor/vimeo/psalm/stubs/extensions/dom.phpstub index 5b42368c..f5215378 100644 --- a/vendor/vimeo/psalm/stubs/extensions/dom.phpstub +++ b/vendor/vimeo/psalm/stubs/extensions/dom.phpstub @@ -471,13 +471,13 @@ class DOMDocument extends DOMNode implements DOMParentNode public function importNode(DOMNode $node, bool $deep = false) {} /** - * @return DOMDocument|false + * @return bool * @psalm-ignore-falsable-return **/ public function load(string $filename, int $options = 0) {} /** - * @return DOMDocument|false + * @return bool * @psalm-ignore-falsable-return */ public function loadXML(string $source, int $options = 0) {} @@ -492,10 +492,10 @@ class DOMDocument extends DOMNode implements DOMParentNode */ public function save(string $filename, int $options = 0) {} - /** @return DOMDocument|bool */ + /** @return bool */ public function loadHTML(string $source, int $options = 0) {} - /** @return DOMDocument|bool */ + /** @return bool */ public function loadHTMLFile(string $filename, int $options = 0) {} /** diff --git a/vendor/vimeo/psalm/stubs/extensions/simplexml.phpstub b/vendor/vimeo/psalm/stubs/extensions/simplexml.phpstub index 5c2fb2f5..7f0bfa21 100644 --- a/vendor/vimeo/psalm/stubs/extensions/simplexml.phpstub +++ b/vendor/vimeo/psalm/stubs/extensions/simplexml.phpstub @@ -25,6 +25,7 @@ function simplexml_import_dom(SimpleXMLElement|DOMNode $node, ?string $class_nam /** * @implements Traversable + * @psalm-no-seal-properties */ class SimpleXMLElement implements Traversable, Countable { @@ -63,6 +64,8 @@ class SimpleXMLElement implements Traversable, Countable public function __toString(): string {} public function count(): int {} + + public function __get(string $name): SimpleXMLElement|SimpleXMLIterator|null {} } /**