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,66 +1,84 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class RbsMap
5
- # Override pins to fill gaps in RbsMap::CoreMap coverage
6
- #
7
- module CoreFills
8
- Override = Pin::Reference::Override
9
-
10
- KEYWORDS = [
11
- '__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
12
- 'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
13
- 'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
14
- 'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
15
- 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
16
- ].map { |k| Pin::Keyword.new(k, source: :core_fill) }
17
-
18
- MISSING = [
19
- Solargraph::Pin::Method.new(name: 'class', scope: :instance,
20
- closure: Solargraph::Pin::Namespace.new(name: 'Object', source: :core_fill), comments: '@return [::Class<self>]',
21
- source: :core_fill)
22
- ]
23
-
24
- OVERRIDES = [
25
- Override.from_comment('BasicObject#instance_eval', '@yieldreceiver [self]',
26
- source: :core_fill),
27
- Override.from_comment('BasicObject#instance_exec', '@yieldreceiver [self]',
28
- source: :core_fill),
29
- Override.from_comment('Module#define_method', '@yieldreceiver [::Object<self>]',
30
- source: :core_fill),
31
- Override.from_comment('Module#class_eval', '@yieldreceiver [::Class<self>]',
32
- source: :core_fill),
33
- Override.from_comment('Module#class_exec', '@yieldreceiver [::Class<self>]',
34
- source: :core_fill),
35
- Override.from_comment('Module#module_eval', '@yieldreceiver [::Module<self>]',
36
- source: :core_fill),
37
- Override.from_comment('Module#module_exec', '@yieldreceiver [::Module<self>]',
38
- source: :core_fill),
39
- # RBS does not define Class with a generic, so all calls to
40
- # generic() return an 'untyped'. We can do better:
41
- Override.method_return('Class#allocate', 'self', source: :core_fill),
42
- ]
43
-
44
- # @todo I don't see any direct link in RBS to build this from -
45
- # presumably RBS is using duck typing to match interfaces
46
- # against concrete classes
47
- INCLUDES = [
48
- Solargraph::Pin::Reference::Include.new(name: '_ToAry',
49
- closure: Solargraph::Pin::Namespace.new(name: 'Array', source: :core_fill),
50
- generic_values: ['generic<Elem>'],
51
- source: :core_fill)
52
- ]
53
-
54
- # HACK: Add Errno exception classes
55
- errno = Solargraph::Pin::Namespace.new(name: 'Errno', source: :core_fill)
56
- errnos = []
57
- Errno.constants.each do |const|
58
- errnos.push Solargraph::Pin::Namespace.new(type: :class, name: const.to_s, closure: errno, source: :core_fill)
59
- errnos.push Solargraph::Pin::Reference::Superclass.new(closure: errnos.last, name: 'SystemCallError', source: :core_fill)
60
- end
61
- ERRNOS = errnos
62
-
63
- ALL = KEYWORDS + MISSING + OVERRIDES + ERRNOS + INCLUDES
64
- end
65
- end
66
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class RbsMap
5
+ # Override pins to fill gaps in RbsMap::CoreMap coverage
6
+ #
7
+ module CoreFills
8
+ Override = Pin::Reference::Override
9
+
10
+ KEYWORDS = [
11
+ '__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
12
+ 'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
13
+ 'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
14
+ 'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
15
+ 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
16
+ ].map { |k| Pin::Keyword.new(k, source: :core_fill) }
17
+
18
+ MISSING = [
19
+ Solargraph::Pin::Method.new(name: 'class', scope: :instance,
20
+ closure: Solargraph::Pin::Namespace.new(name: 'Object', source: :core_fill), comments: '@return [::Class<self>]',
21
+ source: :core_fill)
22
+ ]
23
+
24
+ OVERRIDES = [
25
+ Override.from_comment('BasicObject#instance_eval', '@yieldreceiver [self]',
26
+ source: :core_fill),
27
+ Override.from_comment('BasicObject#instance_exec', '@yieldreceiver [self]',
28
+ source: :core_fill),
29
+ Override.from_comment('Module#define_method', '@yieldreceiver [::Object<self>]',
30
+ source: :core_fill),
31
+ Override.from_comment('Module#class_eval', '@yieldreceiver [::Class<self>]',
32
+ source: :core_fill),
33
+ Override.from_comment('Module#class_exec', '@yieldreceiver [::Class<self>]',
34
+ source: :core_fill),
35
+ Override.from_comment('Module#module_eval', '@yieldreceiver [::Module<self>]',
36
+ source: :core_fill),
37
+ Override.from_comment('Module#module_exec', '@yieldreceiver [::Module<self>]',
38
+ source: :core_fill),
39
+ # RBS does not define Class with a generic, so all calls to
40
+ # generic() return an 'untyped'. We can do better:
41
+ Override.method_return('Class#allocate', 'self', source: :core_fill),
42
+ ]
43
+
44
+ # @todo I don't see any direct link in RBS to build this from -
45
+ # presumably RBS is using duck typing to match interfaces
46
+ # against concrete classes
47
+ INCLUDES = [
48
+ Solargraph::Pin::Reference::Include.new(name: '_ToAry',
49
+ closure: Solargraph::Pin::Namespace.new(name: 'Array', source: :core_fill),
50
+ generic_values: ['generic<Elem>'],
51
+ source: :core_fill),
52
+ Solargraph::Pin::Reference::Include.new(name: '_ToAry',
53
+ closure: Solargraph::Pin::Namespace.new(name: 'Set', source: :core_fill),
54
+ generic_values: ['generic<Elem>'],
55
+ source: :core_fill),
56
+ Solargraph::Pin::Reference::Include.new(name: '_Each',
57
+ closure: Solargraph::Pin::Namespace.new(name: 'Array', source: :core_fill),
58
+ generic_values: ['generic<Elem>'],
59
+ source: :core_fill),
60
+ Solargraph::Pin::Reference::Include.new(name: '_Each',
61
+ closure: Solargraph::Pin::Namespace.new(name: 'Set', source: :core_fill),
62
+ generic_values: ['generic<Elem>'],
63
+ source: :core_fill),
64
+ Solargraph::Pin::Reference::Include.new(name: '_ToS',
65
+ closure: Solargraph::Pin::Namespace.new(name: 'Object', source: :core_fill),
66
+ source: :core_fill),
67
+ Solargraph::Pin::Reference::Include.new(name: '_ToS',
68
+ closure: Solargraph::Pin::Namespace.new(name: 'String', source: :core_fill),
69
+ source: :core_fill)
70
+ ]
71
+
72
+ # HACK: Add Errno exception classes
73
+ errno = Solargraph::Pin::Namespace.new(name: 'Errno', source: :core_fill)
74
+ errnos = []
75
+ Errno.constants.each do |const|
76
+ errnos.push Solargraph::Pin::Namespace.new(type: :class, name: const.to_s, closure: errno, source: :core_fill)
77
+ errnos.push Solargraph::Pin::Reference::Superclass.new(closure: errnos.last, name: 'SystemCallError', source: :core_fill)
78
+ end
79
+ ERRNOS = errnos
80
+
81
+ ALL = KEYWORDS + MISSING + OVERRIDES + ERRNOS + INCLUDES
82
+ end
83
+ end
84
+ end
@@ -1,54 +1,58 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- class RbsMap
5
- # Ruby core pins
6
- #
7
- class CoreMap
8
-
9
- def resolved?
10
- true
11
- end
12
-
13
- FILLS_DIRECTORY = File.join(File.dirname(__FILE__), '..', '..', '..', 'rbs', 'fills')
14
-
15
- def initialize; end
16
-
17
- # @return [Enumerable<Pin::Base>]
18
- def pins
19
- return @pins if @pins
20
-
21
- @pins = []
22
- cache = PinCache.deserialize_core
23
- if cache
24
- @pins.replace cache
25
- else
26
- loader.add(path: Pathname(FILLS_DIRECTORY))
27
- @pins = conversions.pins
28
- @pins.concat RbsMap::CoreFills::ALL
29
- processed = ApiMap::Store.new(pins).pins.reject { |p| p.is_a?(Solargraph::Pin::Reference::Override) }
30
- @pins.replace processed
31
-
32
- PinCache.serialize_core @pins
33
- end
34
- @pins
35
- end
36
-
37
- def loader
38
- @loader ||= RBS::EnvironmentLoader.new(repository: RBS::Repository.new(no_stdlib: false))
39
- end
40
-
41
- private
42
-
43
- # @return [RBS::EnvironmentLoader]
44
- def loader
45
- @loader ||= RBS::EnvironmentLoader.new(repository: RBS::Repository.new(no_stdlib: false))
46
- end
47
-
48
- # @return [Conversions]
49
- def conversions
50
- @conversions ||= Conversions.new(loader: loader)
51
- end
52
- end
53
- end
54
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class RbsMap
5
+ # Ruby core pins
6
+ #
7
+ class CoreMap
8
+ include Logging
9
+
10
+ def resolved?
11
+ true
12
+ end
13
+
14
+ FILLS_DIRECTORY = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'rbs', 'fills'))
15
+
16
+ def initialize; end
17
+
18
+ # @return [Enumerable<Pin::Base>]
19
+ def pins
20
+ return @pins if @pins
21
+
22
+ @pins = []
23
+ cache = PinCache.deserialize_core
24
+ if cache
25
+ @pins.replace cache
26
+ else
27
+ @pins.concat conversions.pins
28
+
29
+ # Avoid RBS::DuplicatedDeclarationError by loading in a different EnvironmentLoader
30
+ fill_loader = RBS::EnvironmentLoader.new(core_root: nil, repository: RBS::Repository.new(no_stdlib: false))
31
+ fill_loader.add(path: Pathname(FILLS_DIRECTORY))
32
+ fill_conversions = Conversions.new(loader: fill_loader)
33
+ @pins.concat fill_conversions.pins
34
+
35
+ @pins.concat RbsMap::CoreFills::ALL
36
+
37
+ processed = ApiMap::Store.new(pins).pins.reject { |p| p.is_a?(Solargraph::Pin::Reference::Override) }
38
+ @pins.replace processed
39
+
40
+ PinCache.serialize_core @pins
41
+ end
42
+ @pins
43
+ end
44
+
45
+ private
46
+
47
+ # @return [RBS::EnvironmentLoader]
48
+ def loader
49
+ @loader ||= RBS::EnvironmentLoader.new(repository: RBS::Repository.new(no_stdlib: false))
50
+ end
51
+
52
+ # @return [Conversions]
53
+ def conversions
54
+ @conversions ||= Conversions.new(loader: loader)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,43 +1,43 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rbs'
4
-
5
- module Solargraph
6
- class RbsMap
7
- # Ruby stdlib pins
8
- #
9
- class StdlibMap < RbsMap
10
- include Logging
11
-
12
- # @type [Hash{String => RbsMap}]
13
- @stdlib_maps_hash = {}
14
-
15
- # @param library [String]
16
- def initialize library
17
- cached_pins = PinCache.deserialize_stdlib_require library
18
- if cached_pins
19
- @pins = cached_pins
20
- @resolved = true
21
- @loaded = true
22
- logger.debug { "Deserialized #{cached_pins.length} cached pins for stdlib require #{library.inspect}" }
23
- else
24
- super
25
- unless resolved?
26
- @pins = []
27
- logger.info { "Could not resolve #{library.inspect}" }
28
- return
29
- end
30
- generated_pins = pins
31
- logger.debug { "Found #{generated_pins.length} pins for stdlib library #{library}" }
32
- PinCache.serialize_stdlib_require library, generated_pins
33
- end
34
- end
35
-
36
- # @param library [String]
37
- # @return [StdlibMap]
38
- def self.load library
39
- @stdlib_maps_hash[library] ||= StdlibMap.new(library)
40
- end
41
- end
42
- end
43
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'rbs'
4
+
5
+ module Solargraph
6
+ class RbsMap
7
+ # Ruby stdlib pins
8
+ #
9
+ class StdlibMap < RbsMap
10
+ include Logging
11
+
12
+ # @type [Hash{String => RbsMap}]
13
+ @stdlib_maps_hash = {}
14
+
15
+ # @param library [String]
16
+ def initialize library
17
+ cached_pins = PinCache.deserialize_stdlib_require library
18
+ if cached_pins
19
+ @pins = cached_pins
20
+ @resolved = true
21
+ @loaded = true
22
+ logger.debug { "Deserialized #{cached_pins.length} cached pins for stdlib require #{library.inspect}" }
23
+ else
24
+ super
25
+ unless resolved?
26
+ @pins = []
27
+ logger.info { "Could not resolve #{library.inspect}" }
28
+ return
29
+ end
30
+ generated_pins = pins
31
+ logger.debug { "Found #{generated_pins.length} pins for stdlib library #{library}" }
32
+ PinCache.serialize_stdlib_require library, generated_pins
33
+ end
34
+ end
35
+
36
+ # @param library [String]
37
+ # @return [StdlibMap]
38
+ def self.load library
39
+ @stdlib_maps_hash[library] ||= StdlibMap.new(library)
40
+ end
41
+ end
42
+ end
43
+ end