rucoa 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -3
  3. data/Gemfile.lock +3 -3
  4. data/README.md +4 -1
  5. data/lib/rucoa/configuration.rb +22 -12
  6. data/lib/rucoa/definition_store.rb +131 -131
  7. data/lib/rucoa/definitions/method_definition.rb +11 -11
  8. data/lib/rucoa/handler_concerns/configuration_requestable.rb +7 -7
  9. data/lib/rucoa/handler_concerns/diagnostics_publishable.rb +11 -11
  10. data/lib/rucoa/handler_concerns/text_document_position_parameters.rb +29 -0
  11. data/lib/rucoa/handler_concerns/text_document_uri_parameters.rb +21 -0
  12. data/lib/rucoa/handler_concerns.rb +2 -0
  13. data/lib/rucoa/handlers/base.rb +9 -9
  14. data/lib/rucoa/handlers/initialize_handler.rb +1 -0
  15. data/lib/rucoa/handlers/initialized_handler.rb +16 -16
  16. data/lib/rucoa/handlers/text_document_code_action_handler.rb +12 -12
  17. data/lib/rucoa/handlers/text_document_completion_handler.rb +85 -99
  18. data/lib/rucoa/handlers/text_document_definition_handler.rb +11 -30
  19. data/lib/rucoa/handlers/text_document_did_close_handler.rb +2 -8
  20. data/lib/rucoa/handlers/text_document_did_open_handler.rb +3 -7
  21. data/lib/rucoa/handlers/text_document_document_highlight_handler.rb +256 -0
  22. data/lib/rucoa/handlers/text_document_document_symbol_handler.rb +47 -76
  23. data/lib/rucoa/handlers/text_document_formatting_handler.rb +15 -23
  24. data/lib/rucoa/handlers/text_document_hover_handler.rb +24 -43
  25. data/lib/rucoa/handlers/text_document_range_formatting_handler.rb +17 -25
  26. data/lib/rucoa/handlers/text_document_selection_range_handler.rb +11 -19
  27. data/lib/rucoa/handlers/text_document_signature_help_handler.rb +17 -36
  28. data/lib/rucoa/handlers.rb +1 -0
  29. data/lib/rucoa/node_concerns/body.rb +1 -1
  30. data/lib/rucoa/node_concerns/qualified_name.rb +5 -5
  31. data/lib/rucoa/node_concerns/rescue.rb +21 -0
  32. data/lib/rucoa/node_concerns.rb +1 -0
  33. data/lib/rucoa/node_inspector.rb +5 -5
  34. data/lib/rucoa/nodes/base.rb +48 -48
  35. data/lib/rucoa/nodes/begin_node.rb +2 -0
  36. data/lib/rucoa/nodes/block_node.rb +24 -0
  37. data/lib/rucoa/nodes/case_node.rb +24 -0
  38. data/lib/rucoa/nodes/const_node.rb +26 -26
  39. data/lib/rucoa/nodes/def_node.rb +14 -13
  40. data/lib/rucoa/nodes/ensure_node.rb +19 -0
  41. data/lib/rucoa/nodes/for_node.rb +8 -0
  42. data/lib/rucoa/nodes/if_node.rb +32 -0
  43. data/lib/rucoa/nodes/resbody_node.rb +8 -0
  44. data/lib/rucoa/nodes/rescue_node.rb +17 -0
  45. data/lib/rucoa/nodes/send_node.rb +40 -0
  46. data/lib/rucoa/nodes/until_node.rb +8 -0
  47. data/lib/rucoa/nodes/when_node.rb +8 -0
  48. data/lib/rucoa/nodes/while_node.rb +8 -0
  49. data/lib/rucoa/nodes.rb +10 -1
  50. data/lib/rucoa/parser_builder.rb +16 -2
  51. data/lib/rucoa/range.rb +9 -3
  52. data/lib/rucoa/rbs/constant_definition_mapper.rb +5 -5
  53. data/lib/rucoa/rbs/method_definition_mapper.rb +18 -18
  54. data/lib/rucoa/rbs/module_definition_mapper.rb +13 -13
  55. data/lib/rucoa/rbs/ruby_definitions_loader.rb +5 -5
  56. data/lib/rucoa/rubocop/configuration_checker.rb +7 -7
  57. data/lib/rucoa/server.rb +24 -23
  58. data/lib/rucoa/source.rb +5 -5
  59. data/lib/rucoa/source_store.rb +8 -8
  60. data/lib/rucoa/version.rb +1 -1
  61. data/lib/rucoa/yard/definition_generators/method_definition_generator.rb +1 -1
  62. metadata +16 -3
  63. data/lib/rucoa/nodes/defs_node.rb +0 -33
