Releases: nikic/PHP-Parser
PHP-Parser 3.1.0
This version adds support for PHP 7.2.
Added
- [PHP 7.2] Added support for trailing comma in group use statements.
- [PHP 7.2] Added support for
object
type. This meansobject
types will now be represented as a builtin type (a simple"object"
string), rather than a className
.
Fixed
- Floating-point numbers are now printed correctly if the LC_NUMERIC locale uses a comma as decimal separator.
Changed
Name::$parts
is no longer deprecated.
PHP-Parser 3.0.6
Fixed
- Fixed the spelling of
Class_::VISIBILITY_MODIFIER_MASK
. The previous spelling ofClass_::VISIBILITY_MODIFER_MASK
is preserved for backwards compatibility. - The pretty printing will now preserve comments inside array literals and function calls by printing the array items / function arguments on separate lines. Array literals and functions that do not contain comments are not affected.
Added
- Added
Builder\Param::makeVariadic()
.
Deprecated
- The
Node::setLine()
method has been deprecated.
PHP-Parser 3.0.5
Fixed
- Name resolution of
NullableType
s is now performed earlier, so that a fully resolved signature is available when a function is entered. (#360) Error
nodes are now considered empty, while previously they extended until the token where the error occurred. This made some nodes larger than expected. (#359)- Fixed notices being thrown during error recovery in some situations. (#362)
PHP-Parser 3.0.4
Fixed
- Fixed some extensibility issues in pretty printer (
pUseType()
is now public andpPrec()
calls intop()
, instead of directly dispatching to the type-specific printing method). - Fixed notice in
bin/php-parse
script.
Added
- Error recovery from missing semicolons is now supported in more cases.
- Error recovery from trailing commas in positions where PHP does not support them is now supported.
PHP-Parser 3.0.3
Fixed
- In
"$foo[0]"
the0
is now parsed as anLNumber
rather thanString
. (#325) - Ensure integers and floats are always pretty printed preserving semantics, even if the particular value can only be manually constructed.
- Throw a
LogicException
when trying to pretty-print anError
node. Previously this resulted in an undefined method exception or fatal error.
Added
- [PHP 7.1] Added support for negative interpolated offsets:
"$foo[-1]"
- Added
preserveOriginalNames
option toNameResolver
. If this option is enabled, anoriginalName
attribute, containing the unresolved name, will be added to each resolved name. - Added
php-parse --with-positions
option, which dumps nodes with position information.
Deprecated
- The XML serializer has been deprecated. In particular, the classes
Serializer\XML
,Unserializer\XML
, as well as the interfacesSerializer
andUnserializer
are deprecated.
PHP-Parser 3.0.2
Fixed
- Fixed name resolution of nullable types.
- Fixed pretty-printing of nullable types.
PHP-Parser 3.0.1
Fixed
- Fixed handling of nested
list()
s: If the nested list was unkeyed, it was directly included in the list items. If it was keyed, it was wrapped inArrayItem
. Now nestedList_
nodes are always wrapped inArrayItem
s. (#321)
PHP-Parser 3.0.0
PHP-Parser 3.0 adds support for PHP 7.1 and improves support for error recovery.
For a description of backwards incompatible changes between version 2.x and 3.0 see the upgrading guide.
The following changelog only lists changes relative to the beta 2 release. For a complete list of changes see the complete changelog.
Added
- Added support for dumping node positions in the NodeDumper through the
dumpPositions
option. - Added error recovery support for
$
,new
,Foo::
.
PHP-Parser 3.0.0 Beta 2
This release primarily improves our support for error recovery.
The following changelog only lists changes relative to the beta 1 release. A description of backwards incompatible changes between version 2.x and 3.0 can be found in the upgrading guide.
Added
- Added
Node::setDocComment()
method. - Added
Error::getMessageWithColumnInfo()
method. - Added support for recovery from lexer errors.
- Added support for recovering from "special" errors (i.e. non-syntax parse errors).
- Added precise location information for lexer errors.
- Added
ErrorHandler
interface, andErrorHandler\Throwing
andErrorHandler\Collecting
as specific implementations. These provide a general mechanism for handling error recovery. - Added optional
ErrorHandler
argument toParser::parse()
,Lexer::startLexing()
andNameResolver::__construct()
. - The
NameResolver
now adds anamespacedName
attribute on name nodes that cannot be statically resolved (unqualified unaliased function or constant names in namespaces).
Fixed
- Fixed attribute assignment for
GroupUse
prefix and variables in interpolated strings.
Changed
- The constants on
NameTraverserInterface
have been moved into theNameTraverser
class. - Due to the error handling changes, the
Parser
interface andLexer
API have changed. - The emulative lexer now directly postprocesses tokens, instead of using
~__EMU__~
sequences. This changes the protected API of the lexer. - The
Name::slice()
method now returnsnull
for empty slices, previouslynew Name([])
was used.Name::concat()
now also supports concatenation withnull
.
Removed
- Removed
Name::append()
andName::prepend()
. These mutable methods have been superseded by the immutableName::concat()
. - Removed
Error::getRawLine()
andError::setRawLine()
. These methods have been superseded byError::getStartLine()
andError::setStartLine()
. - Removed support for node cloning in the
NodeTraverser
. - Removed
$separator
argument fromName::toString()
. - Removed
throw_on_error
parser option andParser::getErrors()
method. Use theErrorHandler
mechanism instead.
PHP-Parser 3.0.0 Beta 1
The following changelog only lists changes relative to the alpha 1 release. A description of backwards incompatible changes between version 2.x and 3.0 can be found in the upgrading guide.
Added
- [7.1] Function/method and parameter builders now support PHP 7.1 type hints (void, iterable and nullable types).
- Nodes and Comments now implement
JsonSerializable
. The node kind is stored in anodeType
property. - The
InlineHTML
node now has anhasLeadingNewline
attribute, that specifies whether the
preceding closing tag contained a newline. The pretty printer honors this attribute. - Partial parsing of
$obj->
(with missing property name) is now supported in error recovery mode. - The error recovery mode is now exposed in the
php-parse
script through the--with-recovery
or-r
flags.
Changes also in PHP-Parser 2.1.1
- The PHP 7 parser will now generate a parse error for
$var =& new Obj
assignments. - Comments on free-standing code blocks will now be retained as comments on the first statement in the code block.