solargraph 0.46.0 → 0.54.5

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 (279) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/plugins.yml +40 -0
  4. data/.github/workflows/rspec.yml +37 -41
  5. data/.github/workflows/typecheck.yml +34 -0
  6. data/.gitignore +9 -9
  7. data/.rspec +2 -2
  8. data/.yardopts +2 -2
  9. data/CHANGELOG.md +1338 -1115
  10. data/Gemfile +0 -0
  11. data/LICENSE +1 -1
  12. data/README.md +131 -128
  13. data/Rakefile +0 -0
  14. data/SPONSORS.md +10 -18
  15. data/bin/solargraph +0 -0
  16. data/lib/solargraph/api_map/cache.rb +109 -70
  17. data/lib/solargraph/api_map/index.rb +167 -0
  18. data/lib/solargraph/api_map/source_to_yard.rb +88 -81
  19. data/lib/solargraph/api_map/store.rb +260 -256
  20. data/lib/solargraph/api_map.rb +870 -686
  21. data/lib/solargraph/bench.rb +44 -27
  22. data/lib/solargraph/cache.rb +77 -0
  23. data/lib/solargraph/complex_type/type_methods.rb +217 -130
  24. data/lib/solargraph/complex_type/unique_type.rb +386 -75
  25. data/lib/solargraph/complex_type.rb +394 -221
  26. data/lib/solargraph/convention/base.rb +33 -33
  27. data/lib/solargraph/convention/gemfile.rb +15 -15
  28. data/lib/solargraph/convention/gemspec.rb +22 -22
  29. data/lib/solargraph/convention/rakefile.rb +17 -0
  30. data/lib/solargraph/convention.rb +47 -47
  31. data/lib/solargraph/converters/dd.rb +17 -12
  32. data/lib/solargraph/converters/dl.rb +15 -12
  33. data/lib/solargraph/converters/dt.rb +15 -12
  34. data/lib/solargraph/converters/misc.rb +1 -1
  35. data/lib/solargraph/diagnostics/base.rb +29 -29
  36. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  37. data/lib/solargraph/diagnostics/rubocop.rb +113 -98
  38. data/lib/solargraph/diagnostics/rubocop_helpers.rb +66 -63
  39. data/lib/solargraph/diagnostics/severities.rb +15 -15
  40. data/lib/solargraph/diagnostics/type_check.rb +55 -54
  41. data/lib/solargraph/diagnostics/update_errors.rb +41 -41
  42. data/lib/solargraph/diagnostics.rb +55 -55
  43. data/lib/solargraph/doc_map.rb +188 -0
  44. data/lib/solargraph/environ.rb +45 -45
  45. data/lib/solargraph/equality.rb +33 -0
  46. data/lib/solargraph/gem_pins.rb +72 -0
  47. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
  48. data/lib/solargraph/language_server/error_codes.rb +20 -20
  49. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  50. data/lib/solargraph/language_server/host/dispatch.rb +128 -111
  51. data/lib/solargraph/language_server/host/message_worker.rb +106 -59
  52. data/lib/solargraph/language_server/host/sources.rb +99 -156
  53. data/lib/solargraph/language_server/host.rb +861 -865
  54. data/lib/solargraph/language_server/message/base.rb +96 -89
  55. data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
  57. data/lib/solargraph/language_server/message/client.rb +11 -11
  58. data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -58
  59. data/lib/solargraph/language_server/message/completion_item.rb +11 -11
  60. data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
  61. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +112 -100
  62. data/lib/solargraph/language_server/message/extended/document.rb +20 -20
  63. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  64. data/lib/solargraph/language_server/message/extended/download_core.rb +19 -23
  65. data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
  66. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  67. data/lib/solargraph/language_server/message/extended.rb +21 -21
  68. data/lib/solargraph/language_server/message/initialize.rb +191 -162
  69. data/lib/solargraph/language_server/message/initialized.rb +28 -27
  70. data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
  71. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
  72. data/lib/solargraph/language_server/message/shutdown.rb +13 -13
  73. data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
  74. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
  75. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -59
  76. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
  77. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
  78. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
  79. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
  80. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
  81. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
  82. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -23
  83. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
  84. data/lib/solargraph/language_server/message/text_document/formatting.rb +131 -126
  85. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -54
  86. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
  87. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
  88. data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
  89. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
  90. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -29
  91. data/lib/solargraph/language_server/message/text_document/type_definition.rb +24 -0
  92. data/lib/solargraph/language_server/message/text_document.rb +28 -28
  93. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -30
  94. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -33
  95. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
  96. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  97. data/lib/solargraph/language_server/message/workspace.rb +14 -14
  98. data/lib/solargraph/language_server/message.rb +94 -93
  99. data/lib/solargraph/language_server/message_types.rb +14 -14
  100. data/lib/solargraph/language_server/progress.rb +135 -0
  101. data/lib/solargraph/language_server/request.rb +24 -24
  102. data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
  103. data/lib/solargraph/language_server/transport/adapter.rb +68 -53
  104. data/lib/solargraph/language_server/transport/data_reader.rb +74 -72
  105. data/lib/solargraph/language_server/transport.rb +13 -13
  106. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  107. data/lib/solargraph/language_server.rb +20 -19
  108. data/lib/solargraph/library.rb +663 -546
  109. data/lib/solargraph/location.rb +58 -37
  110. data/lib/solargraph/logging.rb +27 -27
  111. data/lib/solargraph/page.rb +89 -83
  112. data/lib/solargraph/parser/comment_ripper.rb +56 -52
  113. data/lib/solargraph/parser/node_methods.rb +83 -43
  114. data/lib/solargraph/parser/node_processor/base.rb +87 -77
  115. data/lib/solargraph/parser/node_processor.rb +45 -43
  116. data/lib/solargraph/parser/{legacy → parser_gem}/class_methods.rb +153 -135
  117. data/lib/solargraph/parser/{legacy → parser_gem}/flawed_builder.rb +18 -16
  118. data/lib/solargraph/parser/{legacy → parser_gem}/node_chainer.rb +164 -148
  119. data/lib/solargraph/parser/parser_gem/node_methods.rb +495 -0
  120. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/alias_node.rb +23 -23
  121. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +57 -0
  122. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/begin_node.rb +15 -15
  123. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/block_node.rb +43 -42
  124. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/casgn_node.rb +35 -25
  125. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/cvasgn_node.rb +23 -23
  126. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/def_node.rb +50 -63
  127. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/defs_node.rb +36 -36
  128. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/gvasgn_node.rb +23 -23
  129. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/ivasgn_node.rb +38 -38
  130. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/lvasgn_node.rb +28 -28
  131. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +53 -0
  132. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/namespace_node.rb +39 -39
  133. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/orasgn_node.rb +16 -16
  134. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/resbody_node.rb +36 -36
  135. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +42 -0
  136. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/send_node.rb +259 -257
  137. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/sym_node.rb +18 -18
  138. data/lib/solargraph/parser/parser_gem/node_processors.rb +56 -0
  139. data/lib/solargraph/parser/parser_gem.rb +12 -0
  140. data/lib/solargraph/parser/region.rb +66 -66
  141. data/lib/solargraph/parser/snippet.rb +15 -13
  142. data/lib/solargraph/parser.rb +22 -26
  143. data/lib/solargraph/pin/base.rb +378 -296
  144. data/lib/solargraph/pin/base_variable.rb +118 -84
  145. data/lib/solargraph/pin/block.rb +101 -72
  146. data/lib/solargraph/pin/callable.rb +147 -0
  147. data/lib/solargraph/pin/class_variable.rb +8 -8
  148. data/lib/solargraph/pin/closure.rb +57 -37
  149. data/lib/solargraph/pin/common.rb +70 -70
  150. data/lib/solargraph/pin/constant.rb +43 -43
  151. data/lib/solargraph/pin/conversions.rb +123 -96
  152. data/lib/solargraph/pin/delegated_method.rb +101 -0
  153. data/lib/solargraph/pin/documenting.rb +98 -105
  154. data/lib/solargraph/pin/duck_method.rb +16 -16
  155. data/lib/solargraph/pin/global_variable.rb +8 -8
  156. data/lib/solargraph/pin/instance_variable.rb +34 -30
  157. data/lib/solargraph/pin/keyword.rb +15 -15
  158. data/lib/solargraph/pin/keyword_param.rb +8 -8
  159. data/lib/solargraph/pin/local_variable.rb +67 -55
  160. data/lib/solargraph/pin/method.rb +527 -245
  161. data/lib/solargraph/pin/method_alias.rb +31 -31
  162. data/lib/solargraph/pin/namespace.rb +107 -91
  163. data/lib/solargraph/pin/parameter.rb +212 -201
  164. data/lib/solargraph/pin/proxy_type.rb +29 -29
  165. data/lib/solargraph/pin/reference/extend.rb +10 -10
  166. data/lib/solargraph/pin/reference/include.rb +10 -10
  167. data/lib/solargraph/pin/reference/override.rb +29 -29
  168. data/lib/solargraph/pin/reference/prepend.rb +10 -10
  169. data/lib/solargraph/pin/reference/require.rb +14 -14
  170. data/lib/solargraph/pin/reference/superclass.rb +10 -10
  171. data/lib/solargraph/pin/reference.rb +22 -14
  172. data/lib/solargraph/pin/search.rb +56 -56
  173. data/lib/solargraph/pin/signature.rb +17 -0
  174. data/lib/solargraph/pin/singleton.rb +11 -11
  175. data/lib/solargraph/pin/symbol.rb +47 -47
  176. data/lib/solargraph/pin.rb +41 -37
  177. data/lib/solargraph/position.rb +107 -100
  178. data/lib/solargraph/range.rb +98 -95
  179. data/lib/solargraph/rbs_map/conversions.rb +646 -0
  180. data/lib/solargraph/rbs_map/core_fills.rb +50 -0
  181. data/lib/solargraph/rbs_map/core_map.rb +28 -0
  182. data/lib/solargraph/rbs_map/stdlib_map.rb +33 -0
  183. data/lib/solargraph/rbs_map.rb +93 -0
  184. data/lib/solargraph/server_methods.rb +16 -16
  185. data/lib/solargraph/shell.rb +269 -226
  186. data/lib/solargraph/source/chain/array.rb +33 -0
  187. data/lib/solargraph/source/chain/block_symbol.rb +13 -0
  188. data/lib/solargraph/source/chain/block_variable.rb +13 -13
  189. data/lib/solargraph/source/chain/call.rb +303 -204
  190. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  191. data/lib/solargraph/source/chain/constant.rb +89 -75
  192. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  193. data/lib/solargraph/source/chain/hash.rb +33 -28
  194. data/lib/solargraph/source/chain/head.rb +19 -19
  195. data/lib/solargraph/source/chain/if.rb +28 -0
  196. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  197. data/lib/solargraph/source/chain/link.rb +98 -71
  198. data/lib/solargraph/source/chain/literal.rb +28 -23
  199. data/lib/solargraph/source/chain/or.rb +23 -23
  200. data/lib/solargraph/source/chain/q_call.rb +11 -11
  201. data/lib/solargraph/source/chain/variable.rb +13 -13
  202. data/lib/solargraph/source/chain/z_super.rb +30 -30
  203. data/lib/solargraph/source/chain.rb +252 -164
  204. data/lib/solargraph/source/change.rb +82 -79
  205. data/lib/solargraph/source/cursor.rb +167 -164
  206. data/lib/solargraph/source/source_chainer.rb +194 -191
  207. data/lib/solargraph/source/updater.rb +55 -54
  208. data/lib/solargraph/source.rb +495 -522
  209. data/lib/solargraph/source_map/clip.rb +232 -224
  210. data/lib/solargraph/source_map/completion.rb +23 -23
  211. data/lib/solargraph/source_map/data.rb +30 -0
  212. data/lib/solargraph/source_map/mapper.rb +255 -212
  213. data/lib/solargraph/source_map.rb +217 -180
  214. data/lib/solargraph/type_checker/checks.rb +120 -99
  215. data/lib/solargraph/type_checker/param_def.rb +35 -35
  216. data/lib/solargraph/type_checker/problem.rb +32 -32
  217. data/lib/solargraph/type_checker/rules.rb +62 -57
  218. data/lib/solargraph/type_checker.rb +672 -543
  219. data/lib/solargraph/version.rb +5 -5
  220. data/lib/solargraph/views/environment.erb +56 -58
  221. data/lib/solargraph/workspace/config.rb +239 -231
  222. data/lib/solargraph/workspace.rb +239 -215
  223. data/lib/solargraph/yard_map/cache.rb +25 -19
  224. data/lib/solargraph/yard_map/helpers.rb +16 -16
  225. data/lib/solargraph/yard_map/mapper/to_constant.rb +26 -25
  226. data/lib/solargraph/yard_map/mapper/to_method.rb +94 -78
  227. data/lib/solargraph/yard_map/mapper/to_namespace.rb +28 -27
  228. data/lib/solargraph/yard_map/mapper.rb +78 -77
  229. data/lib/solargraph/yard_map/to_method.rb +86 -79
  230. data/lib/solargraph/yard_map.rb +18 -460
  231. data/lib/solargraph/yard_tags.rb +20 -0
  232. data/lib/solargraph/yardoc.rb +52 -0
  233. data/lib/solargraph.rb +72 -69
  234. data/solargraph.gemspec +21 -10
  235. metadata +184 -115
  236. data/.travis.yml +0 -19
  237. data/lib/solargraph/api_map/bundler_methods.rb +0 -22
  238. data/lib/solargraph/compat.rb +0 -37
  239. data/lib/solargraph/convention/rspec.rb +0 -30
  240. data/lib/solargraph/documentor.rb +0 -76
  241. data/lib/solargraph/language_server/host/cataloger.rb +0 -56
  242. data/lib/solargraph/parser/legacy/node_methods.rb +0 -325
  243. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +0 -23
  244. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +0 -35
  245. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +0 -15
  246. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +0 -63
  247. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +0 -21
  248. data/lib/solargraph/parser/legacy/node_processors.rb +0 -54
  249. data/lib/solargraph/parser/legacy.rb +0 -12
  250. data/lib/solargraph/parser/rubyvm/class_methods.rb +0 -144
  251. data/lib/solargraph/parser/rubyvm/node_chainer.rb +0 -160
  252. data/lib/solargraph/parser/rubyvm/node_methods.rb +0 -315
  253. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +0 -85
  254. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +0 -42
  255. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +0 -22
  256. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +0 -23
  257. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +0 -57
  258. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +0 -23
  259. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +0 -38
  260. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +0 -39
  261. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +0 -20
  262. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +0 -27
  263. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +0 -39
  264. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +0 -26
  265. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +0 -15
  266. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +0 -45
  267. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +0 -21
  268. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +0 -15
  269. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +0 -277
  270. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +0 -18
  271. data/lib/solargraph/parser/rubyvm/node_processors.rb +0 -63
  272. data/lib/solargraph/parser/rubyvm.rb +0 -40
  273. data/lib/solargraph/yard_map/core_docs.rb +0 -170
  274. data/lib/solargraph/yard_map/core_fills.rb +0 -208
  275. data/lib/solargraph/yard_map/core_gen.rb +0 -76
  276. data/lib/solargraph/yard_map/rdoc_to_yard.rb +0 -140
  277. data/lib/solargraph/yard_map/stdlib_fills.rb +0 -43
  278. data/lib/yard-solargraph.rb +0 -33
  279. data/yardoc/2.2.2.tar.gz +0 -0
