Skip to content

Commit

Permalink
- unify locations for normal and endless method definition (#718)
Browse files Browse the repository at this point in the history
  • Loading branch information
marcandre committed Jul 6, 2020
1 parent fc32051 commit 07ab97e
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lib/parser.rb
Expand Up @@ -46,7 +46,7 @@ module Source
require 'parser/source/map/variable'
require 'parser/source/map/keyword'
require 'parser/source/map/definition'
require 'parser/source/map/endless_definition'
require 'parser/source/map/method_definition'
require 'parser/source/map/send'
require 'parser/source/map/index'
require 'parser/source/map/condition'
Expand Down
12 changes: 6 additions & 6 deletions lib/parser/builders/default.rb
Expand Up @@ -1803,17 +1803,17 @@ def module_definition_map(keyword_t, name_e, operator_t, end_t)
end

def definition_map(keyword_t, operator_t, name_t, end_t)
Source::Map::Definition.new(loc(keyword_t),
loc(operator_t), loc(name_t),
loc(end_t))
Source::Map::MethodDefinition.new(loc(keyword_t),
loc(operator_t), loc(name_t),
loc(end_t), nil, nil)
end

def endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e)
body_l = body_e.loc.expression

Source::Map::EndlessDefinition.new(loc(keyword_t),
loc(operator_t), loc(name_t),
loc(assignment_t), body_l)
Source::Map::MethodDefinition.new(loc(keyword_t),
loc(operator_t), loc(name_t), nil,
loc(assignment_t), body_l)
end

def send_map(receiver_e, dot_t, selector_t, begin_t=nil, args=[], end_t=nil)
Expand Down
Expand Up @@ -3,19 +3,21 @@
module Parser
module Source

class Map::EndlessDefinition < Map
class Map::MethodDefinition < Map
attr_reader :keyword
attr_reader :operator
attr_reader :name
attr_reader :end
attr_reader :assignment

def initialize(keyword_l, operator_l, name_l, assignment_l, body_l)
def initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l)
@keyword = keyword_l
@operator = operator_l
@name = name_l
@end = end_l
@assignment = assignment_l

super(@keyword.join(body_l))
super(@keyword.join(end_l || body_l))
end
end

Expand Down
2 changes: 2 additions & 0 deletions test/test_parser.rb
Expand Up @@ -1856,6 +1856,7 @@ def test_def
%q{def foo; end},
%q{~~~ keyword
| ~~~ name
|! assignment
| ~~~ end})

assert_parses(
Expand Down Expand Up @@ -9585,6 +9586,7 @@ def test_endless_method
%q{~~~ keyword
| ~~~ name
| ^ assignment
|! end
|~~~~~~~~~~~~~~ expression},
SINCE_2_8)

Expand Down

0 comments on commit 07ab97e

Please sign in to comment.