@@ -5,6 +5,8 @@ require 'set'
5
5
  module Rucoa
6
6
  module Handlers
7
7
  class TextDocumentDocumentSymbolHandler < Base
8
+ include HandlerConcerns::TextDocumentUriParameters
9
+
8
10
  DOCUMENT_SYMBOL_KIND_FOR_FILE = 1
9
11
  DOCUMENT_SYMBOL_KIND_FOR_MODULE = 2
10
12
  DOCUMENT_SYMBOL_KIND_FOR_NAMESPACE = 3
@@ -47,51 +49,6 @@ module Rucoa
47
49
 
48
50
  private
49
51
 
50
- # @return [Array<Hash>]
51
- def document_symbols
52
- visit(source.root_node)
53
- document_symbol_stack.first[:children]
54
- end
55
-
56
- # @param node [Rucoa::Nodes::Base]
57
- # @return [void]
58
- def visit(node)
59
- document_symbols = create_document_symbols_for(node)
60
- document_symbol_stack.last[:children].push(*document_symbols)
61
- with_document_symbol_stack(document_symbols.first) do
62
- with_singleton_class_stack(node) do
63
- node.each_child_node do |child_node|
64
- visit(child_node)
65
- end
66
- end
67
- end
68
- end
69
-
70
- # @param document_symbol [Hash, nil]
71
- # @return [void]
72
- def with_document_symbol_stack(document_symbol)
73
- unless document_symbol
74
- yield
75
- return
76
- end
77
-
78
- document_symbol_stack.push(document_symbol)
79
- yield
80
- document_symbol_stack.pop
81
- end
82
-
83
- # @param node [Rucoa::Nodes::Base]
84
- def with_singleton_class_stack(node)
85
- unless node.is_a?(Rucoa::Nodes::SclassNode)
86
- yield
87
- return
88
- end
89
-
90
- singleton_class_stack.push(node)
91
- yield
92
- singleton_class_stack.pop
93
- end
94
-
95
52
  # @param node [Rucoa::Nodes::Base]
96
53
  # @return [Array<Hash>]
97
54
  def create_document_symbols_for(node)
@@ -102,8 +59,6 @@ module Rucoa
102
59
  create_document_symbols_for_class(node)
103
60
  when Nodes::DefNode
104
61
  create_document_symbols_for_def(node)
105
- when Nodes::DefsNode
106
- create_document_symbols_for_defs(node)
107
62
  when Nodes::ModuleNode
108
63
  create_document_symbols_for_module(node)
109
64
  when Nodes::SendNode
@@ -141,14 +96,14 @@ module Rucoa
141
96
  ]
142
97
  end
143
98
 
144
- # @param node [Rucoa::Nodes::ModuleNode]
99
+ # @param node [Rucoa::Nodes::DefNode]
145
100
  # @return [Array<Hash>]
