Skip to content

Releases: nikic/PHP-Parser

PHP-Parser 3.1.0

28 Jul 14:47
Compare
Choose a tag to compare

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 means object types will now be represented as a builtin type (a simple "object" string), rather than a class Name.

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

28 Jun 20:55
Compare
Choose a tag to compare

Fixed

  • Fixed the spelling of Class_::VISIBILITY_MODIFIER_MASK. The previous spelling of Class_::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

05 Mar 18:26
Compare
Choose a tag to compare

Fixed

  • Name resolution of NullableTypes 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

10 Feb 20:21
Compare
Choose a tag to compare

Fixed

  • Fixed some extensibility issues in pretty printer (pUseType() is now public and pPrec() calls into p(), 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

03 Feb 22:00
Compare
Choose a tag to compare

Fixed

  • In "$foo[0]" the 0 is now parsed as an LNumber rather than String. (#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 an Error 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 to NameResolver. If this option is enabled, an originalName 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 interfaces Serializer and Unserializer are deprecated.

PHP-Parser 3.0.2

06 Dec 11:32
Compare
Choose a tag to compare

Fixed

  • Fixed name resolution of nullable types.
  • Fixed pretty-printing of nullable types.

PHP-Parser 3.0.1

01 Dec 12:40
Compare
Choose a tag to compare

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 in ArrayItem. Now nested List_ nodes are always wrapped in ArrayItems. (#321)

PHP-Parser 3.0.0

30 Nov 18:25
Compare
Choose a tag to compare

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

29 Oct 11:42
Compare
Choose a tag to compare
Pre-release

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, and ErrorHandler\Throwing and ErrorHandler\Collecting as specific implementations. These provide a general mechanism for handling error recovery.
  • Added optional ErrorHandler argument to Parser::parse(), Lexer::startLexing() and NameResolver::__construct().
  • The NameResolver now adds a namespacedName 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 the NameTraverser class.
  • Due to the error handling changes, the Parser interface and Lexer 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 returns null for empty slices, previously new Name([]) was used. Name::concat() now also supports concatenation with null.

Removed

  • Removed Name::append() and Name::prepend(). These mutable methods have been superseded by the immutable Name::concat().
  • Removed Error::getRawLine() and Error::setRawLine(). These methods have been superseded by Error::getStartLine() and Error::setStartLine().
  • Removed support for node cloning in the NodeTraverser.
  • Removed $separator argument from Name::toString().
  • Removed throw_on_error parser option and Parser::getErrors() method. Use the ErrorHandler mechanism instead.

PHP-Parser 3.0.0 Beta 1

16 Sep 12:24
Compare
Choose a tag to compare
Pre-release

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 a nodeType property.
  • The InlineHTML node now has an hasLeadingNewline 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.