Skip to content

v0.12.0

Choose a tag to compare

@kddnewton kddnewton released this 16 Sep 00:34
0d8d1be

Added

  • RegularExpressionNode#options and InterpolatedRegularExpressionNode#options are now provided. These return integers that match up to the Regexp#options API.
  • Greatly improved Node#inspect and Node#pretty_print APIs.
  • MatchLastLineNode and InterpolatedMatchLastLineNode are introduced to represent using a regular expression as the predicate of an if or unless statement.
  • IntegerNode now has a base flag on it.
  • Heredocs that were previously InterpolatedStringNode and InterpolatedXStringNode nodes without any actual interpolation are now StringNode and XStringNode, respectively.
  • StringNode now has a frozen? flag on it, which respects the frozen_string_literal magic comment.
  • Numbered parameters are now supported, and are properly represented using LocalVariableReadNode nodes.
  • ImplicitNode is introduced, which wraps implicit calls, local variable reads, or constant reads in omitted hash values.
  • YARP::Dispatcher is introduced, which provides a way for multiple objects to listen for certain events on the AST while it is being walked. This is effectively a way to implement a more efficient visitor pattern when you have many different uses for the AST.

Changed

  • BREAKING: Flags fields are now marked as private, to ensure we can change their implementation under the hood. Actually querying should be through the accessor methods.
  • BREAKING: AliasNode is now split into AliasMethodNode and AliasGlobalVariableNode.
  • Method definitions on local variables is now correctly handled.
  • Unary minus precedence has been fixed.
  • Concatenating character literals with string literals is now fixed.
  • Many more invalid syntaxes are now properly rejected.
  • BREAKING: Comments now no longer include their trailing newline.