solargraph 0.57.0 → 0.58.3

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 (216) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.github/workflows/linting.yml +4 -2
  4. data/.github/workflows/plugins.yml +63 -28
  5. data/.github/workflows/rspec.yml +19 -4
  6. data/.github/workflows/typecheck.yml +2 -2
  7. data/.gitignore +1 -0
  8. data/.rubocop.yml +1 -1
  9. data/.rubocop_todo.yml +90 -1438
  10. data/CHANGELOG.md +39 -0
  11. data/Rakefile +1 -1
  12. data/bin/solargraph +3 -0
  13. data/lib/solargraph/api_map/cache.rb +110 -110
  14. data/lib/solargraph/api_map/constants.rb +279 -218
  15. data/lib/solargraph/api_map/index.rb +193 -169
  16. data/lib/solargraph/api_map/source_to_yard.rb +97 -94
  17. data/lib/solargraph/api_map/store.rb +384 -374
  18. data/lib/solargraph/api_map.rb +945 -951
  19. data/lib/solargraph/bench.rb +45 -45
  20. data/lib/solargraph/complex_type/type_methods.rb +228 -223
  21. data/lib/solargraph/complex_type/unique_type.rb +482 -475
  22. data/lib/solargraph/complex_type.rb +444 -427
  23. data/lib/solargraph/convention/active_support_concern.rb +1 -1
  24. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  25. data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
  26. data/lib/solargraph/convention/data_definition.rb +105 -105
  27. data/lib/solargraph/convention/gemfile.rb +15 -15
  28. data/lib/solargraph/convention/gemspec.rb +23 -23
  29. data/lib/solargraph/convention/rakefile.rb +17 -17
  30. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
  31. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
  32. data/lib/solargraph/convention/struct_definition.rb +164 -164
  33. data/lib/solargraph/convention.rb +78 -78
  34. data/lib/solargraph/converters/dd.rb +17 -17
  35. data/lib/solargraph/converters/dl.rb +15 -15
  36. data/lib/solargraph/converters/dt.rb +15 -15
  37. data/lib/solargraph/converters/misc.rb +1 -1
  38. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  39. data/lib/solargraph/diagnostics/rubocop.rb +118 -118
  40. data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -66
  41. data/lib/solargraph/diagnostics/type_check.rb +55 -55
  42. data/lib/solargraph/diagnostics/update_errors.rb +41 -41
  43. data/lib/solargraph/doc_map.rb +439 -436
  44. data/lib/solargraph/environ.rb +1 -1
  45. data/lib/solargraph/equality.rb +34 -33
  46. data/lib/solargraph/gem_pins.rb +98 -94
  47. data/lib/solargraph/language_server/error_codes.rb +20 -20
  48. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  49. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  50. data/lib/solargraph/language_server/host/message_worker.rb +112 -112
  51. data/lib/solargraph/language_server/host/sources.rb +99 -99
  52. data/lib/solargraph/language_server/host.rb +878 -872
  53. data/lib/solargraph/language_server/message/base.rb +97 -97
  54. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
  55. data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -60
  56. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
  57. data/lib/solargraph/language_server/message/extended/document.rb +23 -23
  58. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  59. data/lib/solargraph/language_server/message/extended/download_core.rb +19 -19
  60. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  61. data/lib/solargraph/language_server/message/initialize.rb +191 -191
  62. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
  63. data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
  64. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
  65. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
  66. data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -145
  67. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  68. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
  69. data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
  70. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
  71. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
  72. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
  73. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -35
  74. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -40
  75. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +26 -26
  76. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  77. data/lib/solargraph/language_server/message.rb +94 -94
  78. data/lib/solargraph/language_server/progress.rb +1 -1
  79. data/lib/solargraph/language_server/request.rb +27 -25
  80. data/lib/solargraph/language_server/transport/data_reader.rb +74 -74
  81. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  82. data/lib/solargraph/library.rb +683 -683
  83. data/lib/solargraph/location.rb +82 -81
  84. data/lib/solargraph/logging.rb +37 -37
  85. data/lib/solargraph/page.rb +92 -93
  86. data/lib/solargraph/parser/comment_ripper.rb +69 -69
  87. data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
  88. data/lib/solargraph/parser/node_processor/base.rb +92 -92
  89. data/lib/solargraph/parser/node_processor.rb +62 -62
  90. data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -159
  91. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  92. data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
  93. data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -499
  94. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -21
  95. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
  96. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
  97. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
  98. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
  99. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +37 -37
  100. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
  101. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
  102. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
  103. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
  104. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -42
  105. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  106. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
  107. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -43
  108. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -292
  109. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  110. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
  111. data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
  112. data/lib/solargraph/parser/parser_gem.rb +12 -12
  113. data/lib/solargraph/parser/region.rb +69 -69
  114. data/lib/solargraph/parser/snippet.rb +17 -17
  115. data/lib/solargraph/parser.rb +23 -23
  116. data/lib/solargraph/pin/base.rb +729 -708
  117. data/lib/solargraph/pin/base_variable.rb +126 -124
  118. data/lib/solargraph/pin/block.rb +104 -103
  119. data/lib/solargraph/pin/breakable.rb +9 -9
  120. data/lib/solargraph/pin/callable.rb +231 -227
  121. data/lib/solargraph/pin/closure.rb +72 -76
  122. data/lib/solargraph/pin/common.rb +79 -79
  123. data/lib/solargraph/pin/constant.rb +45 -45
  124. data/lib/solargraph/pin/conversions.rb +123 -123
  125. data/lib/solargraph/pin/delegated_method.rb +120 -121
  126. data/lib/solargraph/pin/documenting.rb +114 -114
  127. data/lib/solargraph/pin/instance_variable.rb +34 -34
  128. data/lib/solargraph/pin/keyword.rb +20 -20
  129. data/lib/solargraph/pin/local_variable.rb +75 -79
  130. data/lib/solargraph/pin/method.rb +672 -656
  131. data/lib/solargraph/pin/method_alias.rb +34 -34
  132. data/lib/solargraph/pin/namespace.rb +115 -115
  133. data/lib/solargraph/pin/parameter.rb +275 -271
  134. data/lib/solargraph/pin/proxy_type.rb +39 -36
  135. data/lib/solargraph/pin/reference/override.rb +47 -47
  136. data/lib/solargraph/pin/reference/superclass.rb +15 -15
  137. data/lib/solargraph/pin/reference.rb +39 -48
  138. data/lib/solargraph/pin/search.rb +61 -58
  139. data/lib/solargraph/pin/signature.rb +61 -61
  140. data/lib/solargraph/pin/symbol.rb +53 -53
  141. data/lib/solargraph/pin/until.rb +18 -18
  142. data/lib/solargraph/pin/while.rb +18 -18
  143. data/lib/solargraph/pin.rb +44 -44
  144. data/lib/solargraph/pin_cache.rb +245 -245
  145. data/lib/solargraph/position.rb +132 -118
  146. data/lib/solargraph/range.rb +112 -108
  147. data/lib/solargraph/rbs_map/conversions.rb +823 -802
  148. data/lib/solargraph/rbs_map/core_fills.rb +84 -66
  149. data/lib/solargraph/rbs_map/core_map.rb +58 -54
  150. data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
  151. data/lib/solargraph/rbs_map.rb +163 -163
  152. data/lib/solargraph/server_methods.rb +16 -16
  153. data/lib/solargraph/shell.rb +363 -271
  154. data/lib/solargraph/source/chain/array.rb +37 -37
  155. data/lib/solargraph/source/chain/call.rb +337 -333
  156. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  157. data/lib/solargraph/source/chain/constant.rb +26 -89
  158. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  159. data/lib/solargraph/source/chain/hash.rb +34 -34
  160. data/lib/solargraph/source/chain/if.rb +28 -28
  161. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  162. data/lib/solargraph/source/chain/link.rb +109 -109
  163. data/lib/solargraph/source/chain/literal.rb +48 -48
  164. data/lib/solargraph/source/chain/or.rb +23 -23
  165. data/lib/solargraph/source/chain/q_call.rb +11 -11
  166. data/lib/solargraph/source/chain/variable.rb +13 -13
  167. data/lib/solargraph/source/chain/z_super.rb +30 -30
  168. data/lib/solargraph/source/chain.rb +291 -289
  169. data/lib/solargraph/source/change.rb +82 -82
  170. data/lib/solargraph/source/cursor.rb +166 -166
  171. data/lib/solargraph/source/encoding_fixes.rb +23 -23
  172. data/lib/solargraph/source/source_chainer.rb +194 -194
  173. data/lib/solargraph/source/updater.rb +55 -55
  174. data/lib/solargraph/source.rb +498 -498
  175. data/lib/solargraph/source_map/clip.rb +226 -234
  176. data/lib/solargraph/source_map/data.rb +34 -34
  177. data/lib/solargraph/source_map/mapper.rb +259 -261
  178. data/lib/solargraph/source_map.rb +212 -207
  179. data/lib/solargraph/type_checker/checks.rb +124 -124
  180. data/lib/solargraph/type_checker/param_def.rb +37 -37
  181. data/lib/solargraph/type_checker/problem.rb +32 -32
  182. data/lib/solargraph/type_checker/rules.rb +84 -70
  183. data/lib/solargraph/type_checker.rb +814 -752
  184. data/lib/solargraph/version.rb +5 -5
  185. data/lib/solargraph/workspace/config.rb +255 -237
  186. data/lib/solargraph/workspace/require_paths.rb +97 -98
  187. data/lib/solargraph/workspace.rb +220 -225
  188. data/lib/solargraph/yard_map/helpers.rb +44 -44
  189. data/lib/solargraph/yard_map/mapper/to_method.rb +130 -129
  190. data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -30
  191. data/lib/solargraph/yard_map/mapper.rb +79 -79
  192. data/lib/solargraph/yard_map/to_method.rb +89 -88
  193. data/lib/solargraph/yard_tags.rb +20 -20
  194. data/lib/solargraph/yardoc.rb +87 -64
  195. data/lib/solargraph.rb +105 -105
  196. data/rbs/fills/bundler/0/bundler.rbs +4271 -0
  197. data/rbs/fills/open3/0/open3.rbs +172 -0
  198. data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
  199. data/rbs/fills/rubygems/0/errors.rbs +364 -0
  200. data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
  201. data/rbs/fills/rubygems/0/specification.rbs +1753 -0
  202. data/rbs/shims/ast/0/node.rbs +5 -0
  203. data/rbs/shims/ast/2.4/.rbs_meta.yaml +9 -0
  204. data/rbs/shims/ast/2.4/ast.rbs +73 -0
  205. data/rbs/shims/parser/3.2.0.1/manifest.yaml +7 -0
  206. data/rbs/shims/parser/3.2.0.1/parser.rbs +201 -0
  207. data/rbs/shims/parser/3.2.0.1/polyfill.rbs +4 -0
  208. data/rbs_collection.yaml +4 -4
  209. data/solargraph.gemspec +15 -4
  210. metadata +71 -16
  211. data/lib/solargraph/parser/node_methods.rb +0 -97
  212. /data/rbs/fills/{tuple.rbs → tuple/tuple.rbs} +0 -0
  213. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  214. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  215. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  216. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,34 +1,34 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Pin
