Skip to content

Commit 07ab97e

Browse files
authored
- unify locations for normal and endless method definition (#718)
Per #716 (comment)
1 parent fc32051 commit 07ab97e

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

lib/parser.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ module Source
4646
require 'parser/source/map/variable'
4747
require 'parser/source/map/keyword'
4848
require 'parser/source/map/definition'
49-
require 'parser/source/map/endless_definition'
49+
require 'parser/source/map/method_definition'
5050
require 'parser/source/map/send'
5151
require 'parser/source/map/index'
5252
require 'parser/source/map/condition'

lib/parser/builders/default.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,17 +1803,17 @@ def module_definition_map(keyword_t, name_e, operator_t, end_t)
18031803
end
18041804

18051805
def definition_map(keyword_t, operator_t, name_t, end_t)
1806-
Source::Map::Definition.new(loc(keyword_t),
1807-
loc(operator_t), loc(name_t),
1808-
loc(end_t))
1806+
Source::Map::MethodDefinition.new(loc(keyword_t),
1807+
loc(operator_t), loc(name_t),
1808+
loc(end_t), nil, nil)
18091809
end
18101810

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

1814-
Source::Map::EndlessDefinition.new(loc(keyword_t),
1815-
loc(operator_t), loc(name_t),
1816-
loc(assignment_t), body_l)
1814+
Source::Map::MethodDefinition.new(loc(keyword_t),
1815+
loc(operator_t), loc(name_t), nil,
1816+
loc(assignment_t), body_l)
18171817
end
18181818

18191819
def send_map(receiver_e, dot_t, selector_t, begin_t=nil, args=[], end_t=nil)

lib/parser/source/map/endless_definition.rb renamed to lib/parser/source/map/method_definition.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,21 @@
33
module Parser
44
module Source
55

6-
class Map::EndlessDefinition < Map
6+
class Map::MethodDefinition < Map
77
attr_reader :keyword
88
attr_reader :operator
99
attr_reader :name
10+
attr_reader :end
1011
attr_reader :assignment
1112

12-
def initialize(keyword_l, operator_l, name_l, assignment_l, body_l)
13+
def initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l)
1314
@keyword = keyword_l
1415
@operator = operator_l
1516
@name = name_l
17+
@end = end_l
1618
@assignment = assignment_l
1719

18-
super(@keyword.join(body_l))
20+
super(@keyword.join(end_l || body_l))
1921
end
2022
end
2123

test/test_parser.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,6 +1856,7 @@ def test_def
18561856
%q{def foo; end},
18571857
%q{~~~ keyword
18581858
| ~~~ name
1859+
|! assignment
18591860
| ~~~ end})
18601861

18611862
assert_parses(
@@ -9585,6 +9586,7 @@ def test_endless_method
95859586
%q{~~~ keyword
95869587
| ~~~ name
95879588
| ^ assignment
9589+
|! end
95889590
|~~~~~~~~~~~~~~ expression},
95899591
SINCE_2_8)
95909592

0 commit comments

Comments
 (0)