Skip to content

Commit db433bc

Browse files
committed
Add support for parser 2.3
1 parent f67ee60 commit db433bc

File tree

10 files changed

+64
-8
lines changed

10 files changed

+64
-8
lines changed

Changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# v0.2.6 2016-01-xx
2+
3+
* Add support for ruby 2.3
4+
* Bump parser dependency to ~>2.3.0
5+
16
# v0.2.5 2015-05-30
27

38
* Drop support for ruby < 2.1

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
source 'https://rubygems.org'
22

33
gemspec
4+
5+
gem 'mutant', git: 'https://github.com/mbj/mutant.git', branch: 'feature/parser-2-3'

config/devtools.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
unit_test_timeout: 1.0
2+
unit_test_timeout: 2.0

config/flay.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
---
22
threshold: 13
3-
total_score: 663
3+
total_score: 673

lib/unparser.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def self.unparse(node, comment_array = [])
5656
require 'unparser/emitter/send/binary'
5757
require 'unparser/emitter/send/index'
5858
require 'unparser/emitter/send/regular'
59+
require 'unparser/emitter/send/conditional'
5960
require 'unparser/emitter/send/arguments'
6061
require 'unparser/emitter/send/attribute_assignment'
6162
require 'unparser/emitter/block'

lib/unparser/cli.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def exit_status
9090
effective_sources.each do |source|
9191
next if @ignore.include?(source)
9292
process_source(source)
93-
break unless @success if @fail_fast
93+
break if @fail_fast && !@success
9494
end
9595

9696
@success ? EXIT_SUCCESS : EXIT_FAILURE

lib/unparser/emitter.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
module Unparser
22

33
# Emitter base class
4+
#
5+
# buggy, argument values are sends to self
6+
# rubocop:disable CircularArgumentReference
47
class Emitter
58
include Adamantium::Flat, AbstractType, Constants, NodeHelpers
69
include Concord.new(:node, :parent)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module Unparser
2+
class Emitter
3+
class Send
4+
# Emitter for "conditional" receiver&.selector(arguments...) case
5+
class Conditional < self
6+
include Terminated
7+
8+
handle :csend
9+
10+
private
11+
12+
# Perform regular dispatch
13+
#
14+
# @return [undefined]
15+
#
16+
# @api private
17+
#
18+
def dispatch
19+
emit_receiver
20+
emit_selector
21+
emit_arguments
22+
end
23+
24+
# Emit receiver
25+
#
26+
# @return [undefined]
27+
#
28+
# @api private
29+
#
30+
def emit_receiver
31+
visit(receiver)
32+
write(T_AMP, T_DOT)
33+
end
34+
35+
end # Regular
36+
end # Send
37+
end # Emitter
38+
end # Unparser

spec/unit/unparser_spec.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55

66
PARSERS = IceNine.deep_freeze(
77
'2.1' => Parser::Ruby21,
8-
'2.2' => Parser::Ruby22
8+
'2.2' => Parser::Ruby22,
9+
'2.3' => Parser::Ruby23
910
)
1011

1112
RUBIES = PARSERS.keys.freeze
@@ -405,6 +406,11 @@ def foo
405406
end
406407
end
407408

409+
context 'conditional send (csend)' do
410+
assert_terminated 'a&.b', %w(2.3)
411+
assert_terminated 'a&.b(c)', %w(2.3)
412+
end
413+
408414
context 'send' do
409415
assert_terminated 'foo'
410416
assert_terminated 'self.foo'

unparser.gemspec

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
Gem::Specification.new do |gem|
22
gem.name = 'unparser'
3-
gem.version = '0.2.4'
3+
gem.version = '0.2.5'
44

55
gem.authors = ['Markus Schirp']
66
gem.email = '[email protected]'
77
gem.summary = 'Generate equivalent source for parser gem AST nodes'
8+
89
gem.description = gem.summary
910
gem.homepage = 'http://github.com/mbj/unparser'
1011
gem.license = 'MIT'
@@ -22,10 +23,10 @@ Gem::Specification.new do |gem|
2223
gem.add_dependency('equalizer', '~> 0.0.9')
2324
gem.add_dependency('diff-lcs', '~> 1.2.5')
2425
gem.add_dependency('concord', '~> 0.1.5')
25-
gem.add_dependency('parser', '~> 2.2.2')
26+
gem.add_dependency('parser', '~> 2.3.0')
2627
gem.add_dependency('procto', '~> 0.0.2')
2728

2829
gem.add_development_dependency('anima', '~> 0.3.0')
29-
gem.add_development_dependency('devtools', '~> 0.1.1')
30-
gem.add_development_dependency('morpher', '~> 0.2.5')
30+
gem.add_development_dependency('devtools', '~> 0.1.3')
31+
gem.add_development_dependency('morpher', '~> 0.2.6')
3132
end

0 commit comments

Comments
 (0)