5
- # Use this class to track method aliases for later remapping. Common
6
- # examples that defer mapping are aliases for superclass methods or
7
- # methods from included modules.
8
- #
9
- class MethodAlias < Method
10
- # @return [::Symbol]
11
- attr_reader :scope
12
-
13
- # @return [String]
14
- attr_reader :original
15
-
16
- # @param scope [::Symbol]
17
- # @param original [String, nil] The name of the original method
18
- # @param splat [Hash] Additional options supported by superclasses
19
- def initialize scope: :instance, original: nil, **splat
20
- super(**splat)
21
- @scope = scope
22
- @original = original
23
- end
24
-
25
- def visibility
26
- :public
27
- end
28
-
29
- def path
30
- @path ||= namespace + (scope == :instance ? '#' : '.') + name
31
- end
32
- end
33
- end
34
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Pin
5
+ # Use this class to track method aliases for later remapping. Common
6
+ # examples that defer mapping are aliases for superclass methods or
7
+ # methods from included modules.
8
+ #
9
+ class MethodAlias < Method
10
+ # @return [::Symbol]
11
+ attr_reader :scope
12
+
13
+ # @return [String]
14
+ attr_reader :original
15
+
16
+ # @param scope [::Symbol]
17
+ # @param original [String, nil] The name of the original method
18
+ # @param splat [Hash] Additional options supported by superclasses
19
+ def initialize scope: :instance, original: nil, **splat
20
+ super(**splat)
21
+ @scope = scope
22
+ @original = original
23
+ end
24
+
25
+ def visibility
26
+ :public
27
+ end
28
+
29
+ def path
30
+ @path ||= namespace + (scope == :instance ? '#' : '.') + name
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,115 +1,115 @@
1
- # frozen_string_literal: true
2
-
3
- require 'solargraph/yard_tags'
4
-
5
- module Solargraph
6
- module Pin
7
- class Namespace < Closure
8
- # @return [::Symbol] :public or :private
9
- attr_reader :visibility
10
-
11
- # @return [::Symbol] :class or :module
12
- attr_reader :type
13
-
14
- # does not assert like super, as a namespace without a closure
15
- # may be the root level namespace, or it may not yet be
16
- # qualified
17
- attr_reader :closure
18
-
19
- # @param type [::Symbol] :class or :module
20
- # @param visibility [::Symbol] :public or :private
21
- # @param gates [::Array<String>]
22
- # @param name [String]
23
- def initialize type: :class, visibility: :public, gates: [''], name: '', **splat
24
- # super(location, namespace, name, comments)
25
- super(**splat, name: name)
26
- @type = type
27
- @visibility = visibility
28
- if name.start_with?('::')
29
- # @type [String]
30
- name = name[2..-1] || ''
31
- @closure = Solargraph::Pin::ROOT_PIN
32
- end
33
- @open_gates = gates
34
- if name.include?('::')
35
- # In this case, a chained namespace was opened (e.g., Foo::Bar)
36
- # but Foo does not exist.
37
- parts = name.split('::')
38
- name = parts.pop
39
- closure_name = if [Solargraph::Pin::ROOT_PIN, nil].include?(closure)
40
- ''
41
- else
42
- closure.full_context.namespace + '::'
43
- end
44
- closure_name += parts.join('::')
45
- @closure = Pin::Namespace.new(name: closure_name, gates: [parts.join('::')], source: :namespace)
46
- @context = nil
47
- end
48
- @name = name
49
- end
50
-
51
- def to_rbs
52
- "#{@type.to_s} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip
53
- end
54
-
55
- def inner_desc
56
- if name.nil? || name.empty?
57
- '(top-level)'
58
- else
59
- super
60
- end
61
- end
62
-
63
- def namespace
64
- context.namespace
65
- end
66
-
67
- def full_context
68
- @full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>")
69
- end
70
-
71
- def binder
72
- full_context
73
- end
74
-
75
- def scope
76
- context.scope
77
- end
78
-
79
- def completion_item_kind
80
- (type == :class ? LanguageServer::CompletionItemKinds::CLASS : LanguageServer::CompletionItemKinds::MODULE)
81
- end
82
-
83
- # @return [Integer]
84
- def symbol_kind
85
- (type == :class ? LanguageServer::SymbolKinds::CLASS : LanguageServer::SymbolKinds::MODULE)
86
- end
87
-
88
- # @return [String]
89
- def path
90
- @path ||= (namespace.empty? ? '' : "#{namespace}::") + name
91
- end
92
-
93
- def return_type
94
- @return_type ||= ComplexType.try_parse( (type == :class ? '::Class' : '::Module') + "<::#{path}>")
95
- end
96
-
97
- # @return [Array<String>]
98
- def domains
99
- @domains ||= []
100
- end
101
-
102
- def typify api_map
103
- return_type
104
- end
105
-
106
- def gates
107
- @gates ||= if path.empty?
108
- @open_gates
109
- else
110
- [path] + @open_gates
111
- end
112
- end
113
- end
114
- end
115
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'solargraph/yard_tags'
4
+
5
+ module Solargraph
6
+ module Pin
7
+ class Namespace < Closure
8
+ # @return [::Symbol] :public or :private
9
+ attr_reader :visibility
10
+
11
+ # @return [::Symbol] :class or :module
12
+ attr_reader :type
13
+
14
+ # does not assert like super, as a namespace without a closure
15
+ # may be the root level namespace, or it may not yet be
16
+ # qualified
17
+ attr_reader :closure
18
+
19
+ # @param type [::Symbol] :class or :module
20
+ # @param visibility [::Symbol] :public or :private
21
+ # @param gates [::Array<String>]
22
+ # @param name [String]
23
+ def initialize type: :class, visibility: :public, gates: [''], name: '', **splat
24
+ # super(location, namespace, name, comments)
25
+ super(**splat, name: name)
26
+ @type = type
27
+ @visibility = visibility
28
+ if name.start_with?('::')
29
+ # @type [String]
30
+ name = name[2..-1] || ''
31
+ @closure = Solargraph::Pin::ROOT_PIN
32
+ end
33
+ @open_gates = gates
34
+ if name.include?('::')
35
+ # In this case, a chained namespace was opened (e.g., Foo::Bar)
36
+ # but Foo does not exist.
37
+ parts = name.split('::')
38
+ name = parts.pop
39
+ closure_name = if [Solargraph::Pin::ROOT_PIN, nil].include?(closure)
40
+ ''
41
+ else
42
+ closure.full_context.namespace + '::'
43
+ end
44
+ closure_name += parts.join('::')
45
+ @closure = Pin::Namespace.new(name: closure_name, gates: [parts.join('::')], source: :namespace)
46
+ @context = nil
47
+ end
48
+ @name = name
49
+ end
50
+
51
+ def to_rbs
52
+ "#{@type.to_s} #{return_type.all_params.first.to_rbs}#{rbs_generics}".strip
53
+ end
54
+
55
+ def inner_desc
56
+ if name.nil? || name.empty?
57
+ '(top-level)'
58
+ else
59
+ super
60
+ end
61
+ end
62
+
63
+ def namespace
64
+ context.namespace
65
+ end
66
+
67
+ def full_context
68
+ @full_context ||= ComplexType.try_parse("::#{type.to_s.capitalize}<#{path}>")
69
+ end
70
+
71
+ def binder
72
+ full_context
73
+ end
74
+
75
+ def scope
76
+ context.scope
77
+ end
78
+
79
+ def completion_item_kind
80
+ (type == :class ? LanguageServer::CompletionItemKinds::CLASS : LanguageServer::CompletionItemKinds::MODULE)
81
+ end
82
+
83
+ # @return [Integer]
84
+ def symbol_kind
85
+ (type == :class ? LanguageServer::SymbolKinds::CLASS : LanguageServer::SymbolKinds::MODULE)
86
+ end
87
+
88
+ # @return [String]
89
+ def path
90
+ @path ||= (namespace.empty? ? '' : "#{namespace}::") + name
91
+ end
92
+
93
+ def return_type
94
+ @return_type ||= ComplexType.try_parse( (type == :class ? '::Class' : '::Module') + "<::#{path}>")
95
+ end
96
+
97
+ # @return [Array<String>]
98
+ def domains
99
+ @domains ||= []
100
+ end
101
+
102
+ def typify api_map
103
+ return_type
104
+ end
105
+
106
+ def gates
107
+ @gates ||= if path.empty?
108
+ @open_gates
109
+ else
110
+ [path] + @open_gates
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end