jimeh-solargraph 0.40.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +54 -0
  3. data/.gitignore +9 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +24 -0
  6. data/.yardopts +2 -0
  7. data/CHANGELOG.md +1003 -0
  8. data/Gemfile +7 -0
  9. data/LICENSE +21 -0
  10. data/README.md +123 -0
  11. data/Rakefile +25 -0
  12. data/SPONSORS.md +15 -0
  13. data/bin/solargraph +5 -0
  14. data/jimeh-solargraph.gemspec +44 -0
  15. data/lib/.rubocop.yml +21 -0
  16. data/lib/solargraph.rb +67 -0
  17. data/lib/solargraph/api_map.rb +752 -0
  18. data/lib/solargraph/api_map/bundler_methods.rb +27 -0
  19. data/lib/solargraph/api_map/cache.rb +70 -0
  20. data/lib/solargraph/api_map/source_to_yard.rb +81 -0
  21. data/lib/solargraph/api_map/store.rb +256 -0
  22. data/lib/solargraph/bench.rb +30 -0
  23. data/lib/solargraph/compat.rb +23 -0
  24. data/lib/solargraph/complex_type.rb +213 -0
  25. data/lib/solargraph/complex_type/type_methods.rb +127 -0
  26. data/lib/solargraph/complex_type/unique_type.rb +75 -0
  27. data/lib/solargraph/convention.rb +47 -0
  28. data/lib/solargraph/convention/base.rb +33 -0
  29. data/lib/solargraph/convention/gemfile.rb +15 -0
  30. data/lib/solargraph/convention/gemspec.rb +22 -0
  31. data/lib/solargraph/convention/rspec.rb +21 -0
  32. data/lib/solargraph/converters/dd.rb +12 -0
  33. data/lib/solargraph/converters/dl.rb +12 -0
  34. data/lib/solargraph/converters/dt.rb +12 -0
  35. data/lib/solargraph/converters/misc.rb +1 -0
  36. data/lib/solargraph/diagnostics.rb +55 -0
  37. data/lib/solargraph/diagnostics/base.rb +29 -0
  38. data/lib/solargraph/diagnostics/require_not_found.rb +37 -0
  39. data/lib/solargraph/diagnostics/rubocop.rb +90 -0
  40. data/lib/solargraph/diagnostics/rubocop_helpers.rb +45 -0
  41. data/lib/solargraph/diagnostics/severities.rb +15 -0
  42. data/lib/solargraph/diagnostics/type_check.rb +54 -0
  43. data/lib/solargraph/diagnostics/update_errors.rb +41 -0
  44. data/lib/solargraph/documentor.rb +78 -0
  45. data/lib/solargraph/environ.rb +45 -0
  46. data/lib/solargraph/language_server.rb +19 -0
  47. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -0
  48. data/lib/solargraph/language_server/error_codes.rb +20 -0
  49. data/lib/solargraph/language_server/host.rb +746 -0
  50. data/lib/solargraph/language_server/host/cataloger.rb +56 -0
  51. data/lib/solargraph/language_server/host/diagnoser.rb +81 -0
  52. data/lib/solargraph/language_server/host/dispatch.rb +112 -0
  53. data/lib/solargraph/language_server/host/sources.rb +156 -0
  54. data/lib/solargraph/language_server/message.rb +92 -0
  55. data/lib/solargraph/language_server/message/base.rb +85 -0
  56. data/lib/solargraph/language_server/message/cancel_request.rb +13 -0
  57. data/lib/solargraph/language_server/message/client.rb +11 -0
  58. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -0
  59. data/lib/solargraph/language_server/message/completion_item.rb +11 -0
  60. data/lib/solargraph/language_server/message/completion_item/resolve.rb +57 -0
  61. data/lib/solargraph/language_server/message/exit_notification.rb +13 -0
  62. data/lib/solargraph/language_server/message/extended.rb +21 -0
  63. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +100 -0
  64. data/lib/solargraph/language_server/message/extended/document.rb +20 -0
  65. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -0
  66. data/lib/solargraph/language_server/message/extended/download_core.rb +23 -0
  67. data/lib/solargraph/language_server/message/extended/environment.rb +25 -0
  68. data/lib/solargraph/language_server/message/extended/search.rb +20 -0
  69. data/lib/solargraph/language_server/message/initialize.rb +153 -0
  70. data/lib/solargraph/language_server/message/initialized.rb +26 -0
  71. data/lib/solargraph/language_server/message/method_not_found.rb +16 -0
  72. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -0
  73. data/lib/solargraph/language_server/message/shutdown.rb +13 -0
  74. data/lib/solargraph/language_server/message/text_document.rb +28 -0
  75. data/lib/solargraph/language_server/message/text_document/base.rb +19 -0
  76. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -0
  77. data/lib/solargraph/language_server/message/text_document/completion.rb +57 -0
  78. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -0
  79. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -0
  80. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -0
  81. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -0
  82. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -0
  83. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -0
  84. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -0
  85. data/lib/solargraph/language_server/message/text_document/formatting.rb +105 -0
  86. data/lib/solargraph/language_server/message/text_document/hover.rb +44 -0
  87. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -0
  88. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -0
  89. data/lib/solargraph/language_server/message/text_document/references.rb +16 -0
  90. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -0
  91. data/lib/solargraph/language_server/message/text_document/signature_help.rb +29 -0
  92. data/lib/solargraph/language_server/message/workspace.rb +14 -0
  93. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -0
  94. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -0
  95. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -0
  96. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -0
  97. data/lib/solargraph/language_server/message_types.rb +14 -0
  98. data/lib/solargraph/language_server/request.rb +24 -0
  99. data/lib/solargraph/language_server/symbol_kinds.rb +36 -0
  100. data/lib/solargraph/language_server/transport.rb +13 -0
  101. data/lib/solargraph/language_server/transport/adapter.rb +56 -0
  102. data/lib/solargraph/language_server/transport/data_reader.rb +72 -0
  103. data/lib/solargraph/language_server/uri_helpers.rb +49 -0
  104. data/lib/solargraph/library.rb +426 -0
  105. data/lib/solargraph/location.rb +37 -0
  106. data/lib/solargraph/logging.rb +27 -0
  107. data/lib/solargraph/page.rb +83 -0
  108. data/lib/solargraph/parser.rb +26 -0
  109. data/lib/solargraph/parser/comment_ripper.rb +52 -0
  110. data/lib/solargraph/parser/legacy.rb +12 -0
  111. data/lib/solargraph/parser/legacy/class_methods.rb +109 -0
  112. data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -0
  113. data/lib/solargraph/parser/legacy/node_chainer.rb +118 -0
  114. data/lib/solargraph/parser/legacy/node_methods.rb +311 -0
  115. data/lib/solargraph/parser/legacy/node_processors.rb +54 -0
  116. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -0
  117. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -0
  118. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -0
  119. data/lib/solargraph/parser/legacy/node_processors/block_node.rb +22 -0
  120. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -0
  121. data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -0
  122. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -0
  123. data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -0
  124. data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -0
  125. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -0
  126. data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -0
  127. data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -0
  128. data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -0
  129. data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -0
  130. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -0
  131. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -0
  132. data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -0
  133. data/lib/solargraph/parser/node_methods.rb +43 -0
  134. data/lib/solargraph/parser/node_processor.rb +43 -0
  135. data/lib/solargraph/parser/node_processor/base.rb +80 -0
  136. data/lib/solargraph/parser/region.rb +66 -0
  137. data/lib/solargraph/parser/rubyvm.rb +40 -0
  138. data/lib/solargraph/parser/rubyvm/class_methods.rb +150 -0
  139. data/lib/solargraph/parser/rubyvm/node_chainer.rb +135 -0
  140. data/lib/solargraph/parser/rubyvm/node_methods.rb +301 -0
  141. data/lib/solargraph/parser/rubyvm/node_processors.rb +62 -0
  142. data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -0
  143. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +86 -0
  144. data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -0
  145. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +22 -0
  146. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -0
  147. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -0
  148. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +64 -0
  149. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -0
  150. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -0
  151. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -0
  152. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -0
  153. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -0
  154. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -0
  155. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -0
  156. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -0
  157. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -0
  158. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -0
  159. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -0
  160. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -0
  161. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +277 -0
  162. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -0
  163. data/lib/solargraph/parser/snippet.rb +13 -0
  164. data/lib/solargraph/pin.rb +36 -0
  165. data/lib/solargraph/pin/base.rb +296 -0
  166. data/lib/solargraph/pin/base_variable.rb +84 -0
  167. data/lib/solargraph/pin/block.rb +62 -0
  168. data/lib/solargraph/pin/class_variable.rb +8 -0
  169. data/lib/solargraph/pin/closure.rb +37 -0
  170. data/lib/solargraph/pin/common.rb +70 -0
  171. data/lib/solargraph/pin/constant.rb +43 -0
  172. data/lib/solargraph/pin/conversions.rb +96 -0
  173. data/lib/solargraph/pin/documenting.rb +105 -0
  174. data/lib/solargraph/pin/duck_method.rb +16 -0
  175. data/lib/solargraph/pin/global_variable.rb +8 -0
  176. data/lib/solargraph/pin/instance_variable.rb +30 -0
  177. data/lib/solargraph/pin/keyword.rb +15 -0
  178. data/lib/solargraph/pin/keyword_param.rb +8 -0
  179. data/lib/solargraph/pin/local_variable.rb +21 -0
  180. data/lib/solargraph/pin/localized.rb +43 -0
  181. data/lib/solargraph/pin/method.rb +245 -0
  182. data/lib/solargraph/pin/method_alias.rb +31 -0
  183. data/lib/solargraph/pin/namespace.rb +85 -0
  184. data/lib/solargraph/pin/parameter.rb +206 -0
  185. data/lib/solargraph/pin/proxy_type.rb +29 -0
  186. data/lib/solargraph/pin/reference.rb +14 -0
  187. data/lib/solargraph/pin/reference/extend.rb +10 -0
  188. data/lib/solargraph/pin/reference/include.rb +10 -0
  189. data/lib/solargraph/pin/reference/override.rb +29 -0
  190. data/lib/solargraph/pin/reference/prepend.rb +10 -0
  191. data/lib/solargraph/pin/reference/require.rb +14 -0
  192. data/lib/solargraph/pin/reference/superclass.rb +10 -0
  193. data/lib/solargraph/pin/singleton.rb +11 -0
  194. data/lib/solargraph/pin/symbol.rb +47 -0
  195. data/lib/solargraph/position.rb +100 -0
  196. data/lib/solargraph/range.rb +95 -0
  197. data/lib/solargraph/server_methods.rb +16 -0
  198. data/lib/solargraph/shell.rb +222 -0
  199. data/lib/solargraph/source.rb +537 -0
  200. data/lib/solargraph/source/chain.rb +154 -0
  201. data/lib/solargraph/source/chain/block_variable.rb +13 -0
  202. data/lib/solargraph/source/chain/call.rb +203 -0
  203. data/lib/solargraph/source/chain/class_variable.rb +13 -0
  204. data/lib/solargraph/source/chain/constant.rb +75 -0
  205. data/lib/solargraph/source/chain/global_variable.rb +13 -0
  206. data/lib/solargraph/source/chain/head.rb +35 -0
  207. data/lib/solargraph/source/chain/instance_variable.rb +13 -0
  208. data/lib/solargraph/source/chain/link.rb +67 -0
  209. data/lib/solargraph/source/chain/literal.rb +23 -0
  210. data/lib/solargraph/source/chain/or.rb +23 -0
  211. data/lib/solargraph/source/chain/variable.rb +13 -0
  212. data/lib/solargraph/source/chain/z_super.rb +30 -0
  213. data/lib/solargraph/source/change.rb +79 -0
  214. data/lib/solargraph/source/cursor.rb +164 -0
  215. data/lib/solargraph/source/encoding_fixes.rb +23 -0
  216. data/lib/solargraph/source/source_chainer.rb +190 -0
  217. data/lib/solargraph/source/updater.rb +54 -0
  218. data/lib/solargraph/source_map.rb +188 -0
  219. data/lib/solargraph/source_map/clip.rb +224 -0
  220. data/lib/solargraph/source_map/completion.rb +23 -0
  221. data/lib/solargraph/source_map/mapper.rb +215 -0
  222. data/lib/solargraph/type_checker.rb +503 -0
  223. data/lib/solargraph/type_checker/checks.rb +99 -0
  224. data/lib/solargraph/type_checker/param_def.rb +35 -0
  225. data/lib/solargraph/type_checker/problem.rb +32 -0
  226. data/lib/solargraph/type_checker/rules.rb +57 -0
  227. data/lib/solargraph/version.rb +5 -0
  228. data/lib/solargraph/views/_method.erb +62 -0
  229. data/lib/solargraph/views/_name_type_tag.erb +10 -0
  230. data/lib/solargraph/views/_namespace.erb +24 -0
  231. data/lib/solargraph/views/document.erb +23 -0
  232. data/lib/solargraph/views/environment.erb +58 -0
  233. data/lib/solargraph/views/layout.erb +44 -0
  234. data/lib/solargraph/views/search.erb +11 -0
  235. data/lib/solargraph/workspace.rb +209 -0
  236. data/lib/solargraph/workspace/config.rb +230 -0
  237. data/lib/solargraph/yard_map.rb +435 -0
  238. data/lib/solargraph/yard_map/cache.rb +19 -0
  239. data/lib/solargraph/yard_map/core_docs.rb +170 -0
  240. data/lib/solargraph/yard_map/core_fills.rb +185 -0
  241. data/lib/solargraph/yard_map/core_gen.rb +76 -0
  242. data/lib/solargraph/yard_map/helpers.rb +16 -0
  243. data/lib/solargraph/yard_map/mapper.rb +77 -0
  244. data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -0
  245. data/lib/solargraph/yard_map/mapper/to_method.rb +78 -0
  246. data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -0
  247. data/lib/solargraph/yard_map/rdoc_to_yard.rb +140 -0
  248. data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
  249. data/lib/solargraph/yard_map/to_method.rb +79 -0
  250. data/lib/yard-solargraph.rb +30 -0
  251. data/yardoc/2.2.2.tar.gz +0 -0
  252. metadata +564 -0
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # Helper methods for performing type checks
6
+ #
7
+ module Checks
8
+ module_function
9
+
10
+ # Compare an expected type with an inferred type. Common usage is to
11
+ # check if the type declared in a method's @return tag matches the type
12
+ # inferred from static analysis of the code.
13
+ #
14
+ # @param api_map [ApiMap]
15
+ # @param expected [ComplexType]
16
+ # @param inferred [ComplexType]
17
+ # @return [Boolean]
18
+ def types_match? api_map, expected, inferred
19
+ return true if expected.to_s == inferred.to_s
20
+ matches = []
21
+ expected.each do |exp|
22
+ found = false
23
+ inferred.each do |inf|
24
+ # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
25
+ if either_way?(api_map, inf, exp)
26
+ found = true
27
+ matches.push inf
28
+ break
29
+ end
30
+ end
31
+ return false unless found
32
+ end
33
+ inferred.each do |inf|
34
+ next if matches.include?(inf)
35
+ found = false
36
+ expected.each do |exp|
37
+ # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
38
+ if either_way?(api_map, inf, exp)
39
+ found = true
40
+ break
41
+ end
42
+ end
43
+ return false unless found
44
+ end
45
+ true
46
+ end
47
+
48
+ # @param api_map [ApiMap]
49
+ # @param expected [ComplexType]
50
+ # @param inferred [ComplexType]
51
+ # @return [Boolean]
52
+ def any_types_match? api_map, expected, inferred
53
+ return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
54
+ expected.each do |exp|
55
+ next if exp.duck_type?
56
+ inferred.each do |inf|
57
+ # return true if exp == inf || api_map.super_and_sub?(fuzz(inf), fuzz(exp))
58
+ return true if exp == inf || either_way?(api_map, inf, exp)
59
+ end
60
+ end
61
+ false
62
+ end
63
+
64
+ # @param api_map [ApiMap]
65
+ # @param expected [ComplexType]
66
+ # @param inferred [ComplexType]
67
+ # @return [Boolean]
68
+ def duck_types_match? api_map, expected, inferred
69
+ raise ArgumentError, 'Expected type must be duck type' unless expected.duck_type?
70
+ expected.each do |exp|
71
+ next unless exp.duck_type?
72
+ quack = exp.to_s[1..-1]
73
+ return false if api_map.get_method_stack(inferred.namespace, quack, scope: inferred.scope).empty?
74
+ end
75
+ true
76
+ end
77
+
78
+ # @param type [ComplexType]
79
+ # @return [String]
80
+ def fuzz type
81
+ if type.parameters?
82
+ type.name
83
+ else
84
+ type.tag
85
+ end
86
+ end
87
+
88
+ # @param api_map [ApiMap]
89
+ # @param cls1 [ComplexType]
90
+ # @param cls2 [ComplexType]
91
+ # @return [Boolean]
92
+ def either_way?(api_map, cls1, cls2)
93
+ f1 = fuzz(cls1)
94
+ f2 = fuzz(cls2)
95
+ api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # Data about a method parameter definition. This is the information from
6
+ # the args list in the def call, not the `@param` tags.
7
+ #
8
+ class ParamDef
9
+ # @return [String]
10
+ attr_reader :name
11
+
12
+ # @return [Symbol]
13
+ attr_reader :type
14
+
15
+ def initialize name, type
16
+ @name = name
17
+ @type = type
18
+ end
19
+
20
+ class << self
21
+ # Get an array of ParamDefs from a method pin.
22
+ #
23
+ # @param pin [Solargraph::Pin::Method]
24
+ # @return [Array<ParamDef>]
25
+ def from pin
26
+ result = []
27
+ pin.parameters.each do |par|
28
+ result.push ParamDef.new(par.name, par.decl)
29
+ end
30
+ result
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # A problem reported by TypeChecker.
6
+ #
7
+ class Problem
8
+ # @return [Solargraph::Location]
9
+ attr_reader :location
10
+
11
+ # @return [String]
12
+ attr_reader :message
13
+
14
+ # @return [Pin::Base]
15
+ attr_reader :pin
16
+
17
+ # @return [String, nil]
18
+ attr_reader :suggestion
19
+
20
+ # @param location [Solargraph::Location]
21
+ # @param message [String]
22
+ # @param pin [Solargraph::Pin::Base, nil]
23
+ # @param suggestion [String, nil]
24
+ def initialize location, message, pin: nil, suggestion: nil
25
+ @location = location
26
+ @message = message
27
+ @pin = pin
28
+ @suggestion = suggestion
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # Definitions of type checking rules to be performed at various levels
6
+ #
7
+ class Rules
8
+ LEVELS = {
9
+ normal: 0,
10
+ typed: 1,
11
+ strict: 2,
12
+ strong: 3
13
+ }.freeze
14
+
15
+ # @return [Symbol]
16
+ attr_reader :level
17
+
18
+ # @return [Integer]
19
+ attr_reader :rank
20
+
21
+ # @param level [Symbol]
22
+ def initialize level
23
+ @rank = if LEVELS.key?(level)
24
+ LEVELS[level]
25
+ else
26
+ Solargraph.logger.warn "Unrecognized TypeChecker level #{level}, assuming normal"
27
+ 0
28
+ end
29
+ @level = LEVELS[LEVELS.values.index(@rank)]
30
+ end
31
+
32
+ def ignore_all_undefined?
33
+ rank < LEVELS[:strict]
34
+ end
35
+
36
+ def validate_consts?
37
+ rank >= LEVELS[:strict]
38
+ end
39
+
40
+ def validate_calls?
41
+ rank >= LEVELS[:strict]
42
+ end
43
+
44
+ def require_type_tags?
45
+ rank >= LEVELS[:strong]
46
+ end
47
+
48
+ def must_tag_or_infer?
49
+ rank > LEVELS[:typed]
50
+ end
51
+
52
+ def validate_tags?
53
+ rank > LEVELS[:normal]
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ VERSION = '0.40.4.0'
5
+ end
@@ -0,0 +1,62 @@
1
+ <h2>
2
+ Namespace:
3
+ </h2>
4
+ <p>
5
+ <a href="command:solargraph._openDocument?<%= CGI.escape "\"solargraph:/document?query=#{object.namespace}\"" %>"><%= object.namespace %></a>
6
+ </p>
7
+ <h2>
8
+ Overview:
9
+ </h2>
10
+ <%= htmlify object.docstring %>
11
+ <p class="document-section">
12
+ <big><strong>Visibility:</strong></big> <%= object.visibility %>
13
+ </p>
14
+ <% unless object.tags(:param).empty? %>
15
+ <h2>
16
+ Parameters:
17
+ </h2>
18
+ <ul>
19
+ <% object.tags(:param).each do |tag| %>
20
+ <li>
21
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
22
+ </li>
23
+ <% end %>
24
+ </ul>
25
+ <% end %>
26
+ <% unless object.tags(:raise).empty? %>
27
+ <h2>
28
+ Raises:
29
+ </h2>
30
+ <ul>
31
+ <% object.tags(:raise).each do |tag| %>
32
+ <li>
33
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
34
+ </li>
35
+ <% end %>
36
+ </ul>
37
+ <% end %>
38
+ <h2>
39
+ Returns:
40
+ </h2>
41
+ <% if object.tag(:return).nil? %>
42
+ <p>
43
+ Undefined/unknown
44
+ </p>
45
+ <% else %>
46
+ <ul>
47
+ <% object.tags(:return).each do |tag| %>
48
+ <li>
49
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
50
+ </li>
51
+ <% end %>
52
+ </ul>
53
+ <% end %>
54
+ <% examples = object.tags(:example) %>
55
+ <% unless examples.nil? %>
56
+ <% examples.each do |example| %>
57
+ <h2>
58
+ Example: <%= example.name %>
59
+ </h2>
60
+ <%= ruby_to_html example.text.strip %>
61
+ <% end %>
62
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= tag.name %>
2
+ <% unless tag.types.nil? or tag.types.empty? %>
3
+ [<%= escape(tag.types.join(', ')) %>]
4
+ <% end %>
5
+ <% unless tag.text.nil? || tag.text.empty? %>
6
+ <% unless (tag.name.nil? or tag.name.empty?) and (tag.types.nil? or tag.types.empty?) %>
7
+ -
8
+ <% end %>
9
+ <%= tag.text %>
10
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <h2>
2
+ Overview:
3
+ </h2>
4
+ <%= htmlify object.docstring %>
5
+ <h2>
6
+ Class Methods
7
+ </h2>
8
+ <ul class="doc-list">
9
+ <% object.meths(scope: :class).sort{|a, b| a.name <=> b.name}.each do |meth| %>
10
+ <li>
11
+ <a href="solargraph:/document?query=<%= CGI.escape(meth.path) %>"><%= meth.name %></a>
12
+ </li>
13
+ <% end %>
14
+ </ul>
15
+ <h2>
16
+ Instance Methods
17
+ </h2>
18
+ <ul class="doc-list">
19
+ <% object.meths(scope: :instance).sort{|a, b| a.name <=> b.name}.each do |meth| %>
20
+ <li>
21
+ <a href="solargraph:/document?query=<%= CGI.escape(meth.path) %>"><%= meth.name %></a>
22
+ </li>
23
+ <% end %>
24
+ </ul>
@@ -0,0 +1,23 @@
1
+ <% objects.reverse.each do |object| %>
2
+ <h1>
3
+ <%= object.name %>
4
+ <% if object.is_a?(YARD::CodeObjects::MethodObject) and !object.parameters.empty? %>
5
+ <small>(<%= object.parameters.map {|p| "#{p[0]}#{p[1] and p[0].end_with?(':') ? ' ' : (p[1] ? ' = ' : '')}#{p[1]}"}.join(', ') %>)</small>
6
+ <% end %>
7
+ </h1>
8
+ <% unless object.files.empty? %>
9
+ <h2>
10
+ Defined in:
11
+ </h2>
12
+ <ul>
13
+ <% object.files.each do |f| %>
14
+ <li><%= f %></li>
15
+ <% end %>
16
+ </ul>
17
+ <% end %>
18
+ <% if object.is_a?(YARD::CodeObjects::NamespaceObject) %>
19
+ <%= erb :_namespace, layout: false, locals: {object: object} %>
20
+ <% elsif object.is_a?(YARD::CodeObjects::MethodObject) %>
21
+ <%= erb :_method, layout: false, locals: {object: object} %>
22
+ <% end %>
23
+ <% end %>
@@ -0,0 +1,58 @@
1
+ <html>
2
+ <head>
3
+ <title>Solargraph Environment</title>
4
+ </head>
5
+ <h1>
6
+ Solargraph Environment Info
7
+ </h1>
8
+ <h2>
9
+ System
10
+ </h2>
11
+ <ul>
12
+ <li>
13
+ Platform: <%= RUBY_PLATFORM %>
14
+ </li>
15
+ <li>
16
+ Shell: <%= ENV['SHELL'] %>
17
+ </li>
18
+ <li>
19
+ Ruby Version: <%= RUBY_VERSION %>
20
+ </li>
21
+ <li>
22
+ RuboCop Version: <%= RuboCop::Version::STRING %>
23
+ </li>
24
+ </ul>
25
+ <h2>
26
+ Solargraph
27
+ </h2>
28
+ <ul>
29
+ <li>
30
+ Solargraph Version: <%= Solargraph::VERSION %>
31
+ </li>
32
+ <li>
33
+ Core Documentation Version: <%= Solargraph::YardMap::CoreDocs.best_match %>
34
+ </li>
35
+ <li>
36
+ Core Cache Directory: <%= Solargraph::YardMap::CoreDocs.cache_dir %>
37
+ </li>
38
+ <% unless Solargraph::Parser.rubyvm? %>
39
+ <li>
40
+ Parser Target Version: <%= Solargraph::Parser.version %>
41
+ </li>
42
+ <% end %>
43
+ <li>
44
+ Using Bundler: <%= ENV.key?('BUNDLE_BIN_PATH') %>
45
+ </li>
46
+ </ul>
47
+ <h2>
48
+ Project
49
+ </h2>
50
+ <ul>
51
+ <li>
52
+ Config: <%= config %>
53
+ </li>
54
+ <li>
55
+ Workspace folders: <%= folders %>
56
+ </li>
57
+ </ul>
58
+ </html>
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Solargraph</title>
5
+ <style>
6
+ a {
7
+ color: inherit;
8
+ text-decoration: underline;
9
+ }
10
+ h2 {
11
+ font-size: 110%;
12
+ margin: 1.5em 0 1em 0;
13
+ }
14
+ big {
15
+ font-size: 110%;
16
+ }
17
+ pre {
18
+ margin: 1em;
19
+ padding: 0.5em;
20
+ overflow: auto;
21
+ border: 1px solid gray;
22
+ }
23
+ ul.doc-list {
24
+ margin: 1em 0 1em 0.5em;
25
+ padding: 0;
26
+ }
27
+ ul.doc-list li {
28
+ list-style: none;
29
+ margin: 0.25em 0 0.25em 0;
30
+ padding: 0;
31
+ }
32
+ h1 small {
33
+ font-size: 75%;
34
+ font-weight: normal;
35
+ }
36
+ .document-section {
37
+ margin: 1.5em 0 1em 0;
38
+ }
39
+ </style>
40
+ </head>
41
+ <body>
42
+ <%= yield %>
43
+ </body>
44
+ </html>