146
- def create_document_symbols_for_module(node)
101
+ def create_document_symbols_for_def(node)
147
102
  [
148
103
  {
149
104
  children: [],
150
- kind: DOCUMENT_SYMBOL_KIND_FOR_MODULE,
151
- name: node.name,
105
+ kind: DOCUMENT_SYMBOL_KIND_FOR_METHOD,
106
+ name: "#{node.method_marker}#{node.name}",
152
107
  range: Range.from_parser_range(node.location.expression).to_vscode_range,
153
108
  selectionRange: Range.from_parser_range(node.location.name).to_vscode_range
154
109
  }
@@ -157,26 +112,26 @@ module Rucoa
157
112
 
158
113
  # @param node [Rucoa::Nodes::DefNode]
159
114
  # @return [Array<Hash>]
160
- def create_document_symbols_for_def(node)
115
+ def create_document_symbols_for_defs(node)
161
116
  [
162
117
  {
163
118
  children: [],
164
119
  kind: DOCUMENT_SYMBOL_KIND_FOR_METHOD,
165
- name: singleton_class_stack.empty? ? "##{node.name}" : ".#{node.name}",
120
+ name: ".#{node.name}",
166
121
  range: Range.from_parser_range(node.location.expression).to_vscode_range,
167
122
  selectionRange: Range.from_parser_range(node.location.name).to_vscode_range
168
123
  }
169
124
  ]
170
125
  end
171
126
 
172
- # @param node [Rucoa::Nodes::DefNode]
127
+ # @param node [Rucoa::Nodes::ModuleNode]
173
128
  # @return [Array<Hash>]
174
- def create_document_symbols_for_defs(node)
129
+ def create_document_symbols_for_module(node)
175
130
  [
176
131
  {
177
132
  children: [],
178
- kind: DOCUMENT_SYMBOL_KIND_FOR_METHOD,
179
- name: ".#{node.name}",
133
+ kind: DOCUMENT_SYMBOL_KIND_FOR_MODULE,
134
+ name: node.name,
180
135
  range: Range.from_parser_range(node.location.expression).to_vscode_range,
181
136
  selectionRange: Range.from_parser_range(node.location.name).to_vscode_range
182
137
  }
@@ -205,27 +160,17 @@ module Rucoa
205
160
  end
206
161
  end
207
162
 
208
- # @return [Boolean]
209
- def responsible?
210
- configuration.enables_document_symbol? &&
211
- !source.nil?
212
- end
213
-
214
- # @return [Rucoa::Source]
215
- def source
216
- @source ||= source_store.get(uri)
217
- end
218
-
219
- # @return [String]
220
- def uri
221
- request.dig('params', 'textDocument', 'uri')
222
- end
223
-
224
163
  # @return [Arrah<Hash>]
225
164
  def document_symbol_stack
226
165
  @document_symbol_stack ||= [dummy_document_symbol]
227
166
  end
228
167
 
168
+ # @return [Array<Hash>]
169
+ def document_symbols
170
+ visit(source.root_node)
171
+ document_symbol_stack.first[:children]
172
+ end
173
+
229
174
  # @return [Hash]
230
175
  def dummy_document_symbol
231
176
  {
@@ -233,9 +178,35 @@ module Rucoa
233
178
  }
234
179
  end
235
180
 
236
- # @return [Array<Rucoa::Nodes::SclassNode>]
237
- def singleton_class_stack
238
- @singleton_class_stack ||= []
181
+ # @return [Boolean]
182
+ def responsible?
183
+ configuration.enables_document_symbol? &&
184
+ !source.nil?
185
+ end
186
+
187
+ # @param node [Rucoa::Nodes::Base]
188
+ # @return [void]
189
+ def visit(node)
190
+ document_symbols = create_document_symbols_for(node)
191
+ document_symbol_stack.last[:children].push(*document_symbols)
192
+ with_document_symbol_stack(document_symbols.first) do
193
+ node.each_child_node do |child_node|
194
+ visit(child_node)
195
+ end
196
+ end
197
+ end
198
+
199
+ # @param document_symbol [Hash, nil]
200
+ # @return [void]
201
+ def with_document_symbol_stack(document_symbol)
202
+ unless document_symbol
203
+ yield
204
+ return
205
+ end
206
+
207
+ document_symbol_stack.push(document_symbol)
208
+ yield
209
+ document_symbol_stack.pop
239
210
  end
240
211
  end
241
212
  end
@@ -3,19 +3,14 @@
3
3
  module Rucoa
4
4
  module Handlers
5
5
  class TextDocumentFormattingHandler < Base
6
+ include HandlerConcerns::TextDocumentUriParameters
7
+
6
8
  def call
7
9
  respond(edits)
8
10
  end
9
11
 
10
12
  private
11
13
 
12
- # @return [Boolean]
13
- def formattable?
14
- configuration.enables_formatting? &&
15
- source &&
16
- Rubocop::ConfigurationChecker.call
17
- end
18
-
19
14
  # @return [Array<Hash>]
20
15
  def edits
21
16
  return [] unless formattable?
@@ -23,22 +18,11 @@ module Rucoa
23
18
  [text_edit]
24
19
  end
25
20
 
26
- # @return [Rucoa::Source, nil]
27
- def source
28
- @source ||= source_store.get(uri)
29
- end
30
-
31
- # @return [String]
32
- def uri
33
- request.dig('params', 'textDocument', 'uri')
34
- end
35
-
36
- # @return [Hash]
37
- def text_edit
38
- {
39
- newText: new_text,
40
- range: range
41
- }
21
+ # @return [Boolean]
22
+ def formattable?
23
+ configuration.enables_formatting? &&
24
+ source &&
25
+ Rubocop::ConfigurationChecker.call
42
26
  end
43
27
 
44
28
  # @return [String]
@@ -59,6 +43,14 @@ module Rucoa
59
43
  )
60
44
  ).to_vscode_range
