From 6dce0e647a52b31fe9011ebda232d71afd3f140e Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Wed, 1 Jul 2020 14:25:29 -0400 Subject: [PATCH] [Fixes #44] Use parser's new emit_forward_arg by default --- CHANGELOG.md | 4 ++++ README.md | 5 +++-- lib/rubocop/ast/builder.rb | 2 ++ rubocop-ast.gemspec | 2 +- spec/spec_helper.rb | 5 ++++- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a5de8c081..52f19d686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ * [#50](https://github.com/rubocop-hq/rubocop-ast/pull/50): Support find pattern matching for Ruby 2.8 (3.0) parser. ([@koic][]) +### Changes + +* [#44](https://github.com/rubocop-hq/rubocop-ast/issue/44): **(Breaking)** Use `parser` flag `self.emit_forward_arg = true` by default. ([@marcandre][]) + ## 0.1.0 (2020-06-26) ### New features diff --git a/README.md b/README.md index 604ee63de..e5eda6ce2 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,9 @@ See the [docs site](https://docs.rubocop.org/rubocop-ast) for more details. ### Parser compatibility switches -The main `RuboCop` gem uses [legacy AST output from parser](https://github.com/whitequark/parser/#usage). -This gem is meant to be compatible with all settings. For example, to have `-> { ... }` emitted +This gem, by default, uses most [legacy AST output from parser](https://github.com/whitequark/parser/#usage), except for `emit_forward_arg` which is set to `true`. + +The main `RuboCop` gem uses these defaults (and is currently only compatible with these), but this gem can be used separately from `RuboCop` and is meant to be compatible with all settings. For example, to have `-> { ... }` emitted as `LambdaNode` instead of `SendNode`: ```ruby diff --git a/lib/rubocop/ast/builder.rb b/lib/rubocop/ast/builder.rb index f360d8731..9ef6f8c9f 100644 --- a/lib/rubocop/ast/builder.rb +++ b/lib/rubocop/ast/builder.rb @@ -14,6 +14,8 @@ module AST # parser = Parser::Ruby25.new(builder) # root_node = parser.parse(buffer) class Builder < Parser::Builders::Default + self.emit_forward_arg = true + NODE_MAP = { and: AndNode, alias: AliasNode, diff --git a/rubocop-ast.gemspec b/rubocop-ast.gemspec index 8f683c5d2..d0d84e852 100644 --- a/rubocop-ast.gemspec +++ b/rubocop-ast.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| 'bug_tracker_uri' => 'https://github.com/rubocop-hq/rubocop-ast/issues' } - s.add_runtime_dependency('parser', '>= 2.7.0.1') + s.add_runtime_dependency('parser', '>= 2.7.1.4') s.add_development_dependency('bundler', '>= 1.15.0', '< 3.0') diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 919b63dc3..020a6140f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -8,7 +8,10 @@ end require 'rubocop-ast' -RuboCop::AST::Builder.modernize if ENV['MODERNIZE'] +if ENV['MODERNIZE'] + RuboCop::AST::Builder.modernize + RuboCop::AST::Builder.emit_forward_arg = false # inverse of default +end RSpec.shared_context 'ruby 2.3', :ruby23 do let(:ruby_version) { 2.3 }