php-parser/CHANGELOG.md

4.3 KiB

Changelog

All notable changes to this project will be documented in this file, in reverse chronological order by release.

v0.10.0 2023-17-04

Breaking Changes

  • Changed VKCOM to laytan in imports and go.mod

Added

  • ast.Type enum and ast.Vertex GetType() ast.Type function for easily checking and storing vertex types
  • Expose the internal lexer using lexer.New(src []byte, config conf.Config) (Lexer, error)

Fixes

  • Added some boundary checks in the formatter to prevent some panics
  • A newline will now be added after a doc comment in the printer
  • Some fixes for start and end column addition in previous release

v0.9.0 2023-26-03

Breaking Changes

  • Dropped PHP 5 support to increase velocity/productivity

Added

  • Nodes and tokens now also contain their StartCol and EndCol
  • 2 new interfaces for traversers (backwards compatible):
    • traversers.CheckEntrance interface: provides an EnterNode(ast.Vertex) bool that, when implemented, is called before entering a node, allowing short circuiting and more control over the traversal
    • traversers.NotifyLeave interface: provides an LeaveNode(ast.Vertex) that, when implemented, is called when a node has fully been traversed, again allowing for more control

Fixes

  • Fixed a bug where the parser would use token.DefaultBlockSize instead of position.DefaultBlockSize when instantiating the parser

Internals

  • Rely on code generations for several repeating/boilerplate tasks
  • Refactors and deduplication after PHP 5 removal
  • Add golangci-lint configuration and an editorconfig file

v0.8.3 2022-09-09

Changed

  • reduce memory usage by allocating smaller position blocks

v0.8.2 2022-26-06

Added

  • #28: php8.2: added readonly classes support
  • #29: php8.1: added intersection types support

v0.8.1-rc.1 2021-09-08

Added

  • #6: php8.1: added readonly modifier
  • #8: php8.1: added never type
  • #10: php8.1: added new octal numbers syntax
  • #12: php8.1: added enums
  • #15: php8.1: added final modifier for constants in class
  • #18: php8.1: added first class callable syntax

Changed

  • 4cd50d: cmd: added file path output before errors

Fixed

  • #22: fixed bug with # comments

v0.8.0-rc.2 2021-30-07

Added

  • #10: php8: nullsafe operator (?->)
  • #13: php8: named arguments
  • #19: php8: match expression
  • #21: php8: union types in type hints and static typehint
  • #23: php8: block catch without variable
  • #25: php8: trailing comma in parameter lists
  • #27: php8: throw can be used as an expression
  • #32: php8: declaring properties in the constructor
  • #34: php8: attributes
  • #38: php8: trailing comma in closure use list

Changed

  • #30: php8: concatenation precedence
  • #36: php8: names in the namespace are treated as a single token
  • #42: php8: deferencable changes and arbitrary expressions in new/instanceof

Removed

  • #11: php8: removed (real) cast
  • #15: php8: removed (unset) cast
  • #17: php8: removed {} access

Versions prior to 0.8.0 were not included in this changelog.