61
45
  end
46
+
47
+ # @return [Hash]
48
+ def text_edit
49
+ {
50
+ newText: new_text,
51
+ range: range
52
+ }
53
+ end
62
54
  end
63
55
  end
64
56
  end
@@ -3,28 +3,15 @@
3
3
  module Rucoa
4
4
  module Handlers
5
5
  class TextDocumentHoverHandler < Base
6
+ include HandlerConcerns::TextDocumentPositionParameters
7
+ include HandlerConcerns::TextDocumentUriParameters
8
+
6
9
  def call
7
10
  respond(hover)
8
11
  end
9
12
 
10
13
  private
11
14
 
12
- # @return [Hash, nil]
13
- def hover
14
- return unless responsible?
15
-
16
- {
17
- contents: contents,
18
- range: range.to_vscode_range
19
- }
20
- end
21
-
22
- # @return [Boolean]
23
- def responsible?
24
- configuration.enables_hover? &&
25
- !contents.nil?
26
- end
27
-
28
15
  # @return [String, nil]
29
16
  def contents
30
17
  @contents ||=
@@ -42,33 +29,6 @@ module Rucoa
42
29
  end
43
30
  end
44
31
 
45
- # @return [Rucoa::Range]
46
- def range
47
- Range.from_parser_range(node.location.expression)
48
- end
49
-
50
- # @return [Rucoa::Nodes::Base, nil]
51
- def node
52
- @node ||= source&.node_at(position)
53
- end
54
-
55
- # @return [Rucoa::Source, nil]
56
- def source
57
- @source ||= source_store.get(uri)
58
- end
59
-
60
- # @return [String]
61
- def uri
62
- request.dig('params', 'textDocument', 'uri')
63
- end
64
-
65
- # @return [Rucoa::Position]
66
- def position
67
- Position.from_vscode_position(
68
- request.dig('params', 'position')
69
- )
70
- end
71
-
72
32
  # @return [Rucoa::Definitions::Base, nil]
73
33
  def definition
74
34
  return unless node
@@ -78,6 +38,27 @@ module Rucoa
78
38
  node: node
79
39
  ).definitions.first
80
40
  end
41
+
42
+ # @return [Hash, nil]
43
+ def hover
44
+ return unless responsible?
45
+
46
+ {
47
+ contents: contents,
48
+ range: range.to_vscode_range
49
+ }
50
+ end
51
+
52
+ # @return [Rucoa::Range]
53
+ def range
54
+ Range.from_parser_range(node.location.expression)
55
+ end
56
+
57
+ # @return [Boolean]
58
+ def responsible?
59
+ configuration.enables_hover? &&
60
+ !contents.nil?
61
+ end
81
62
  end
82
63
  end
83
64
  end
@@ -3,12 +3,26 @@
3
3
  module Rucoa
4
4
  module Handlers
5
5
  class TextDocumentRangeFormattingHandler < Base
6
+ include HandlerConcerns::TextDocumentUriParameters
7
+
6
8
  def call
7
9
  respond(edits)
8
10
  end
9
11
 
10
12
  private
11
13
 
14
+ # @return [Array<RuboCop::Cop::Corrector>]
15
+ def correctable_offenses
16
+ offenses.select(&:corrector)
17
+ end
18
+
19
+ # @return [Array(Rucoa::Range, String)]
20
+ def correctable_replacements
21
+ replacements.select do |replacement_range, _|
22
+ range.contain?(replacement_range)
23
+ end
24
+ end
25
+
12
26
  # @return [Array<Hash>]
13
27
  def edits
14
28
  return [] unless formattable?
@@ -28,14 +42,9 @@ module Rucoa
28
42
  Rubocop::ConfigurationChecker.call
29
43
  end
30
44
 
31
- # @return [Rucoa::Source]
32
- def source
33
- @source ||= source_store.get(uri)
34
- end
35
-
36
- # @return [String]
37
- def uri
38
- request.dig('params', 'textDocument', 'uri')
45
+ # @return [Array<RuboCop::Cop::Offense>]
46
+ def offenses
47
+ Rubocop::Investigator.call(source: source)
39
48
  end
