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
data/CHANGELOG.md CHANGED
@@ -1,3 +1,42 @@
1
+ ## 0.58.3 - March 9, 2026
2
+ - Ignore workspace dependencies in cache processes (#1174)
3
+
4
+ ## 0.58.2 - January 19, 2026
5
+ - Avoid rbs pollution (#1146)
6
+ - Fix 'solargraph pin --references ClassName' private method call (#1150)
7
+ - Improve memory efficiency of Position class (#1054)
8
+ - Raise InvalidOffsetError for offsets > text (#1155)
9
+
10
+ ## 0.58.1 - January 2, 2026
11
+ - Normalize line endings to LF (#1142)
12
+
13
+ ## 0.58.0 - January 1, 2026
14
+ - Faster constant resolution (#1083)
15
+ - [regression] Handle RBS static method aliases (#1094)
16
+ - More type fills and shims (#1005)
17
+ - Fix resolution in blocks in type checker (#890)
18
+ - Annotation fixes for strong typechecking (#1057)
19
+ - Remove dead code (#1077)
20
+ - Fix flakey spec (#1080)
21
+ - Fix bad sexpr generation in op_asgn (#1089)
22
+ - Opt-in for MFA requirement (#730)
23
+ - [regression] Fix resolution issues with namespaces from YARD (#1097)
24
+ - Improve a pin combination case around selfy types (#1024)
25
+ - Rescue reference errors in hosts (#1105)
26
+ - Relax bundler runtime dependency version constraint to support newer versions (#1125)
27
+ - Remove stale Pathname test (#1135)
28
+ - Enable strong type checking in CI (#928)
29
+ - Stale sg-ignore
30
+ - Use rbs 3.9.5 in tests (#1136)
31
+ - Drop broken 'namespaces' method (#1065)
32
+ - Add ActiveRecord example from RBS (#1074)
33
+ - Keep workspace directories as absolute paths (#1076)
34
+ - Handle bad gem_dir from gemspec object (#1079)
35
+ - Test for absolute require paths (#1137)
36
+ - [regression] Fix resolution of ambiguous argument types (#1098)
37
+ - Remove sg-ignore for String#=~ (#1138)
38
+ - Allow levels to be changed for typechecking rules in .solargraph.yml (#1126)
39
+
1
40
  ## 0.57.0 - September 16, 2025
2
41
  - Support ActiveSupport::Concern pattern for class methods (#948)
3
42
  - More CI checks (#996)
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ task :console do
9
9
  end
10
10
 
11
11
  desc "Run the type checker"
12
- task typecheck: [:typecheck_typed]
12
+ task typecheck: [:typecheck_strong]
13
13
 
14
14
  desc "Run the type checker at typed level - return code issues provable without annotations being correct"
15
15
  task :typecheck_typed do
data/bin/solargraph CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ # turn off warning diagnostics from Ruby
4
+ $VERBOSE=nil
5
+
3
6
  require 'solargraph'
4
7
 
5
8
  Solargraph::Shell.start(ARGV)
@@ -1,110 +1,110 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class ApiMap
5
- class Cache
6
- def initialize
7
- # @type [Hash{String => Array<Pin::Method>}]
8
- @methods = {}
9
- # @type [Hash{String, Array<String> => Array<Pin::Base>}]
10
- @constants = {}
11
- # @type [Hash{String => String}]
12
- @qualified_namespaces = {}
13
- # @type [Hash{String => Pin::Method}]
14
- @receiver_definitions = {}
15
- # @type [Hash{String => SourceMap::Clip}]
16
- @clips = {}
17
- end
18
-
19
- def to_s
20
- self.class.to_s
21
- end
22
-
23
- # avoid enormous dump
24
- def inspect
25
- to_s
26
- end
27
-
28
- # @param fqns [String]
29
- # @param scope [Symbol]
30
- # @param visibility [Array<Symbol>]
31
- # @param deep [Boolean]
32
- # @return [Array<Pin::Method>]
33
- def get_methods fqns, scope, visibility, deep
34
- @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
35
- end
36
-
37
- # @param fqns [String]
38
- # @param scope [Symbol]
39
- # @param visibility [Array<Symbol>]
40
- # @param deep [Boolean]
41
- # @param value [Array<Pin::Method>]
42
- # @return [void]
43
- def set_methods fqns, scope, visibility, deep, value
44
- @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
45
- end
46
-
47
- # @param namespace [String]
48
- # @param contexts [Array<String>]
49
- # @return [Array<Pin::Base>]
50
- def get_constants namespace, contexts
51
- @constants["#{namespace}|#{contexts}"]
52
- end
53
-
54
- # @param namespace [String]
55
- # @param contexts [Array<String>]
56
- # @param value [Array<Pin::Base>]
57
- # @return [void]
58
- def set_constants namespace, contexts, value
59
- @constants["#{namespace}|#{contexts}"] = value
60
- end
61
-
62
- # @param name [String]
63
- # @param context [String]
64
- # @return [String]
65
- def get_qualified_namespace name, context
66
- @qualified_namespaces["#{name}|#{context}"]
67
- end
68
-
69
- # @param name [String]
70
- # @param context [String]
71
- # @param value [String]
72
- # @return [void]
73
- def set_qualified_namespace name, context, value
74
- @qualified_namespaces["#{name}|#{context}"] = value
75
- end
76
-
77
- # @param path [String]
78
- # @return [Pin::Method]
79
- def get_receiver_definition path
80
- @receiver_definitions[path]
81
- end
82
-
83
- # @param path [String]
84
- # @param pin [Pin::Method]
85
- # @return [void]
86
- def set_receiver_definition path, pin
87
- @receiver_definitions[path] = pin
88
- end
89
-
90
- # @return [void]
91
- def clear
92
- return if empty?
93
-
94
- all_caches.each(&:clear)
95
- end
96
-
97
- # @return [Boolean]
98
- def empty?
99
- all_caches.all?(&:empty?)
100
- end
101
-
102
- private
103
-
104
- # @return [Array<Object>]
105
- def all_caches
106
- [@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
107
- end
108
- end
109
- end
110
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class ApiMap
5
+ class Cache
6
+ def initialize
7
+ # @type [Hash{String => Array<Pin::Method>}]
8
+ @methods = {}
9
+ # @type [Hash{String, Array<String> => Array<Pin::Base>}]
10
+ @constants = {}
11
+ # @type [Hash{String => String}]
12
+ @qualified_namespaces = {}
13
+ # @type [Hash{String => Pin::Method}]
14
+ @receiver_definitions = {}
15
+ # @type [Hash{String => SourceMap::Clip}]
16
+ @clips = {}
17
+ end
18
+
19
+ def to_s
20
+ self.class.to_s
21
+ end
22
+
23
+ # avoid enormous dump
24
+ def inspect
25
+ to_s
26
+ end
27
+
28
+ # @param fqns [String]
29
+ # @param scope [Symbol]
30
+ # @param visibility [Array<Symbol>]
31
+ # @param deep [Boolean]
32
+ # @return [Array<Pin::Method>]
33
+ def get_methods fqns, scope, visibility, deep
34
+ @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
35
+ end
36
+
37
+ # @param fqns [String]
38
+ # @param scope [Symbol]
39
+ # @param visibility [Array<Symbol>]
40
+ # @param deep [Boolean]
41
+ # @param value [Array<Pin::Method>]
42
+ # @return [void]
43
+ def set_methods fqns, scope, visibility, deep, value
44
+ @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
45
+ end
46
+
47
+ # @param namespace [String]
48
+ # @param contexts [Array<String>]
49
+ # @return [Array<Pin::Base>]
50
+ def get_constants namespace, contexts
51
+ @constants["#{namespace}|#{contexts}"]
52
+ end
53
+
54
+ # @param namespace [String]
55
+ # @param contexts [Array<String>]
56
+ # @param value [Array<Pin::Base>]
57
+ # @return [void]
58
+ def set_constants namespace, contexts, value
59
+ @constants["#{namespace}|#{contexts}"] = value
60
+ end
61
+
62
+ # @param name [String]
63
+ # @param context [String]
64
+ # @return [String]
65
+ def get_qualified_namespace name, context
66
+ @qualified_namespaces["#{name}|#{context}"]
67
+ end
68
+
69
+ # @param name [String]
70
+ # @param context [String]
71
+ # @param value [String]
72
+ # @return [void]
73
+ def set_qualified_namespace name, context, value
74
+ @qualified_namespaces["#{name}|#{context}"] = value
75
+ end
76
+
77
+ # @param path [String]
78
+ # @return [Pin::Method]
79
+ def get_receiver_definition path
80
+ @receiver_definitions[path]
81
+ end
82
+
83
+ # @param path [String]
84
+ # @param pin [Pin::Method]
85
+ # @return [void]
86
+ def set_receiver_definition path, pin
87
+ @receiver_definitions[path] = pin
88
+ end
89
+
90
+ # @return [void]
91
+ def clear
92
+ return if empty?
93
+
94
+ all_caches.each(&:clear)
95
+ end
96
+
97
+ # @return [Boolean]
98
+ def empty?
99
+ all_caches.all?(&:empty?)
100
+ end
101
+
102
+ private
103
+
104
+ # @return [Array<Object>]
105
+ def all_caches
106
+ [@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
107
+ end
108
+ end
109
+ end
110
+ end