@@ -1,33 +1,33 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Convention
5
- # The base class for Conventions.
6
- #
7
- # A Convention provides Environs that customize ApiMaps with additional
8
- # pins and other information. Subclasses should implement the `local` and
9
- # `global` methods as necessary.
10
- #
11
- class Base
12
- EMPTY_ENVIRON = Environ.new
13
-
14
- # The Environ for a source map.
15
- # Subclasses can override this method.
16
- #
17
- # @param source_map [SourceMap]
18
- # @return [Environ]
19
- def local source_map
20
- EMPTY_ENVIRON
21
- end
22
-
23
- # The Environ for a YARD map.
24
- # Subclasses can override this method.
25
- #
26
- # @param yard_map [YardMap]
27
- # @return [Environ]
28
- def global yard_map
29
- EMPTY_ENVIRON
30
- end
31
- end
32
- end
33
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Convention
5
+ # The base class for Conventions.
6
+ #
7
+ # A Convention provides Environs that customize ApiMaps with additional
8
+ # pins and other information. Subclasses should implement the `local` and
9
+ # `global` methods as necessary.
10
+ #
11
+ class Base
12
+ EMPTY_ENVIRON = Environ.new
13
+
14
+ # The Environ for a source map.
15
+ # Subclasses can override this method.
16
+ #
17
+ # @param source_map [SourceMap]
18
+ # @return [Environ]
19
+ def local source_map
20
+ EMPTY_ENVIRON
21
+ end
22
+
23
+ # The Environ for a YARD map.
24
+ # Subclasses can override this method.
25
+ #
26
+ # @param yard_map [YardMap]
27
+ # @return [Environ]
28
+ def global yard_map
29
+ EMPTY_ENVIRON
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,15 +1,15 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Convention
5
- class Gemfile < Base
6
- def local source_map
7
- return EMPTY_ENVIRON unless File.basename(source_map.filename) == 'Gemfile'
8
- @environ ||= Environ.new(
9
- requires: ['bundler'],
10
- domains: ['Bundler::Dsl']
11
- )
12
- end
13
- end
14
- end
15
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Convention
5
+ class Gemfile < Base
6
+ def local source_map
7
+ return EMPTY_ENVIRON unless File.basename(source_map.filename) == 'Gemfile'
8
+ @environ ||= Environ.new(
9
+ requires: ['bundler'],
10
+ domains: ['Bundler::Dsl']
11
+ )
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,22 +1,22 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Convention
5
- class Gemspec < Base
6
- def local source_map
7
- return EMPTY_ENVIRON unless File.basename(source_map.filename).end_with?('.gemspec')
8
- @environ ||= Environ.new(
9
- requires: ['rubygems'],
10
- pins: [
11
- Solargraph::Pin::Reference::Override.from_comment(
12
- 'Gem::Specification.new',
13
- %(
14
- @yieldparam [self]
15
- )
16
- )
17
- ]
18
- )
19
- end
20
- end
21
- end
22
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Convention
5
+ class Gemspec < Base
6
+ def local source_map
7
+ return EMPTY_ENVIRON unless File.basename(source_map.filename).end_with?('.gemspec')
8
+ @environ ||= Environ.new(
9
+ requires: ['rubygems'],
10
+ pins: [
11
+ Solargraph::Pin::Reference::Override.from_comment(
12
+ 'Gem::Specification.new',
13
+ %(
14
+ @yieldparam [self]
15
+ )
16
+ )
17
+ ]
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Convention
5
+ class Rakefile < Base
6
+ def local source_map
7
+ basename = File.basename(source_map.filename)
8
+ return EMPTY_ENVIRON unless basename.end_with?('.rake') || basename == 'Rakefile'
9
+
10
+ @environ ||= Environ.new(
11
+ requires: ['rake'],
12
+ domains: ['Rake::DSL']
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,47 +1,47 @@
1
- # frozen_string_literal: true
2
-
3
- require 'set'
4
-
5
- module Solargraph
6
- # Conventions provide a way to modify an ApiMap based on expectations about
7
- # one of its sources.
8
- #
9
- module Convention
10
- autoload :Base, 'solargraph/convention/base'
11
- autoload :Gemfile, 'solargraph/convention/gemfile'
12
- autoload :Rspec, 'solargraph/convention/rspec'
13
- autoload :Gemspec, 'solargraph/convention/gemspec'
14
-
15
- @@conventions = Set.new
16
-
17
- # @param convention [Class<Convention::Base>]
18
- # @return [void]
19
- def self.register convention
20
- @@conventions.add convention.new
21
- end
22
-
23
- # @param source_map [SourceMap]
24
- # @return [Environ]
25
- def self.for_local(source_map)
26
- result = Environ.new
27
- @@conventions.each do |conv|
28
- result.merge conv.local(source_map)
29
- end
30
- result
31
- end
32
-
33
- # @param yard_map [YardMap]
34
- # @return [Environ]
35
- def self.for_global(yard_map)
36
- result = Environ.new
37
- @@conventions.each do |conv|
38
- result.merge conv.global(yard_map)
39
- end
40
- result
41
- end
42
-
43
- register Gemfile
44
- register Gemspec
45
- register Rspec
46
- end
47
- end
1
+ # frozen_string_literal: true
2
+
3
+
4
+ module Solargraph
5
+ # Conventions provide a way to modify an ApiMap based on expectations about
6
+ # one of its sources.
7
+ #
8
+ module Convention
9
+ autoload :Base, 'solargraph/convention/base'
10
+ autoload :Gemfile, 'solargraph/convention/gemfile'
11
+ autoload :Gemspec, 'solargraph/convention/gemspec'
12
+ autoload :Rakefile, 'solargraph/convention/rakefile'
13
+
14
+ # @type [Set<Convention::Base>]
15
+ @@conventions = Set.new
16
+
17
+ # @param convention [Class<Convention::Base>]
18
+ # @return [void]
19
+ def self.register convention
20
+ @@conventions.add convention.new
21
+ end
22
+
23
+ # @param source_map [SourceMap]
24
+ # @return [Environ]
25
+ def self.for_local(source_map)
26
+ result = Environ.new
27
+ @@conventions.each do |conv|
28
+ result.merge conv.local(source_map)
29
+ end
30
+ result
31
+ end
32
+
33
+ # @param yard_map [YardMap]
34
+ # @return [Environ]
35
+ def self.for_global(yard_map)
36
+ result = Environ.new
37
+ @@conventions.each do |conv|
38
+ result.merge conv.global(yard_map)
39
+ end
40
+ result
41
+ end
42
+
43
+ register Gemfile
44
+ register Gemspec
45
+ register Rakefile
46
+ end
47
+ end
@@ -1,12 +1,17 @@
1
- module ReverseMarkdown
2
- module Converters
3
- class Dd < Base
4
- def convert node, state = {}
5
- content = treat_children(node, state)
6
- ": #{content.strip}\n"
7
- end
8
- end
9
- end
10
- end
11
-
12
- ReverseMarkdown::Converters.register :dd, ReverseMarkdown::Converters::Dd.new
1
+ require 'nokogiri'
2
+
3
+ module ReverseMarkdown
4
+ module Converters
5
+ class Dd < Base
6
+ # @return [String]
7
+ # @param node [Nokogiri::XML::Element]
8
+ # @param state [Hash]
9
+ def convert node, state = {}
10
+ content = treat_children(node, state)
11
+ ": #{content.strip}\n"
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ ReverseMarkdown::Converters.register :dd, ReverseMarkdown::Converters::Dd.new
@@ -1,12 +1,15 @@
1
- module ReverseMarkdown
2
- module Converters
3
- class Dl < Base
4
- def convert node, state = {}
5
- content = treat_children(node, state).strip
6
- "\n\n#{content}\n"
7
- end
8
- end
9
- end
10
- end
11
-
12
- ReverseMarkdown::Converters.register :dl, ReverseMarkdown::Converters::Dl.new
1
+ module ReverseMarkdown
2
+ module Converters
3
+ class Dl < Base
4
+ # @return [String]
5
+ # @param node [Nokogiri::XML::Element]
6
+ # @param state [Hash]
7
+ def convert node, state = {}
8
+ content = treat_children(node, state).strip
9
+ "\n\n#{content}\n"
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ ReverseMarkdown::Converters.register :dl, ReverseMarkdown::Converters::Dl.new
@@ -1,12 +1,15 @@
1
- module ReverseMarkdown
2
- module Converters
3
- class Dt < Base
4
- def convert node, state = {}
5
- content = treat_children(node, state)
6
- "\n#{content.strip}\n"
7
- end
8
- end
9
- end
10
- end
11
-
12
- ReverseMarkdown::Converters.register :dt, ReverseMarkdown::Converters::Dt.new
1
+ module ReverseMarkdown
2
+ module Converters
3
+ class Dt < Base
4
+ # @return [String]
5
+ # @param node [Nokogiri::XML::Element]
6
+ # @param state [Hash]
7
+ def convert node, state = {}
8
+ content = treat_children(node, state)
9
+ "\n#{content.strip}\n"
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ ReverseMarkdown::Converters.register :dt, ReverseMarkdown::Converters::Dt.new
@@ -1 +1 @@
1
- ReverseMarkdown::Converters.register :tt, ReverseMarkdown::Converters::Code.new
1
+ ReverseMarkdown::Converters.register :tt, ReverseMarkdown::Converters::Code.new
@@ -1,29 +1,29 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Diagnostics
5
- # The base class for diagnostics reporters.
6
- #
7
- class Base
8
- # @return [Array<String>]
9
- attr_reader :args
10
-
11
- def initialize *args
12
- @args = args
13
- end
14
-
15
- # Perform a diagnosis on a Source within the context of an ApiMap.
16
- # The result is an array of hash objects that conform to the LSP's
17
- # Diagnostic specification.
18
- #
19
- # Subclasses should override this method.
20
- #
21
- # @param source [Solargraph::Source]
22
- # @param api_map [Solargraph::ApiMap]
23
- # @return [Array<Hash>]
24
- def diagnose source, api_map
25
- []
26
- end
27
- end
28
- end
29
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Diagnostics
5
+ # The base class for diagnostics reporters.
6
+ #
7
+ class Base
8
+ # @return [Array<String>]
9
+ attr_reader :args
10
+
11
+ def initialize *args
12
+ @args = args
13
+ end
14
+
15
+ # Perform a diagnosis on a Source within the context of an ApiMap.
16
+ # The result is an array of hash objects that conform to the LSP's
17
+ # Diagnostic specification.
18
+ #
19
+ # Subclasses should override this method.
20
+ #
21
+ # @param source [Solargraph::Source]
22
+ # @param api_map [Solargraph::ApiMap]
23
+ # @return [Array<Hash>]
24
+ def diagnose source, api_map
25
+ []
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,53 +1,53 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module Diagnostics
5
- # RequireNotFound reports required paths that could not be resolved to
6
- # either a file in the workspace or a gem.
7
- #
8
- class RequireNotFound < Base
9
- def diagnose source, api_map
10
- return [] unless source.parsed? && source.synchronized?
11
- result = []
12
- refs = {}
13
- map = api_map.source_map(source.filename)
14
- map.requires.each { |ref| refs[ref.name] = ref }
15
- api_map.missing_docs.each do |r|
16
- next unless refs.key?(r)
17
- result.push docs_error(r, refs[r].location)
18
- end
19
- api_map.unresolved_requires.each do |r|
20
- next unless refs.key?(r)
21
- result.push require_error(r, refs[r].location)
22
- end
23
- result
24
- end
25
-
26
- private
27
-
28
- # @param path [String]
29
- # @param location [Location]
30
- # @return [Hash]
31
- def docs_error path, location
32
- {
33
- range: location.range.to_hash,
34
- severity: Diagnostics::Severities::WARNING,
35
- source: 'RequireNotFound',
36
- message: "YARD docs not found for #{path}"
37
- }
38
- end
39
-
40
- # @param path [String]
41
- # @param location [Location]
42
- # @return [Hash]
43
- def require_error path, location
44
- {
45
- range: location.range.to_hash,
46
- severity: Diagnostics::Severities::WARNING,
47
- source: 'RequireNotFound',
48
- message: "Required path #{path} could not be resolved."
49
- }
50
- end
51
- end
52
- end
53
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module Diagnostics
5
+ # RequireNotFound reports required paths that could not be resolved to
6
+ # either a file in the workspace or a gem.
7
+ #
8
+ class RequireNotFound < Base
9
+ def diagnose source, api_map
10
+ return [] unless source.parsed? && source.synchronized?
11
+ result = []
12
+ refs = {}
13
+ map = api_map.source_map(source.filename)
14
+ map.requires.each { |ref| refs[ref.name] = ref }
15
+ api_map.missing_docs.each do |r|
16
+ next unless refs.key?(r)
17
+ result.push docs_error(r, refs[r].location)
18
+ end
19
+ api_map.unresolved_requires.each do |r|
20
+ next unless refs.key?(r)
21
+ result.push require_error(r, refs[r].location)
22
+ end
23
+ result
24
+ end
25
+
26
+ private
27
+
28
+ # @param path [String]
29
+ # @param location [Location]
30
+ # @return [Hash]
31
+ def docs_error path, location
32
+ {
33
+ range: location.range.to_hash,
34
+ severity: Diagnostics::Severities::WARNING,
35
+ source: 'RequireNotFound',
36
+ message: "YARD docs not found for #{path}"
37
+ }
38
+ end
39
+
40
+ # @param path [String]
41
+ # @param location [Location]
42
+ # @return [Hash]
43
+ def require_error path, location
44
+ {
45
+ range: location.range.to_hash,
46
+ severity: Diagnostics::Severities::WARNING,
47
+ source: 'RequireNotFound',
48
+ message: "Required path #{path} could not be resolved."
49
+ }
50
+ end
51
+ end
52
+ end
53
+ end