40
49
 
41
50
  # @return [Rucoa::Range]
@@ -45,23 +54,6 @@ module Rucoa
45
54
  )
46
55
  end
47
56
 
48
- # @return [Array<RuboCop::Cop::Corrector>]
49
- def correctable_offenses
50
- offenses.select(&:corrector)
51
- end
52
-
53
- # @return [Array(Rucoa::Range, String)]
54
- def correctable_replacements
55
- replacements.select do |replacement_range, _|
56
- range.contain?(replacement_range)
57
- end
58
- end
59
-
60
- # @return [Array<RuboCop::Cop::Offense>]
61
- def offenses
62
- Rubocop::Investigator.call(source: source)
63
- end
64
-
65
57
  # @return [Array(Rucoa::Range, String)]
66
58
  def replacements
67
59
  correctable_offenses.map(&:corrector).flat_map(&:as_replacements).map do |replacement_range, replacement|
@@ -3,6 +3,8 @@
3
3
  module Rucoa
4
4
  module Handlers
5
5
  class TextDocumentSelectionRangeHandler < Base
6
+ include HandlerConcerns::TextDocumentUriParameters
7
+
6
8
  def call
7
9
  return unless responsible?
8
10
 
@@ -18,17 +20,6 @@ module Rucoa
18
20
 
19
21
  private
20
22
 
21
- # @return [Boolean]
22
- def responsible?
23
- configuration.enables_selection_range? &&
24
- !source.nil?
25
- end
26
-
27
- # @return [Rucoa::Source]
28
- def source
29
- @source ||= source_store.get(uri)
30
- end
31
-
32
23
  # @return [Array<Rucoa::Position>]
33
24
  def positions
34
25
  request.dig('params', 'positions').map do |position|
@@ -36,9 +27,10 @@ module Rucoa
36
27
  end
37
28
  end
38
29
 
39
- # @return [String]
40
- def uri
41
- request.dig('params', 'textDocument', 'uri')
30
+ # @return [Boolean]
31
+ def responsible?
32
+ configuration.enables_selection_range? &&
33
+ !source.nil?
42
34
  end
43
35
 
44
36
  class SelectionRangeProvider
@@ -128,6 +120,11 @@ module Rucoa
128
120
 
129
121
  private
130
122
 
123
+ # @return [Rucoa::Range]
124
+ def expression_range
125
+ Range.from_parser_range(@node.location.expression)
126
+ end
127
+
131
128
  # @return [Rucoa::Range]
132
129
  def inner_range
133
130
  Range.new(
@@ -135,11 +132,6 @@ module Rucoa
135
132
  Position.from_parser_range_beginning(@node.location.end)
136
133
  )
137
134
  end
138
-
139
- # @return [Rucoa::Range]
140
- def expression_range
141
- Range.from_parser_range(@node.location.expression)
142
- end
143
135
  end
144
136
  end
145
137
  end
@@ -3,12 +3,29 @@
3
3
  module Rucoa
4
4
  module Handlers
5
5
  class TextDocumentSignatureHelpHandler < Base
6
+ include HandlerConcerns::TextDocumentPositionParameters
7
+ include HandlerConcerns::TextDocumentUriParameters
8
+
6
9
  def call
7
10
  respond(signature_help)
8
11
  end
9
12
 
10
13
  private
11
14
 
15
+ # @return [Array<Rucoa::Definitions::MethodDefinition>]
16
+ def method_definitions
17
+ NodeInspector.new(
18
+ definition_store: definition_store,
19
+ node: node
20
+ ).method_definitions
21
+ end
22
+
23
+ # @return [Boolean]
24
+ def responsible?
25
+ configuration.enables_signature_help? &&
26
+ node.is_a?(Nodes::SendNode)
27
+ end
28
+
12
29
  # @return [Hash]
13
30
  def signature_help
14
31
  return unless responsible?
@@ -18,12 +35,6 @@ module Rucoa
18
35
  }
19
36
  end
20
37
 
21
- # @return [Boolean]
22
- def responsible?
23
- configuration.enables_signature_help? &&
24
- node.is_a?(Nodes::SendNode)
25
- end
26
-
27
38
  # @return [Array<Hash>]
28
39
  def signature_informations
29
40
  method_definitions.map do |method_definition|
