php-parser/CHANGELOG.md

137 lines
6.5 KiB
Markdown
Raw Normal View History

2014-11-04 23:12:35 +01:00
Version 1.0.3-dev
2012-04-23 14:14:52 +02:00
-----------------
2015-01-18 00:09:30 +01:00
* Methods that do not specify an explicit visibility (e.g. `function method()`) will now have the `MODIFIER_PUBLIC`
flag set. This also means that their `isPublic()` method will return true.
* Declaring a property as abstract or static is now an error.
* The `Lexer` and `Lexer\Emulative` classes now accept an `$options` array in their constructors. Currently only the
`usedAttributes` option is supported, which determines which attributes will be added to AST nodes. In particular
it is now possible to add information on the token and file positions corresponding to a node. For more details see
the [Lexer component](https://github.com/nikic/PHP-Parser/blob/master/doc/component/Lexer.markdown) documentation.
* Node visitors can now return `NodeTraverser::DONT_TRAVERSE_CHILDREN` from `enterNode()` in order to skip all children
of the current node, for all visitors.
* Added builders for traits and namespaces.
* The class, interface, trait, function, method and property builders now support adding doc comments using the
`setDocComment()` method.
* Added support for fully-qualified and namespace-relative names in builders. No longer allow use of name component
arrays.
* Do not add documentation and tests to distribution archive files.
2014-10-14 21:40:07 +02:00
2014-11-04 23:12:35 +01:00
Version 1.0.2 (04.11.2014)
--------------------------
* The `NameResolver` visitor now also resolves names in trait adaptations (aliases and precedence declarations).
* Remove stray whitespace when pretty-printing trait adaptations that only change visibility.
2014-10-14 21:40:07 +02:00
Version 1.0.1 (14.10.2014)
--------------------------
2014-10-14 21:37:04 +02:00
* Disallow `new` expressions without a class name. Previously `new;` was accidentally considered to be valid code.
* Support T_ONUMBER token used by HHVM.
* Add ability to directly pass code to the `php-parse.php` script.
* Prevent truncation of `var_dump()` output in the `php-parse.php` script if XDebug is used.
2014-09-12 14:48:23 +02:00
Version 1.0.0 (12.09.2014)
--------------------------
2014-09-12 14:40:17 +02:00
* [BC] Removed deprecated `Template` and `TemplateLoader` classes.
* Fixed XML unserializer to properly work with new namespaced node names.
2014-08-31 16:53:14 +02:00
Version 1.0.0-beta2 (31.08.2014)
--------------------------------
* [PHP 5.6] Updated support for constant scalar expressions to comply with latest changes. This means that arrays
and array dimension fetches are now supported as well.
2014-03-27 14:12:13 +01:00
2014-08-31 16:39:53 +02:00
* [PHP 5.6] Direct array dereferencing of constants is supported now, i.e. both `FOO[0]` and `Foo::BAR[0]` are valid
now.
* Fixed handling of special class names (`self`, `parent` and `static`) in the name resolver to be case insensitive.
Additionally the name resolver now enforces that special class names are only used as unqualified names, e.g. `\self`
is considered invalid.
* The case of references to the `static` class name is now preserved. Previously `static` was always lowercased,
regardless of the case used in the source code.
* The autoloader now only requires a file if it exists. This allows usages like
`class_exists('PhpParser\NotExistingClass')`.
2014-07-23 21:35:24 +02:00
2014-09-12 14:40:17 +02:00
* Added experimental `bin/php-parse.php` script, which is intended to help exploring and debugging the node tree.
2014-07-23 21:35:24 +02:00
2014-08-31 16:39:53 +02:00
* Separated the parser implemention (in `lib/PhpParser/ParserAbstract.php`) and the generated data (in
`lib/PhpParser/Parser.php`). Furthermore the parser now uses meaningful variable names and contains comments
2014-07-23 21:35:24 +02:00
explaining their usage.
2014-03-27 14:12:13 +01:00
Version 1.0.0-beta1 (27.03.2014)
--------------------------------
2014-03-27 13:43:42 +01:00
* [BC] PHP-Parser now requires PHP 5.3 or newer to run. It is however still possible to *parse* PHP 5.2 source code,
while running on a newer version.
2014-03-27 13:43:42 +01:00
* [BC] The library has been moved to use namespaces with the `PhpParser` vendor prefix. However, the old names using
underscores are still available as aliases, as such most code should continue running on the new version without
further changes.
2012-11-22 19:51:21 +01:00
2014-03-27 13:43:42 +01:00
However, code performing dispatch operations on `Node::getType()` may be affected by some of the name changes. For
example a `+` node will now return type `Expr_BinaryOp_Plus` instead of `Expr_Plus`. In particular this may affect
custom pretty printers.
2014-03-27 13:43:42 +01:00
Due to conflicts with reserved keywords, some class names now end with an underscore, e.g. `PHPParser_Node_Stmt_Class`
is now `PhpParser\Node\Stmt\Class_`. (But as usual, the old name is still available)
2014-03-27 13:43:42 +01:00
* [PHP 5.6] Added support for the power operator `**` (node `Expr\BinaryOp\Pow`) and the compound power assignment
operator `**=` (node `Expr\AssignOp\Pow`).
2014-03-27 13:43:42 +01:00
* [PHP 5.6] Added support for variadic functions: `Param` nodes now have `variadic` as a boolean subnode.
2014-03-27 13:43:42 +01:00
* [PHP 5.6] Added support for argument unpacking: `Arg` nodes now have `unpack` as a boolean subnode.
2014-03-27 13:43:42 +01:00
* [PHP 5.6] Added support for aliasing of functions and constants. `Stmt\Use_` nodes now have an integral `type`
subnode, which is one of `Stmt\Use_::TYPE_NORMAL` (`use`), `Stmt\Use_::TYPE_FUNCTION` (`use function`) or
`Stmt\Use_::TYPE_CONSTANT` (`use const`).
2012-11-22 19:51:21 +01:00
2014-03-27 13:43:42 +01:00
The `NameResolver` now also supports resolution of such aliases.
2012-11-22 19:51:21 +01:00
2014-03-27 13:43:42 +01:00
* [PHP 5.6] Added support for constant scalar expressions. This means that certain expressions are now allowed as the
initializer for constants, properties, parameters, static variables, etc.
2012-07-07 22:23:25 +02:00
2014-03-27 13:43:42 +01:00
* [BC] Improved pretty printing of empty statements lists, which are now printed as `{\n}` instead of `{\n \n}`.
This changes the behavior of the protected `PrettyPrinterAbstract::pStmts()` method, so custom pretty printing code
making use it of may need to be adjusted.
2012-11-22 19:51:21 +01:00
2014-03-27 13:43:42 +01:00
* Changed the order of some subnodes to be consistent with their order in the sour code. For example `Stmt\If->cond`
will now appear before `Stmt\If->stmts` etc.
2012-11-22 19:51:21 +01:00
2014-03-27 13:43:42 +01:00
* Added `Scalar\MagicConstant->getName()`, which returns the name of the magic constant (e.g. `__CLASS__`).
2014-07-23 21:35:24 +02:00
**The following changes are also included in 0.9.5**:
2012-07-07 16:24:07 +02:00
2014-03-27 13:43:42 +01:00
* [BC] Deprecated `PHPParser_Template` and `PHPParser_TemplateLoader`. This functionality does not belong in the main project
and - as far as I know - nobody is using it.
2012-04-23 14:14:52 +02:00
2014-03-27 13:43:42 +01:00
* Add `NodeTraverser::removeVisitor()` method, which removes a visitor from the node traverser. This also modifies the
corresponding `NodeTraverserInterface`.
2012-04-23 14:14:52 +02:00
2014-03-27 13:43:42 +01:00
* Fix alias resolution in `NameResolver`: Class names are now correctly handled as case-insensitive.
2012-04-23 14:14:52 +02:00
2014-03-27 13:43:42 +01:00
* The undefined variable error, which is used to the lexer to reset the error state, will no longer interfere with
custom error handlers.
2012-04-23 14:14:52 +02:00
2014-03-27 13:43:42 +01:00
---
2012-04-23 14:14:52 +02:00
2014-03-27 13:43:42 +01:00
**This changelog only includes changes from the 1.0 series. For older changes see the [0.9 series changelog][1].**
2012-04-23 14:14:52 +02:00
2014-11-04 23:12:35 +01:00
[1]: https://github.com/nikic/PHP-Parser/blob/0.9/CHANGELOG.md