|Changelog for ast
||What has changed?
- Fix compatibility with (currenty) PHP 7.4 and PHP 8.0.
- Support BINARY_COALESCE as a flag of AST_ASSIGN_OP for the `??=` operator added in PHP 7.4.
- Add AST version 70 (experimental):
- Version 70 adds AST_PROP_GROUP with type information for property groups.
- Version 70 adds AST_CLASS_NAME for `Foo::class`. Previously this used AST_CLASS_CONST
This release is the same as version 0.1.7 with obsolete and deprecated functionality removed.
- Removed AST versions prior to version 50.
- Removed ast\Node\Decl class, which is no longer used.
- Removed AST kinds AST_AND, AST_COALESCE, AST_GREATER, AST_GREATER_EQUAL, AST_OR, AST_SILENCE,
AST_UNARY_MINUS, and AST_UNARY_PLUS, which are no longer used.
- Removed ASSIGN_* AST flags, which are no longer used.
- Added AST version 60 with the following changes:
- `AST_FUNC_DECL` and `AST_METHOD` no longer generate a `uses` child. Previously this child was
- `AST_FUNC_CONST_ELEM` now always has a `docComment` child. Previously it was absent on PHP 7.0.
On PHP 7.0 the value is always `null`.
- Added `ARRAY_ELEM_REF` flag, which is used by `AST_ARRAY_ELEM` for by-reference array elements
and (since PHP 7.3) for by-reference destructuring. Previously this flag was represented simply
by the value `1`.
- Deprecated AST versions 40 and 45.
- Fix build against PHP 7.4-dev.
- Added ast\get_metadata() function, which returns an array of ast\Metadata objects, one for each
AST kind. The metadata contains information such as the supported flags for the kind.
- Added ast\get_supported_versions() function, which provides an array of currently supported AST
- Fix issue #51: Make nullable array/callable have a flag of 0 in inner element, in version 40.
- Added a constructor for the ast\Node class.
- Added ast\flags\FUNC_GENERATOR constant, which is used since PHP 7.1.
- Added ast\flags\FUNC_RETURNS_REF constant, intended to supersede ast\flags\RETURNS_REF.
- Added ast\flags\CLOSURE_USE_REF constant, used by AST_CLOSURE_VAR nodes. Previously "1" was used.
- Added version 45 with the following changes (PHP 7.2 support):
- An `object` type annotation now returns an `AST_TYPE` with `TYPE_OBJECT` flag, rather than
treating `object` as a class name.
- Added version 50 with the following changes:
- `ast\Node\Decl` nodes are no longer generated. AST kinds `AST_FUNCTION`, `AST_METHOD`,
`AST_CLOSURE` and `AST_CLASS` now also use the normal `ast\Node` class. The `name` and
`docComment` properties are now represented as children. The `endLineno` is still represented as
an (undeclared) property.
- An integer `__declId` has been added to declaration nodes of kind `AST_FUNCTION`, `AST_METHOD`,
`AST_CLOSURE` and `AST_CLASS`. The `__declId` uniquely identifies a declaration within the
parsed code and will remain the same if the code is parsed again. This is useful to distinguish
closures declared on the same line, or multiple conditional declarations using the same name.
The ID is not unique across different codes/files.
- `\ast\parse_file` will now consistently return an empty statement list (similar to
`\ast\parse_code`) if it is was passed a zero-byte file. Previously, it would return `null`.