@@ -33,36 +44,6 @@ module Rucoa
33
44
  }
34
45
  end
35
46
  end
36
-
37
- # @return [Array<Rucoa::Definitions::MethodDefinition>]
38
- def method_definitions
39
- NodeInspector.new(
40
- definition_store: definition_store,
41
- node: node
42
- ).method_definitions
43
- end
44
-
45
- # @return [Rucoa::Nodes::Base, nil]
46
- def node
47
- @node ||= source.node_at(position)
48
- end
49
-
50
- # @return [Rucoa::Position]
51
- def position
52
- Position.from_vscode_position(
53
- request.dig('params', 'position')
54
- )
55
- end
56
-
57
- # @return [Rucoa::Source]
58
- def source
59
- source_store.get(uri)
60
- end
61
-
62
- # @return [String]
63
- def uri
64
- request.dig('params', 'textDocument', 'uri')
65
- end
66
47
  end
67
48
  end
68
49
  end
@@ -13,6 +13,7 @@ module Rucoa
13
13
  autoload :TextDocumentDidChangeHandler, 'rucoa/handlers/text_document_did_change_handler'
14
14
  autoload :TextDocumentDidCloseHandler, 'rucoa/handlers/text_document_did_close_handler'
15
15
  autoload :TextDocumentDidOpenHandler, 'rucoa/handlers/text_document_did_open_handler'
16
+ autoload :TextDocumentDocumentHighlightHandler, 'rucoa/handlers/text_document_document_highlight_handler'
16
17
  autoload :TextDocumentDocumentSymbolHandler, 'rucoa/handlers/text_document_document_symbol_handler'
17
18
  autoload :TextDocumentFormattingHandler, 'rucoa/handlers/text_document_formatting_handler'
18
19
  autoload :TextDocumentHoverHandler, 'rucoa/handlers/text_document_hover_handler'
@@ -5,7 +5,7 @@ module Rucoa
5
5
  module Body
6
6
  # @return [Rucoa::Nodes::BeginNode, nil]
7
7
  def body
8
- children[2]
8
+ children.last
9
9
  end
10
10
 
11
11
  # @return [Array<Rucoa::Nodes::Base>]
@@ -3,6 +3,11 @@
3
3
  module Rucoa
4
4
  module NodeConcerns
5
5
  module QualifiedName
6
+ # @return [String]
7
+ def name
8
+ raise NotImplementedError
9
+ end
10
+
6
11
  # @return [String]
7
12
  def qualified_name
8
13
  [
@@ -10,11 +15,6 @@ module Rucoa
10
15
  *each_ancestor(:class, :constant, :module).map(&:name)
11
16
  ].reverse.join('::')
12
17
  end
13
-
14
- # @return [String]
15
- def name
16
- raise NotImplementedError
17
- end
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rucoa
4
+ module NodeConcerns
5
+ module Rescue
6
+ # @return [Rucoa::Nodes::EnsureNode, nil]
7
+ def ensure
8
+ return unless body.is_a?(Nodes::EnsureNode)
9
+
10
+ body
11
+ end
12
+
13
+ # @return [Rucoa::Nodes::RescueNode, nil]
14
+ def rescue
15
+ return unless body.is_a?(Nodes::RescueNode)
16
+
17
+ body
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,5 +4,6 @@ module Rucoa
4
4
  module NodeConcerns
5
5
  autoload :Body, 'rucoa/node_concerns/body'
6
6
  autoload :QualifiedName, 'rucoa/node_concerns/qualified_name'
7
+ autoload :Rescue, 'rucoa/node_concerns/rescue'
7
8
  end
8
9
  end
@@ -103,11 +103,6 @@ module Rucoa
103
103
  )
104
104
  end
105
105
 
106
- # @return [Boolean]
107
- def singleton_method_call?
108
- @node.is_a?(Nodes::ConstNode)
109
- end
110
-
111
106
  # @return [String, nil]
112
107
  def nearest_def_qualified_name
113
108
  @node.each_ancestor(:def).first&.qualified_name
@@ -147,5 +142,10 @@ module Rucoa
147
142
  )&.return_types
148
143
  end.compact
149
144
  end
145
+
146
+ # @return [Boolean]
147
+ def singleton_method_call?
148
+ @node.is_a?(Nodes::ConstNode)
149
+ end
150
150
  end
151
151
  end