cosmicgraph 0.49.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 (259) hide show
  1. checksums.yaml +7 -0
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/rspec.yml +41 -0
  4. data/.gitignore +9 -0
  5. data/.rspec +2 -0
  6. data/.yardopts +2 -0
  7. data/CHANGELOG.md +1150 -0
  8. data/Gemfile +7 -0
  9. data/LICENSE +21 -0
  10. data/README.md +136 -0
  11. data/Rakefile +25 -0
  12. data/SPONSORS.md +15 -0
  13. data/bin/solargraph +5 -0
  14. data/cosmicgraph.gemspec +44 -0
  15. data/lib/.rubocop.yml +22 -0
  16. data/lib/solargraph/api_map/bundler_methods.rb +22 -0
  17. data/lib/solargraph/api_map/cache.rb +70 -0
  18. data/lib/solargraph/api_map/source_to_yard.rb +81 -0
  19. data/lib/solargraph/api_map/store.rb +268 -0
  20. data/lib/solargraph/api_map.rb +704 -0
  21. data/lib/solargraph/bench.rb +27 -0
  22. data/lib/solargraph/cache.rb +51 -0
  23. data/lib/solargraph/complex_type/type_methods.rb +134 -0
  24. data/lib/solargraph/complex_type/unique_type.rb +132 -0
  25. data/lib/solargraph/complex_type.rb +254 -0
  26. data/lib/solargraph/convention/base.rb +33 -0
  27. data/lib/solargraph/convention/gemfile.rb +15 -0
  28. data/lib/solargraph/convention/gemspec.rb +22 -0
  29. data/lib/solargraph/convention/rakefile.rb +17 -0
  30. data/lib/solargraph/convention/rspec.rb +30 -0
  31. data/lib/solargraph/convention.rb +49 -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/base.rb +29 -0
  37. data/lib/solargraph/diagnostics/require_not_found.rb +53 -0
  38. data/lib/solargraph/diagnostics/rubocop.rb +112 -0
  39. data/lib/solargraph/diagnostics/rubocop_helpers.rb +65 -0
  40. data/lib/solargraph/diagnostics/severities.rb +15 -0
  41. data/lib/solargraph/diagnostics/type_check.rb +54 -0
  42. data/lib/solargraph/diagnostics/update_errors.rb +41 -0
  43. data/lib/solargraph/diagnostics.rb +55 -0
  44. data/lib/solargraph/documentor.rb +76 -0
  45. data/lib/solargraph/environ.rb +45 -0
  46. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -0
  47. data/lib/solargraph/language_server/error_codes.rb +20 -0
  48. data/lib/solargraph/language_server/host/cataloger.rb +56 -0
  49. data/lib/solargraph/language_server/host/diagnoser.rb +89 -0
  50. data/lib/solargraph/language_server/host/dispatch.rb +111 -0
  51. data/lib/solargraph/language_server/host/message_worker.rb +59 -0
  52. data/lib/solargraph/language_server/host/sources.rb +156 -0
  53. data/lib/solargraph/language_server/host.rb +869 -0
  54. data/lib/solargraph/language_server/message/base.rb +89 -0
  55. data/lib/solargraph/language_server/message/cancel_request.rb +13 -0
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -0
  57. data/lib/solargraph/language_server/message/client.rb +11 -0
  58. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -0
  59. data/lib/solargraph/language_server/message/completion_item.rb +11 -0
  60. data/lib/solargraph/language_server/message/exit_notification.rb +13 -0
  61. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +100 -0
  62. data/lib/solargraph/language_server/message/extended/document.rb +20 -0
  63. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -0
  64. data/lib/solargraph/language_server/message/extended/download_core.rb +19 -0
  65. data/lib/solargraph/language_server/message/extended/environment.rb +25 -0
  66. data/lib/solargraph/language_server/message/extended/search.rb +20 -0
  67. data/lib/solargraph/language_server/message/extended.rb +21 -0
  68. data/lib/solargraph/language_server/message/initialize.rb +164 -0
  69. data/lib/solargraph/language_server/message/initialized.rb +27 -0
  70. data/lib/solargraph/language_server/message/method_not_found.rb +16 -0
  71. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -0
  72. data/lib/solargraph/language_server/message/shutdown.rb +13 -0
  73. data/lib/solargraph/language_server/message/text_document/base.rb +19 -0
  74. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -0
  75. data/lib/solargraph/language_server/message/text_document/completion.rb +59 -0
  76. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -0
  77. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -0
  78. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -0
  79. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -0
  80. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -0
  81. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -0
  82. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -0
  83. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -0
  84. data/lib/solargraph/language_server/message/text_document/formatting.rb +126 -0
  85. data/lib/solargraph/language_server/message/text_document/hover.rb +56 -0
  86. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -0
  87. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -0
  88. data/lib/solargraph/language_server/message/text_document/references.rb +16 -0
  89. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -0
  90. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -0
  91. data/lib/solargraph/language_server/message/text_document.rb +28 -0
  92. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +30 -0
  93. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -0
  94. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -0
  95. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -0
  96. data/lib/solargraph/language_server/message/workspace.rb +14 -0
  97. data/lib/solargraph/language_server/message.rb +93 -0
  98. data/lib/solargraph/language_server/message_types.rb +14 -0
  99. data/lib/solargraph/language_server/request.rb +24 -0
  100. data/lib/solargraph/language_server/symbol_kinds.rb +36 -0
  101. data/lib/solargraph/language_server/transport/adapter.rb +53 -0
  102. data/lib/solargraph/language_server/transport/data_reader.rb +72 -0
  103. data/lib/solargraph/language_server/transport.rb +13 -0
  104. data/lib/solargraph/language_server/uri_helpers.rb +49 -0
  105. data/lib/solargraph/language_server.rb +19 -0
  106. data/lib/solargraph/library.rb +547 -0
  107. data/lib/solargraph/location.rb +37 -0
  108. data/lib/solargraph/logging.rb +27 -0
  109. data/lib/solargraph/page.rb +83 -0
  110. data/lib/solargraph/parser/comment_ripper.rb +52 -0
  111. data/lib/solargraph/parser/legacy/class_methods.rb +135 -0
  112. data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -0
  113. data/lib/solargraph/parser/legacy/node_chainer.rb +148 -0
  114. data/lib/solargraph/parser/legacy/node_methods.rb +325 -0
  115. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -0
  116. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -0
  117. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -0
  118. data/lib/solargraph/parser/legacy/node_processors/block_node.rb +42 -0
  119. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +35 -0
  120. data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -0
  121. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -0
  122. data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -0
  123. data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -0
  124. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -0
  125. data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -0
  126. data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -0
  127. data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -0
  128. data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -0
  129. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +42 -0
  130. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -0
  131. data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -0
  132. data/lib/solargraph/parser/legacy/node_processors.rb +54 -0
  133. data/lib/solargraph/parser/legacy.rb +12 -0
  134. data/lib/solargraph/parser/node_methods.rb +43 -0
  135. data/lib/solargraph/parser/node_processor/base.rb +77 -0
  136. data/lib/solargraph/parser/node_processor.rb +43 -0
  137. data/lib/solargraph/parser/region.rb +66 -0
  138. data/lib/solargraph/parser/rubyvm/class_methods.rb +149 -0
  139. data/lib/solargraph/parser/rubyvm/node_chainer.rb +160 -0
  140. data/lib/solargraph/parser/rubyvm/node_methods.rb +315 -0
  141. data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -0
  142. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +85 -0
  143. data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -0
  144. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +42 -0
  145. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +33 -0
  146. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -0
  147. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +75 -0
  148. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +68 -0
  149. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -0
  150. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -0
  151. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -0
  152. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -0
  153. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -0
  154. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -0
  155. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -0
  156. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -0
  157. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -0
  158. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +32 -0
  159. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -0
  160. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +279 -0
  161. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -0
  162. data/lib/solargraph/parser/rubyvm/node_processors.rb +63 -0
  163. data/lib/solargraph/parser/rubyvm/node_wrapper.rb +47 -0
  164. data/lib/solargraph/parser/rubyvm.rb +40 -0
  165. data/lib/solargraph/parser/snippet.rb +13 -0
  166. data/lib/solargraph/parser.rb +26 -0
  167. data/lib/solargraph/pin/base.rb +299 -0
  168. data/lib/solargraph/pin/base_variable.rb +84 -0
  169. data/lib/solargraph/pin/block.rb +73 -0
  170. data/lib/solargraph/pin/class_variable.rb +8 -0
  171. data/lib/solargraph/pin/closure.rb +37 -0
  172. data/lib/solargraph/pin/common.rb +70 -0
  173. data/lib/solargraph/pin/constant.rb +43 -0
  174. data/lib/solargraph/pin/conversions.rb +92 -0
  175. data/lib/solargraph/pin/documenting.rb +105 -0
  176. data/lib/solargraph/pin/duck_method.rb +16 -0
  177. data/lib/solargraph/pin/global_variable.rb +8 -0
  178. data/lib/solargraph/pin/instance_variable.rb +30 -0
  179. data/lib/solargraph/pin/keyword.rb +15 -0
  180. data/lib/solargraph/pin/keyword_param.rb +8 -0
  181. data/lib/solargraph/pin/local_variable.rb +55 -0
  182. data/lib/solargraph/pin/method.rb +335 -0
  183. data/lib/solargraph/pin/method_alias.rb +31 -0
  184. data/lib/solargraph/pin/namespace.rb +94 -0
  185. data/lib/solargraph/pin/parameter.rb +206 -0
  186. data/lib/solargraph/pin/proxy_type.rb +29 -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/reference.rb +14 -0
  194. data/lib/solargraph/pin/search.rb +56 -0
  195. data/lib/solargraph/pin/signature.rb +23 -0
  196. data/lib/solargraph/pin/singleton.rb +11 -0
  197. data/lib/solargraph/pin/symbol.rb +47 -0
  198. data/lib/solargraph/pin.rb +38 -0
  199. data/lib/solargraph/position.rb +100 -0
  200. data/lib/solargraph/range.rb +95 -0
  201. data/lib/solargraph/rbs_map/conversions.rb +394 -0
  202. data/lib/solargraph/rbs_map/core_fills.rb +61 -0
  203. data/lib/solargraph/rbs_map/core_map.rb +38 -0
  204. data/lib/solargraph/rbs_map/core_signs.rb +33 -0
  205. data/lib/solargraph/rbs_map/stdlib_map.rb +36 -0
  206. data/lib/solargraph/rbs_map.rb +73 -0
  207. data/lib/solargraph/server_methods.rb +16 -0
  208. data/lib/solargraph/shell.rb +234 -0
  209. data/lib/solargraph/source/chain/block_variable.rb +13 -0
  210. data/lib/solargraph/source/chain/call.rb +215 -0
  211. data/lib/solargraph/source/chain/class_variable.rb +13 -0
  212. data/lib/solargraph/source/chain/constant.rb +75 -0
  213. data/lib/solargraph/source/chain/global_variable.rb +13 -0
  214. data/lib/solargraph/source/chain/hash.rb +28 -0
  215. data/lib/solargraph/source/chain/head.rb +19 -0
  216. data/lib/solargraph/source/chain/instance_variable.rb +13 -0
  217. data/lib/solargraph/source/chain/link.rb +71 -0
  218. data/lib/solargraph/source/chain/literal.rb +23 -0
  219. data/lib/solargraph/source/chain/or.rb +23 -0
  220. data/lib/solargraph/source/chain/q_call.rb +11 -0
  221. data/lib/solargraph/source/chain/variable.rb +13 -0
  222. data/lib/solargraph/source/chain/z_super.rb +30 -0
  223. data/lib/solargraph/source/chain.rb +179 -0
  224. data/lib/solargraph/source/change.rb +79 -0
  225. data/lib/solargraph/source/cursor.rb +164 -0
  226. data/lib/solargraph/source/encoding_fixes.rb +23 -0
  227. data/lib/solargraph/source/source_chainer.rb +191 -0
  228. data/lib/solargraph/source/updater.rb +54 -0
  229. data/lib/solargraph/source.rb +522 -0
  230. data/lib/solargraph/source_map/clip.rb +229 -0
  231. data/lib/solargraph/source_map/completion.rb +23 -0
  232. data/lib/solargraph/source_map/mapper.rb +241 -0
  233. data/lib/solargraph/source_map.rb +180 -0
  234. data/lib/solargraph/type_checker/checks.rb +112 -0
  235. data/lib/solargraph/type_checker/param_def.rb +35 -0
  236. data/lib/solargraph/type_checker/problem.rb +32 -0
  237. data/lib/solargraph/type_checker/rules.rb +57 -0
  238. data/lib/solargraph/type_checker.rb +549 -0
  239. data/lib/solargraph/version.rb +5 -0
  240. data/lib/solargraph/views/_method.erb +62 -0
  241. data/lib/solargraph/views/_name_type_tag.erb +10 -0
  242. data/lib/solargraph/views/_namespace.erb +24 -0
  243. data/lib/solargraph/views/document.erb +23 -0
  244. data/lib/solargraph/views/environment.erb +58 -0
  245. data/lib/solargraph/views/layout.erb +44 -0
  246. data/lib/solargraph/views/search.erb +11 -0
  247. data/lib/solargraph/workspace/config.rb +231 -0
  248. data/lib/solargraph/workspace.rb +212 -0
  249. data/lib/solargraph/yard_map/cache.rb +19 -0
  250. data/lib/solargraph/yard_map/helpers.rb +16 -0
  251. data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -0
  252. data/lib/solargraph/yard_map/mapper/to_method.rb +81 -0
  253. data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -0
  254. data/lib/solargraph/yard_map/mapper.rb +77 -0
  255. data/lib/solargraph/yard_map/to_method.rb +79 -0
  256. data/lib/solargraph/yard_map.rb +301 -0
  257. data/lib/solargraph.rb +69 -0
  258. data/lib/yard-solargraph.rb +33 -0
  259. metadata +587 -0
data/CHANGELOG.md ADDED
@@ -0,0 +1,1150 @@
1
+ ## 0.49.0 - April 9, 2023
2
+ - Better union type handling
3
+ - First version of RBS support
4
+ - Dependency updates
5
+ - Update RuboCop config options
6
+ - RBS core and stdlib mapping
7
+ - Anonymous splats and multisig arity
8
+ - Infinite loop when checking if a class is a superclass (#641)
9
+
10
+ ## 0.48.0 - December 19, 2022
11
+ - Add Sublime Text to README (#604)
12
+ - Map nested constant assignments
13
+ - Handle rest/kwrest modifiers on overload arguments (#601)
14
+ - Make rubocop info severity Severity::HINT (#576)
15
+ - Process non-self singleton classes (#581)
16
+ - Fix nest gemspec dependency (#599)
17
+ - Strip 'file ' prefix from all filenames in RdocToYard (#585)
18
+ - Show why rubocop fails (#605)
19
+ - Link solargraph-rails (#611)
20
+
21
+ ## 0.47.2 - September 30, 2022
22
+ - Fix complex type inference (#578)
23
+ - Off-by-one diagnostic (#595)
24
+
25
+ ## 0.47.1 - September 27, 2022
26
+ - Remove debug code from release (#600)
27
+
28
+ ## 0.47.0 - September 25, 2022
29
+ - Completion candidates for union types (#507)
30
+ - Nullify Hover object instead of contents value (#583)
31
+ - Mapping workspace stuck in 0 (#587)
32
+ - Fix parsing of nested subtypes (#589)
33
+ - Update YARD tags on Pin::Block methods (#588)
34
+ - @!visibility directive support (#566)
35
+
36
+ ## 0.46.0 - August 22, 2022
37
+ - Ignore typecheck errors with @sg-ignore tag (#419)
38
+ - Strict checks report undefined method calls on variables (#553)
39
+ - Infer type from method arguments (#554)
40
+ - Return nil value for empty hover contents (#543)
41
+
42
+ ## 0.45.0 - May 23, 2022
43
+ - Basic support for RSpec #describe and #it
44
+ - fix: domain can complete private method (#490)
45
+ - Update README.md (#533)
46
+ - Doc: update readme.md for add solargraph support (#536)
47
+ - Process DASGN node in Ruby 3
48
+ - File.open core fill
49
+ - replace with_unbundled_env with with_original_env (#489)
50
+ - Require specific version of gem (#509)
51
+ - Support URIs prefixed with single slashed file scheme (#529)
52
+ - Fix typo in README.md (#549)
53
+ - details on config behavior (#556)
54
+ - Consider overloads in arity checks
55
+ - ENV core fill for Hash-like methods (#537)
56
+ - Fix string ranges with substitutions (#463)
57
+
58
+ ## 0.44.3 - January 22, 2022
59
+ - TypeChecker validates aliased namespaces (#497)
60
+ - Always use reference YARD tags when resolving param types (#515) (#516)
61
+ - Skip method aliases in strict type checking
62
+
63
+ ## 0.44.2 - November 23, 2021
64
+ - Scope local variables in class_eval blocks (#503)
65
+ - Fix invalid UTF-8 in node comments (#504)
66
+
67
+ ## 0.44.1 - November 18, 2021
68
+ - Chain nil safety navigation operator (#420)
69
+ - Update closure and context for class_eval receiver (#487)
70
+ - SourceMap::Mapper handles invalid byte sequences (#474)
71
+ - Special handle var= references, which may use as var = (have space) (#498)
72
+ - Rebind define_method to self (#494)
73
+
74
+ ## 0.44.0 - September 27, 2021
75
+ - Allow opening parenthesis, space, and comma when using Diff::LCS (#465)
76
+ - Support textDocument/documentHighlight
77
+ - Library#references_from performs shallow matches
78
+
79
+ ## 0.43.3 - September 25, 2021
80
+ - Avoid Dir.chdir in Bundler processes (#481)
81
+ - Check stdlib for gems with empty yardocs
82
+ - Library#maybe_map checks for source in workspace
83
+
84
+ ## 0.43.2 - September 23, 2021
85
+ - Synchronize server requests (#461)
86
+
87
+ ## 0.43.1 - September 20, 2021
88
+ - Complete nested namespaces in open gates
89
+ - SourceMap::Mapper reports filename for encoding errors (#474)
90
+ - Handle request on a specific thread, and cancel completion when there has newer completion request (#459)
91
+ - Fix namespace links generated by views/_method.erb (#472)
92
+ - Source handles long squiggly heredocs (#460)
93
+
94
+ ## 0.43.0 - July 25, 2021
95
+ - Correct arity checks when restarg precedes arg (#418)
96
+ - Improve the performance of catalog by 4 times (#457)
97
+ - Type checker validates duck type variables and params (#453)
98
+ - Kernel#raise exception type checker
99
+ - Pin::Base#inspect includes path
100
+ - Fix arity with combined restargs and kwrestargs (#396)
101
+
102
+ ## 0.42.4 - July 11, 2021
103
+ - Yardoc cache handling
104
+ - Fix required_paths when gemspec is used (#451)
105
+ - fix: yard stdout may break language client (#454)
106
+
107
+ ## 0.42.3 - June 14, 2021
108
+ - Require 'pathname' for Library
109
+
110
+ ## 0.42.2 - June 14, 2021
111
+ - Improve download-core command output
112
+ - Ignore missing requests to client responses
113
+ - Add automatically required gems to YardMap
114
+ - Use closures to identify local variables
115
+
116
+ ## 0.42.1 - June 11, 2021
117
+ - YardMap#change sets new directory (#445)
118
+
119
+ ## 0.42.0 - June 11, 2021
120
+ - Improve YardMap efficiency
121
+ - Bench includes Workspace for cataloging
122
+ - Initialize confirms static features from options (#436)
123
+ - Enable simple repairs without incremental sync (#416)
124
+ - Discard unrecognized client responses
125
+ - Notify on use of closest match for core (#390)
126
+
127
+ ## 0.41.2 - June 9, 2021
128
+ - Rescue InvalidOffset in async diagnosis
129
+ - Remove erroneous escaping from Hover
130
+
131
+ ## 0.41.1 - May 31, 2021
132
+ - ApiMap handles required bundles (#443)
133
+
134
+ ## 0.41.0 - May 30, 2021
135
+ - Chain constant at last double colon with more than two nested namespaces
136
+ - Fill Integer#times return type (#440)
137
+ - Validate included modules in type checks (#424)
138
+ - Faster language server initialization
139
+ - Server response to initialize is near immediate
140
+ - Workspace is mapped in a background thread
141
+ - Supported clients report mapping progress
142
+ - Log RuboCop corrections at info level (#426)
143
+ - Allow configuring the version of RuboCop to require (#430)
144
+ - Fix source of diagnostic (#434)
145
+ - Fix file argument in RuboCop (#435)
146
+ - Config ignores directories with .rb extension (#423)
147
+
148
+ ## 0.40.4 - March 3, 2021
149
+ - Fix optarg and blockarg ordering
150
+ - Override specialization for #initialize
151
+ - Find definitions with cursor after double colon
152
+
153
+ ## 0.40.3 - February 7, 2021
154
+ - Simplify and allow to configure rubocop formatter (#403)
155
+ - Type checker shows tag in param type errors (#398)
156
+ - Handle bare private_constant (#408)
157
+ - Type checker handles splatted variables (#396)
158
+
159
+ ## 0.40.2 - January 18, 2021
160
+ - Type checker ignores splatted calls in arity (#396)
161
+ - Allow Parser 3.0 (#400)
162
+
163
+ ## 0.40.1 - December 28, 2020
164
+ - Use temp directory for RuboCop formatting (#397)
165
+ - NodeMethods reads splatted hashes (#396)
166
+
167
+ ## 0.40.0 - December 14, 2020
168
+ - Fix alias behavior
169
+ - Consolidate method pin classes
170
+ - Consolidate YARD pins
171
+ - CheckGemVersion can use Bundler for updates
172
+ - Tempfile fills
173
+ - Support rubocop 1.0 (#381)
174
+ - Require Ruby >= 2.4.0 (#394)
175
+ - Map visibility calls with method arguments (#395)
176
+ - Switch maruku to kramdown
177
+ - Remove nokogiri dependency
178
+ - Detect internal_or_core? for strict type checking
179
+ - ApiMap#catalog merges environs for all sources in bench
180
+
181
+ ## 0.39.17 - September 28, 2020
182
+ - Handle YARD pins in alias resolution
183
+
184
+ ## 0.39.16 - September 27, 2020
185
+ - Include acts like extend inside sclass
186
+ - Improved alias resolution
187
+ - Parse args from YARD method objects
188
+ - Resolve included namespaces with conflicts
189
+ - Chains infer from multiple variable assignments
190
+ - Array and Hash core fills
191
+ - String.new core fill
192
+
193
+ ## 0.39.15 - August 18, 2020
194
+ - Backwards compatibility for typecheck subcommand
195
+ - Handle dangling colons on tag hovers
196
+ - NodeChainer handles chains with multiple blocks
197
+
198
+ ## 0.39.14 - August 13, 2020
199
+ - Fix return nodes from case statements (#350)
200
+ - Treat for loops as closures (#349)
201
+ - Array#zip core fill (#353)
202
+ - Exit with 1 if type check finds problems (#354)
203
+
204
+ ## 0.39.13 - August 3, 2020
205
+ - YardPin::Method skips invalid parameters (#345)
206
+ - Complete and define complex type tags
207
+
208
+ ## 0.39.12 - July 18, 2020
209
+ - Completion and hover on tags in comments (#247)
210
+ - Formatting change in RuboCop 0.87.0
211
+ - Use `ensure` block for File.unlink tempfile (#342)
212
+ - Fix super handling in call_nodes_from
213
+
214
+ ## 0.39.11 - July 3, 2020
215
+ - Fix line numbering in bare parse directives
216
+ - Bracket handling
217
+
218
+ ## 0.39.10 - July 1, 2020
219
+ - RDoc comments can be strings
220
+
221
+ ## 0.39.9 - June 20, 2020
222
+ - Fixed directive parsing
223
+ - Relocate pins from @!parse macros
224
+ - Return all symbols for empty queries (#328)
225
+ - Log number of files
226
+ - RdocToYard includes method line numbers
227
+
228
+ ## 0.39.8 - May 26, 2020
229
+ - File < IO reference
230
+ - Updated yardoc archive
231
+ - Chain integers with trailing periods
232
+ - Map autoload paths
233
+ - Set Encoding.default_external
234
+ - Faster store index
235
+ - ApiMap#catalog rebinds blocks
236
+ - Fixed binder inheritance
237
+ - Remove ApiMap mutex
238
+ - Set overrides
239
+
240
+ ## 0.39.7 - May 4, 2020
241
+ - RubyVM convert_hash node check
242
+ - File URI space encoding bug
243
+
244
+ ## 0.39.6 - May 3, 2020
245
+ - Workspace evaluates gem spec in toplevel binding (#316)
246
+ - Rescue StandardError instead of Exception
247
+ - Correct method parameter order
248
+ - Gracefully handle misunderstood macros (#323)
249
+
250
+ ## 0.39.5 - May 2, 2020
251
+ - Nil check in name_type_tag template
252
+ - Update obsolete method calls for Ruby 2.7
253
+ - YardMap rejects external pins
254
+ - RubyVM mapper handles Bundler.require calls
255
+ - RDocToYard clears serialized cache
256
+ - Workspace evaluates gem specs without binding
257
+ - Documentor clears gem caches
258
+
259
+ ## 0.39.4 - April 30, 2020
260
+ - RDocToYard update and spec (#315)
261
+ - Map function calls to visibility methods
262
+ - Cache source code line arrays
263
+ - Fix RuboCop errors
264
+
265
+ ## 0.39.3 - April 28, 2020
266
+ - Mapper handles private_class_method without arguments (#312)
267
+ - Fix pin positions from YARD directives (#313)
268
+ - Rescue errors from pin caches
269
+
270
+ ## 0.39.2 - April 26, 2020
271
+ - Fix legacy super/zsuper node processing
272
+ - Map parameters to updated module functions
273
+ - Include mass assignment in call nodes
274
+
275
+ ## 0.39.1 - April 26, 2020
276
+ - Additional return node checks from case statements in legacy
277
+ - Check super call arity
278
+
279
+ ## 0.39.0 - April 26, 2020
280
+ - RubyVM parser for Ruby 2.6+
281
+ - Lambda node processor
282
+ - Faster CommentRipper
283
+ - Implement TypeChecker levels
284
+ - Type inference improvements
285
+ - Prefer @return to @type in constant tags
286
+ - Support @abstract tags
287
+ - Improved recipient node detection
288
+ - Host#diagnose rescues FileNotFoundError
289
+ - Fuzzier inheritance checks
290
+ - Refactored uri queue synchronization (#289)
291
+ - Constant resolution finds nearest names (#287)
292
+ - Arity checks
293
+ - Additional CoreFills for numeric types and operators
294
+ - Chains track splat arguments
295
+ - Support case statements in type inference
296
+ - Support prepended modules (#302)
297
+ - TypeChecker validates constants
298
+ - Rescue ENOENT errors when loading sources (#308)
299
+ - Formatting message handles empty files
300
+ - Avoid lazy initialization of Mutex
301
+ - ApiMap inner queries use Set instead of Array
302
+
303
+ ## 0.38.6 - March 22, 2020
304
+ - Ignore Bundler warnings when parsing JSON (#273)
305
+ - Chain inference stack uses pin identities (#293)
306
+ - Fix super_and_sub? name collisions (#288, #290)
307
+ - Fix various Bundler and Travis bugs
308
+
309
+ ## 0.38.5 - January 26, 2020
310
+ - Namespace conflict resolution
311
+ - Pin context uses closure context in class scope
312
+ - Format file without extension (#266)
313
+
314
+ ## 0.38.4 - January 21, 2020
315
+ - Literal link generates ComplexType
316
+ - Remove pin cache from chain inference
317
+ - Avoid duplicates in combined LSP documentation
318
+ - YardMap skips workspace gems
319
+
320
+ ## 0.38.3 - January 19, 2020
321
+ - Refactored YardMap require processing
322
+ - Object/BasicObject inheritance handling in method detection
323
+ - StdlibFills and YardMap integration (#226)
324
+ - Include scope gates in local variable detection
325
+ - Reduce namespace pins in YARD pin generation
326
+ - Support multiple return tags in method return types
327
+ - File core fills
328
+ - Benchmark stdlib fill
329
+ - Redorder methods to include core after other classes
330
+ - Method type inference uses chains and includes block nodes (#264)
331
+ - Infer from overloaded methods with local variable arguments
332
+ - Add Array#map! to core fills
333
+
334
+ ## 0.38.2 - January 9, 2020
335
+ - Include visibility in method documentation
336
+ - Bundler >= 2.1 uses with_unbundled_env (#252)
337
+ - Remove irb from dependencies (#258)
338
+ - Update embedded docs (#259)
339
+ - Object#inspect core fill
340
+ - ApiMap finds constants in superclasses
341
+ - STDIO constant variables
342
+ - Filter duplicate pins in completionItem/resolve
343
+ - Travis updates
344
+
345
+ ## 0.38.1 - January 2, 2020
346
+ - Hash#[]= type checking
347
+ - Experimental @param_typle tag
348
+ - TypeChecker argument checks inherit param tags from superclasses
349
+ - Miscellaneous core overrides
350
+ - Boolean literals and type checking
351
+ - Update Thor (#254)
352
+ - CI against Ruby 2.7 (#253)
353
+
354
+ ## 0.38.0 - November 22, 2019
355
+ - Drop htmlentities dependency (#224)
356
+ - Blank lines do not affect indentation in documentation
357
+ - Use backticks for code blocks in generated markdown
358
+ - Register additional HTML tags in ReverseMarkdown
359
+ - Guard against nil pin comments (#231)
360
+ - Speedup Solargraph::ApiMap::Store#fqns_pin (#232)
361
+ - RuboCop formatting integration through API (#239)
362
+ - Qualify literal value types (#240)
363
+ - Switch back to Maruku for documentation generation
364
+ - Refactored dependencies to improve startup time
365
+ - Test if ns is nil to avoid exception (#245)
366
+ - Nil check when parsing comments (#243)
367
+
368
+ ## 0.37.2 - August 25, 2019
369
+ - Generate documentation without conversions
370
+
371
+ ## 0.37.1 - August 19, 2019
372
+ - No escape in completion item detail
373
+
374
+ ## 0.37.0 - August 19, 2019
375
+ - Replace Maruku with YARD RDocMarkup
376
+ - Refactored Cursor#recipient
377
+ - Remove HTML entity escaping
378
+ - Messages check enablePages for links
379
+ - Escape method for templates
380
+ - Escape type tags with backslashes
381
+ - Updated gem dependencies
382
+
383
+ ## 0.36.0 - August 12, 2019
384
+ - Replace redcarpet with maruku
385
+ - Check for nil nodes in variable probes (#221)
386
+
387
+ ## 0.35.2 - August 6, 2019
388
+ - Chains resolve block variable types.
389
+
390
+ ## 0.35.1 - July 29, 2019
391
+ - Infer variable types from assignments with unparenthesized arguments
392
+ - (#212)
393
+
394
+ ## 0.35.0 - July 19, 2019
395
+ - Track blocks in chain links
396
+ - Array overloads
397
+ - Fix NoMethodError for empty overload tags
398
+ - TypeChecker validates block args
399
+ - Object#to_s override
400
+ - Pin::BaseVariable uses clips for probles
401
+ - Add ability to read from a global config file (#210)
402
+ - SourceChainer falls back to fixed phrases in repaired sources
403
+ - Find return nodes in blocks
404
+
405
+ ## 0.34.3 - July 14, 2019
406
+ - Refactor to reduce frequent allocations
407
+ - Only send renameOptions to clients with prepareSupport (#207)
408
+ - Add pin locations to scans
409
+ - TypeChecker finds params for hash args by name
410
+ - Drop empty register/unregister events (#209)
411
+ - Pin::Parameter type inference
412
+ - Detect yielded blocks in calls
413
+ - SourceMap::Mapper maps overrides
414
+
415
+ ## 0.34.2 - July 3, 2019
416
+ - Documentor uses an external process to collect specs
417
+ - Bundle subcommand passes rebuild option to Documentor
418
+ - Refactored bundle dependency reads
419
+ - Fixed Travis issues
420
+
421
+ ## 0.34.1 - June 26, 2019
422
+ - Refactored bundler/require handling
423
+ - Fix clip completion from repaired sources
424
+ - Bundler issues in Travis
425
+
426
+ ## 0.34.0 - June 25, 2019
427
+ - Keyword argument names in autocomplete
428
+ - `solargraph bundle` and related cache commands
429
+ - RDoc to YARD conversion
430
+ - More TypeChecker validation
431
+ - Environs and Conventions
432
+ - Core overrides
433
+ - `@overload` tag support
434
+ - Handle splats in overloads
435
+ - Scope gates
436
+ - Type Class/Module reduction hack
437
+ - Duck type checking
438
+ - frozen_string_literal
439
+ - Faster YardMap loading
440
+
441
+ ## 0.33.2 - June 20, 2019
442
+ - Fixed resolution of `self` keyword
443
+ - Chain inference depth limits
444
+ - Source#references skips nodes without the requested symbol
445
+ - Refactored Library without `checkout` method
446
+ - Parameter merges require same closures
447
+ - Completion item descriptions contain unique links
448
+
449
+ ## 0.33.1 - June 18, 2019
450
+ - Ignore attribute directives without names (castwide/vscode-solargraph#124)
451
+ - Chain and/or/begin/kwbegin nodes
452
+ - TypeCheck diagnostics run on workspace files only by default
453
+ - Mapper updates directive positions (#176)
454
+ - Track pins in TypeChecker problems.
455
+
456
+ ## 0.33.0 - June 18, 2019
457
+ - Deprecated plugin architecture
458
+ - Closure pins for enhanced context and scope detection
459
+ - Block resolution
460
+ - Major Pin refactoring
461
+ - Single parameter pin for blocks and methods
462
+ - Major NodeProcessor refactoring
463
+ - Block rebinding
464
+ - Resolve method aliases
465
+ - Namespace scope gates (WIP)
466
+ - Improved ApiMap::Store indexing
467
+ - ApiMap block recipient cache
468
+ - Refactored pin and local mapping
469
+ - Host synchronization fixes
470
+ - Rebind instance_eval, class_eval, and module_eval blocks
471
+ - Improved string detection
472
+ - Use @param tags for parameter pin documentation
473
+ - Go To Definition works on require paths (castwide/vscode-solagraph#104)
474
+ - Mapper processes singleton method directives
475
+ - Resolve self return types based on current context
476
+ - Exclude inner node comments from documentation
477
+ - Infer hash element types from value parameters
478
+ - Pin::BaseMethod typifies from super methods
479
+ - Ignore FileNotFoundError in textDocument/signatureHelp
480
+ - Class#new and Class.new return types
481
+ - Chain::Call resolves `self` return types
482
+ - Deprecated Pin::Method#infer method
483
+ - Pin::Method#probe returns unique tags
484
+ - Errant dstr detection
485
+ - Source does not detect string? at end of interpolation
486
+ - String detection in unsynchronized sources
487
+ - Reduced node comparisons in Source#string_at?
488
+ - Superclass qualification for instance variables
489
+ - Pin::Attribute#probe infers types from instance variables
490
+ - First version of TypeChecker and its reporter
491
+ - Strict type checking
492
+ - Source::Chain::Call does not typify/probe/proxy pins
493
+ - Probe for detail in hover and resolve
494
+ - JIT pin probes
495
+ - Command-line typecheck
496
+ - Clip#complete skips unparsed sources
497
+ - Check parameter types for super_and_sub?
498
+ - Object#! CoreFill.
499
+ - `scan` subcommand
500
+ - Detect class variables by scope gates
501
+ - Move METHODS_RETURNING_SELF to CUSTOM_RETURN_TYPES
502
+ - Host::Dispatch catalogs attachments to implicit and generic libraries (#139)
503
+ - Preliminary support for `@overload` tags
504
+ - `self` resolution in ComplexTypes
505
+
506
+ ## 0.32.4 - May 27, 2019
507
+ - Backport update
508
+
509
+ ## 0.32.3 - May 14, 2019
510
+ - - ApiMap#get_namespace_type selects namespace pins (#183)
511
+ - - Fixed type inference for Class.new and Class#new exceptions
512
+
513
+ ## 0.32.2 - May 6, 2019
514
+ - - Gemspec changes
515
+ - - Recommend LanguageClient-neovim instead of vim-solargraph (#180)
516
+ - - Added Eclipse plugin information (#181)
517
+ - - Refactored cataloging
518
+ - - workspace/didChangeWatchedFiles catalogs libraries (#139)
519
+
520
+ ## 0.32.1 - April 7, 2019
521
+ - completionItem/resolve returns nil for empty documentation
522
+
523
+ ## 0.32.0 - April 4, 2019
524
+ - Add implementation of textDocument/prepareRename (#158)
525
+ - Update to Backport 1.0
526
+ - Source handles comments that start with multiple hashes
527
+ - Add Ruby 2.6.1 to CI
528
+ - Updated JRuby version support
529
+ - Infer return types from top-level references
530
+ - SourceChainer handles ! and ? outside of method suffixes (#166)
531
+ - CompletionItem uses MarkupContent for documentation (#173)
532
+ - Add Object#tap to core documentation. (#172)
533
+ - Source and Mapper handle invalid UTF-8 byte sequences (#33)
534
+ - Exceptions while mapping emit warning messages
535
+ - Process private_class_method for attributes (#171)
536
+ - Qualify namespaces from includes in the root namespace (#170)
537
+ - Faster YARD object location
538
+
539
+ ## 0.31.3 - February 7, 2019
540
+ - Location of directive context depends on tag name
541
+ - Regenerated core docs
542
+ - Don't escape colon in URI (#150)
543
+ - Reduce file_to_uri conversions to avoid discrepancies
544
+ - SourceMap::Clip#locals corrects cursor positions outside of the root context
545
+ - Host::Sources notifies observers with URIs
546
+ - Finish synchronizing sources with unbalanced lines
547
+ - Use ComplexType.try_parse to avoid exceptions for syntax errors
548
+
549
+ ## 0.31.2 - January 27, 2019
550
+ - Use YARD documentation rules to associate directives with namespaces
551
+ - Handle non-unique pin locations in completionItem/resolve
552
+ - Clip#complete handles @yieldself and @yieldpublic contexts
553
+ - Host::Dispatch filters library updates (castwide/vscode-solargraph#99)
554
+ - Qualify included namespaces (#148)
555
+
556
+ ## 0.31.1 - January 20, 2019
557
+ - Unsynchronized sources can still try to use existing nodes for chains
558
+ - Host filters document symbols for unique locations
559
+ - Server response logging in debug
560
+ - Host keeps deleted files open in sources
561
+ - CoreGen tweaks
562
+ - Fix negative argument error in Source#stringify_comment_array (#141)
563
+ - Library#references_from includes parameter pins (#135)
564
+ - Block nodes are foldable
565
+ - Source detects comment positions past the range on the ending line
566
+ - workspace/didChangeConfiguration ignores null settings (#144)
567
+
568
+ ## 0.31.0 - January 13, 2019
569
+ - Removed deprecated Library methods
570
+ - Tweaked foldable comment ranges
571
+ - Host::Dispatch module for managing open sources and libraries
572
+ - YardMap::CoreGen module for generating documentation from Ruby source
573
+ - Improved communication between hosts and adapters
574
+ - Refactored Host methods
575
+ - `@!domain` directive uses [type] syntax
576
+ - Make SourceMap#query_symbols use fuzzy matching. (#132)
577
+ - Threaded ApiMap cataloging
578
+ - Fixed fencepost error in Position.from_offset
579
+ - Lazy method alias resolution
580
+ - Library#references_from returns unique locations
581
+ - Additional info logs
582
+ - Asynchronous source parsing
583
+ - Unsychronized source support for faster completion requests (castwide/vscode-solargraph#95)
584
+ - Faster source comment parsing
585
+ - Host only diagnoses synchronized sources
586
+
587
+ ## 0.30.2 - December 31, 2018
588
+ - Workspace/library mapping errors (castwide/solargraph#124)
589
+ - RuboCop diagnostics handle validation errors
590
+ - Map visibility methods with parameters
591
+ - Allow overriding core doc cache directory (castwide/solargraph#125)
592
+
593
+ ## 0.30.1 - December 27, 2018
594
+ - Library#catalog avoids rebuilding ApiMaps that are already synchronized
595
+ - Host#locate_pin finds YARD pins
596
+ - completionItem/resolve merges documentation from multiple pins
597
+
598
+ ## 0.30.0 - December 22, 2018
599
+ - Multi-root workspaces
600
+ - Folding ranges
601
+ - Logging with levels
602
+ - Environment info
603
+ - Replace EventMachine with Backport
604
+ - Gems without yardocs fall back to stdlib
605
+ - Formatting requires shellwords
606
+ - Use Pathname to normalize require paths
607
+
608
+ ## 0.29.5 - December 18, 2018
609
+ - Source::Change repairs preceding periods and colons.
610
+ - Pins use typify and probe methods for type inference.
611
+ - NodeChainer supports or_asgn nodes.
612
+ - NodeMethods.returns_from supports and/or nodes.
613
+ - Library uses single source checkout.
614
+ - ApiMap includes BasicObject and operators in method queries.
615
+ - Refactored CheckGemVersion.
616
+
617
+ ## 0.29.4 - December 7, 2018
618
+ - Parameter type checks in implicit type inference.
619
+ - Additional implicit method type detection cases.
620
+ - Chains match constants on complete symbols.
621
+
622
+ ## 0.29.3 - December 5, 2018
623
+ - Missing parameter in send_notification call.
624
+ - Typo in checkGemVersion message.
625
+
626
+ ## 0.29.2 - December 5, 2018
627
+ - Pin type checks for module_function, private_class_method, and private_constant.
628
+ - ApiMap#catalog checks for added and removed sources.
629
+
630
+ ## 0.29.1 - November 30, 2018
631
+ - Alias method reference error.
632
+
633
+ ## 0.29.0 - November 26, 2018
634
+ - Map method aliases.
635
+ - Removed coderay dependency.
636
+ - Initial support for named macros.
637
+ - First implementation of deep method inference.
638
+ - See references in @return tags.
639
+ - Literal regexp support.
640
+ - Additional CoreFills.
641
+ - Mapper uses NodeProcessor.
642
+ - Pin::BlockParameter checks param tags by index.
643
+ - Clip#complete handles unfinished constants with trailing nodes.
644
+ - Library performs case-insensitive strips of symbol references.
645
+ - Unparsed sources have nil nodes.
646
+ - NodeProcessor recurses into nodes by default.
647
+ - Namespace conflicts in method queries.
648
+ - SourceMap::Clip#complete method visibility.
649
+ - Enable gem dependency mapping.
650
+
651
+ ## 0.28.4 - October 26, 2018
652
+ - Pin::Documenting#documentation converts without RDoc (castwide/solargraph#97)
653
+ - Rescue errors in gemspec evaluation (castwide/solargraph#100)
654
+
655
+ ## 0.28.3 - October 21, 2018
656
+ - Deprecated overwrite features.
657
+ - Pin::MethodParameter finds unnamed param tags by index.
658
+ - Workspace does not cache loaded gems.
659
+ - Explicit range in textDocument/formatting result (castwide/vscode-solargraph#83).
660
+ - SourceMap::Mapper maps alias and alias_method.
661
+ - Source::Chain avoids recursive variable assignments (castwide/solargraph#96).
662
+ - Pin scope reference in Chain::Head.
663
+ - Clip does not define arbitrary comments.
664
+
665
+ ## 0.28.2 - October 2, 2018
666
+ - Map aliases.
667
+ - Refactored diagnostics.
668
+ - SourceChainer checks for nil source error ranges.
669
+ - Clips handle partially completed constants.
670
+ - ApiMap method queries return one pin for root methods.
671
+ - Clip#complete detects unstarted inner constants.
672
+
673
+ ## 0.28.1 - September 18, 2018
674
+ - YardMap adds superclass, include, and extend references.
675
+
676
+ ## 0.28.0 - September 16, 2018
677
+ - ApiMap sorts constants by name within namespaces.
678
+ - Simplified source parsing.
679
+ - SourceChainer requires parsed and unrepaired source for node chaining.
680
+ - Source#synchronize does not flag repaired sources unparsed.
681
+ - References extend pins.
682
+ - Source::Change#repair handles multiple periods and colons.
683
+ - Chain::Constant uses chained context.
684
+ - Chain rebased constants.
685
+ - Deprecated Chain::Definition.
686
+ - SourceMap::Mapper includes symbol pins in standard pin array.
687
+ - YardMap ignores duplicate requires of the same gem.
688
+ - textDocument/rename hack for variables.
689
+ - Completing duck types searches for all duck-typed methods and includes Object.
690
+
691
+ ## 0.27.1 - September 10, 2018
692
+ - Default Host#library instance.
693
+
694
+ ## 0.27.0 - September 9, 2018
695
+ - New Cursor and Clip components replace Fragments.
696
+ - Split Sources into Sources (text and nodes) and SourceMaps (pins and other map-related data).
697
+ - Improved Source synchronization.
698
+ - Standardized chain generation on NodeChainer.
699
+ - Redesigned server threading.
700
+ - Host::Cataloger is responsible for updating ApiMaps.
701
+ - Host::Diagnoser is responsible for running diagnostics.
702
+ - Server checks gem versions inline instead of running an external process.
703
+ - New Library synchronization.
704
+ - ApiMap#catalog uses Bundles for updates.
705
+ - SourceMap::Mapper processes directives.
706
+ - Improved SourceMap and Pin merging.
707
+ - Chains support `super` and `self` keywords.
708
+
709
+ ## 0.26.1 - August 31, 2018
710
+ - Update variable pins when synchronizing sources.
711
+
712
+ ## 0.26.0 - August 30, 2018
713
+ - Major refactoring.
714
+ - More ComplexType integration.
715
+ - Use Chains for pin resolution and type inference.
716
+ - Deprecated ApiMap::Probe for Chains.
717
+ - Force UTF-8 encoding without normalizing.
718
+ - CallChainer parses simple call chains.
719
+ - Fragments are responsible for define, complete, and signify.
720
+ - Method visibility in ApiMap#get_complex_type_methods.
721
+
722
+ ## 0.25.1 - August 20, 2018
723
+ - Revised hack in Host change thread for mismatches in version numbers and content changes
724
+ - Mapper#code_for corrects for EOL conversions in parser
725
+ - Fix TypeError on hover (castwide/solargraph#82)
726
+ - All fragment components return strings
727
+ - ComplexType supports fixed parameters
728
+ - ComplexType supports hash parameters with key => value syntax
729
+
730
+ ## 0.25.0 - August 17, 2018
731
+ - RuboCop reporter uses an inline operation instead of an external process
732
+ - Resolve class and instance variable types from signatures
733
+ - Source attempts fast pin merges
734
+ - Refactored docstring parsing
735
+ - Pins can merge comments
736
+ - Variable pins use complex return types
737
+ - MethodParameter pin merges return types
738
+ - Handle self in ApiMap#qualify
739
+ - First implementation of new YardMap
740
+ - ApiMap::Store does not delete yard pins on source updates
741
+ - ApiMap changes to use new YardMap and store
742
+ - RequireNotFound uses ApiMap#unresolved_requires
743
+ - YardMap stdlib support
744
+ - Synchronize required path changes
745
+ - ComplexType ignores curly brackets
746
+ - Synchronize YardMap with source updates
747
+ - YardMap cache and ApiMap::Store synchronization
748
+ - Method completion filter
749
+ - ApiMap#define ignores keywords
750
+ - Removed manual garbage collection
751
+ - Docstring comparisons for pin merges
752
+ - Removed extra whitespace from method pin documentation
753
+ - textDocument/completion returns empty result marked incomplete while document is changing
754
+ - YardMap generates stdlib pins in one pass and caches results
755
+ - Disabled version order hack in Host change thread
756
+ - textDocument/formatting uses nil ranges for overwriting
757
+
758
+ ## 0.24.1 - August 9, 2018
759
+ - No completion items for void return types
760
+ - ApiMap#complete qualifies pin return types
761
+ - Add space to = in attribute writer methods
762
+ - Redirect YARD logger to stderr
763
+
764
+ ## 0.24.0 - August 5, 2018
765
+ - Complex types
766
+ - Include duck-typed methods in completion items
767
+ - Fragments correct EOL discrepancies in comment ranges
768
+ - TypeNotDefined diagnostics
769
+ - Mapper suppresses stdout while parsing docstrings
770
+
771
+ ## 0.23.6 - August 2, 2018
772
+ - Fragment signatures skip array brackets inside arguments and blocks
773
+ - Disabled Host#save in DidSave
774
+ - Source documentation and method visibility
775
+ - YARD method object visibility
776
+ - Probe#infer_signature_type qualifies return types
777
+ - SourceToYard rakes method and attribute pins together
778
+ - LSP Initialize method prefers rootUri to rootPath
779
+
780
+ ## 0.23.5 - July 16, 2018
781
+ - Source identifies files that raise exceptions
782
+ - ApiMap recognizes self keyword
783
+ - Refactored diagnostics reporters
784
+ - Source#all_symbols ignores pins with empty names
785
+ - Allow ? and ! in fragment signatures
786
+ - Runtime process checks scope for methods
787
+ - LiveMap returns constant pins
788
+ - Probe includes locals when resolving block parameters
789
+ - Probe resolves word types
790
+
791
+ ## 0.23.4 - July 9, 2018
792
+ - Pin::Attribute#parameters is an empty array.
793
+ - Include attributes in Source method pins.
794
+ - Removed alphanumeric condition for mapping def pins.
795
+ - Refactored Source symbol query and pin location.
796
+
797
+ ## 0.23.3 - July 4, 2018
798
+ - Fixed workspace/symbol method references
799
+ - Library#overwrite ignores out-of-sync requests
800
+ - Dynamic registration fixed
801
+
802
+ ## 0.23.2 - July 4, 2018
803
+ - Fixed dynamic registration checks.
804
+
805
+ ## 0.23.1 - July 4, 2018
806
+ - Fixed initialize result for clients without dynamic registration.
807
+
808
+ ## 0.23.0 - July 1, 2018
809
+ - Dynamic registration for definitions, symbols, rename, and references
810
+ - Fixed capability registration issues
811
+ - First version of stdio transport
812
+ - YardMap object cache
813
+ - Pin::Attribute supports class method paths
814
+ - File.realdirpath conversion bug (castwide/solargraph#64)
815
+
816
+ ## 0.22.0 - May 28, 2018
817
+ - Ruby 2.5 issues on Travis CI
818
+ - Fixed in-memory cache issue
819
+ - Fixed type inference from signatures for literal values
820
+ - Infer local variable types derived from other local variables
821
+ - textDocument/references support
822
+ - textDocument/rename support
823
+ - Probe infers word pins for nested namespaces
824
+ - Attribute scopes
825
+ - RuboCop command specifies config file
826
+
827
+ ## 0.21.1 - May 13, 2018
828
+ - Initial support for module_function method visibility.
829
+ - Map `extend self` calls.
830
+ - ApiMap#complete filters completion results on the current word.
831
+ - Refactored YardMap stdlib handling.
832
+ - Minor Message#send bug in socket transport that raised exceptions in Ruby 2.5.1.
833
+ - Probe#infer_method_pins fully qualifies context_pin namespace.
834
+
835
+ ## 0.21.0 - May 7, 2018
836
+ - ApiMap reads additional required paths from the workspace config.
837
+ - Source handles encoding errors.
838
+ - Integrated Travis CI.
839
+ - ApiMap#signify filters for method pins.
840
+ - Default client configuration updates.
841
+ - Fixed RuboCop formatting output.
842
+ - Removed bundler dependency.
843
+ - Removed legacy server and related dependencies.
844
+ - Infer method parameter types.
845
+ - Include solargraph.formatting in dynamic capability registration.
846
+ - Class and module method visibility (e.g., Module#private and Module#module_function).
847
+
848
+ ## 0.20.0 - April 22, 2018
849
+ - YardMap tracks unresolved requires
850
+ - More specs
851
+ - Standardized diagnostics reporters
852
+ - `rubocop` and `require_not_found` reporters
853
+ - Unresolved requires are reportable diagnostics instead of errors
854
+ - LSP handles gem features with extended methods
855
+ - textDocument/onTypeFormatting completes brackets in string interpolation
856
+ - Workspace uses gemspecs for require paths
857
+ - Enabled domain support with @!domain directive in ApiMap and Source
858
+ - Workaround for unavailable :rdoc markup class
859
+ - Probe infers global variable pins
860
+ - Source#all_symbols includes namespaces
861
+ - Use kramdown instead of redcarpet for document pages
862
+
863
+ ## 0.19.1 - April 16, 2018
864
+ - YardMap finds yardocs for gems with or without the bundler.
865
+
866
+ ## 0.19.0 - April 16, 2018
867
+ - Major refactoring.
868
+ - ApiMap does not require AST data.
869
+ - Prefer line/character positions to offsets.
870
+ - ApiMap::Probe class for inferring dynamic return types.
871
+ - Improved local variable handling.
872
+ - Max workspace size is 5000 files.
873
+
874
+ ## 0.18.3 - April 10, 2018
875
+ - castwide/solargraph#33 Enforce UTF-8 encoding when parsing source
876
+
877
+ ## 0.18.2 - April 6, 2018
878
+ - RuboCop avoids highlighting more than 1 line per offense.
879
+ - LSP message synchronization issues.
880
+ - Prefer non-nil variable assignments in results.
881
+ - Check for nil assignment nodes in variable pins.
882
+ - Fragments handle literal value detection for signatures.
883
+ - Unresolved completion items do not emit errors.
884
+ - Completion items do not send 'Invalid offset' errors to clients.
885
+
886
+ ## 0.18.1 - April 5, 2018
887
+ - First version of the language server.
888
+
889
+ ## 0.17.3 - March 1, 2018
890
+ - YardMap rescues Gem::LoadError instead of Gem::MissingSpecError
891
+ - Server caches ApiMap for nil workspaces.
892
+
893
+ ## 0.17.2 - February 15, 2018
894
+ - Visibility tweaks
895
+ - Refactored YardMap
896
+ - Process require paths to bundled gems
897
+ - Core method return type overrides
898
+ - Server handles nil and empty workspaces
899
+
900
+ ## 0.17.1 - February 4, 2018
901
+ - Convert ERB templates to parsable code.
902
+ - Improved relative constant detection.
903
+ - Resolve file paths from symbols in required gems.
904
+ - Use inner method suggestion methods to avoid infinite recursion.
905
+
906
+ ## 0.17.0 - February 1, 2018
907
+ - Support Solargraph configurations in workspace folders.
908
+ - Use @yieldself tag to change block contexts.
909
+ - Handle whitespace in signatures.
910
+ - Convert 'self' when inferring signature types.
911
+ - Handle bare periods without signatures.
912
+ - Source#fix handles bare periods better.
913
+ - Deprecate snippets.
914
+ - Initial support for macro directives.
915
+ - Changes to YardMap require path resolution.
916
+ - Server provides /define endpoint for go to definition.
917
+ - Removed deprecated methods from ApiMap and LiveMap.
918
+
919
+ ## 0.16.0 - January 17, 2018
920
+ - Watch and report workspace changes.
921
+ - Arguments in Runtime method results.
922
+ - Infer yieldparam types from method owner subtypes.
923
+ - Select available port from shell.
924
+
925
+ ## 0.15.4 - January 2, 2018
926
+ - Include suggestion documentation in /signify response.
927
+ - Derive unknown method return types from superclasses.
928
+ - Support for extended modules.
929
+ - Narrow visibility of private constants and methods.
930
+ - Infer return types of method chains from variables.
931
+
932
+ ## 0.15.3 - December 10, 2017
933
+ - Suggestion has_doc attribute.
934
+ - Fully qualified namespace in generated MethodObject paths.
935
+ - Support for private_class_method and private_constant.
936
+ - Stable suggestion sorting (e.g., local class method comes before superclass method).
937
+ - Track files in workspace code objects.
938
+
939
+ ## 0.15.2 - December 5, 2017
940
+ - Patched critical bug in minimum documentation requirement.
941
+
942
+ ## 0.15.1 - December 4, 2017
943
+ - Fixed attribute -> code object mapping error.
944
+
945
+ ## 0.15.0 - December 3, 2017
946
+ - CodeMap is workspace-agnostic.
947
+ - Use YARD code objects for workspace path documentation.
948
+ - Map pins to code objects.
949
+ - Infer return types from domain (DSL) methods.
950
+ - Fixed visibility and results for superclasses.
951
+ - Experimental @yieldself tag.
952
+ - Improved syntax error handling in Source.fix.
953
+ - Gem ships with Ruby 2.2.2 yardocs.
954
+ - Experimental plugin architecture and Runtime plugin.
955
+ - Experimental support for updating Ruby core documentation.
956
+
957
+ ## 0.14.3 - November 30, 2017
958
+ - * Namespace pins
959
+ - * Required setting in config
960
+ - * Ignore non-Ruby files in workspace
961
+ - * Detect changes in workspace files
962
+ - * Add return types to class and module suggestions
963
+ - * Unique variable names in suggestions
964
+ - * Look for variable nodes with non-nil assignments or type tags
965
+ - * Server reverted from Puma back to WEBrick
966
+ - * Stubbed bundler/(setup|require) dependency mapping
967
+ - * Handle config parsing exceptions
968
+ - * Disabled Runtime plugin pending further testing
969
+ - * Handle exceptions in all server endpoints
970
+
971
+ ## 0.14.2 - November 26, 2017
972
+ - Heisenbug in Gem::Specification concealed by Bundler behavior.
973
+
974
+ ## 0.14.1 - November 26, 2017
975
+ - Disabled Runtime plugin.
976
+
977
+ ## 0.14.0 - November 26, 2017
978
+ - LiveMap plugin support.
979
+ - Rebuild workspace yardoc if it exists (do not create).
980
+ - Standardized code/filename argument order.
981
+ - Internal Runtime plugin.
982
+ - Infer typed from Kernel methods.
983
+ - Removed unused dependencies.
984
+ - Add locations to pins and suggestions.
985
+ - Reduced size of /suggest response by default.
986
+ - Use /resolve for suggestion detail.
987
+ - Domain configuration option (experimental DSL support).
988
+ - Identify constant types.
989
+ - Optimized namespace type resolution.
990
+ - Include stdlib in search and document requests.
991
+ - Undefined variable bug in YardMap.
992
+
993
+ ## 0.13.3 - November 7, 2017
994
+ - First support for YARD directives in workspace code.
995
+ - Experimental LiveMap plugins.
996
+ - Changes for backwards compatibility to Ruby 2.2.2.
997
+ - Generate config from default object.
998
+
999
+ ## 0.13.2 - October 31, 2017
1000
+ - * ApiMap clears namespace map when processing virtual files (duplicate object bug).
1001
+ - * Exception for disagreement between root namespace and signature (root instance method bug).
1002
+
1003
+ ## 0.13.1 - October 29, 2017
1004
+ - Added missing return types.
1005
+ - Fixed object(path) resolution.
1006
+ - Corrected docstrings assigned to attribute pins.
1007
+ - Server uses Puma.
1008
+ - Filter server suggestions by default.
1009
+ - Cache pin suggestions.
1010
+ - Improved caches.
1011
+ - YardMap crawls up the scope to find constants.
1012
+ - Use local variable pins to reduce node browsing.
1013
+ - Preparing the workspace also prepares the YardMap.
1014
+ - Deprecated experimental bind tag.
1015
+ - Include restargs (e.g., def foo *bar) in method arguments.
1016
+ - Avoid inferring from signatures in top-level suggestions.
1017
+ - Global variable support.
1018
+ - Remove virtual source's existing pins in ApiMap updates.
1019
+ - Improved performance of signature type inference.
1020
+
1021
+ ## 0.13.0 - October 3, 2017
1022
+ - Constant and symbol detection.
1023
+ - Major code refactoring.
1024
+ - Update single files instead of entire workspace.
1025
+ - Eliminated local yardoc generation.
1026
+
1027
+ ## 0.12.2 - September 14, 2017
1028
+ - Fixed instance variable scoping bug.
1029
+ - Partial support for constant method suggestions.
1030
+
1031
+ ## 0.12.1 - September 12, 2017
1032
+ - More literal value exceptions.
1033
+ - Skip literal strings when building signatures.
1034
+ - Improved ApiMap processing.
1035
+
1036
+ ## 0.12.0 - September 12, 2017
1037
+ - ApiMap config excludes test directory by default.
1038
+ - Fixed literal value detection.
1039
+ - Consolidated processes for inferring signatures.
1040
+ - Object resolution detects class methods.
1041
+ - ApiMap collects method and variable pins while processing maps.
1042
+ - Removed bundler requirement.
1043
+ - Avoid preparing workspaces without explicit requests.
1044
+
1045
+ ## 0.11.2 - September 5, 2017
1046
+ - Include square brackets in signatures for type inference.
1047
+ - Semi-colons terminate signatures.
1048
+ - Detect literal values at the start of signatures.
1049
+ - Eliminate threads in workspace preparation due to lag and sync issues.
1050
+ - Classes only include instance methods from included modules one level deep.
1051
+ - ApiMap recurses into children for constant nodes.
1052
+
1053
+ ## 0.11.1 - August 24, 2017
1054
+ - Find arguments node for singleton methods.
1055
+ - Recurse into class << self when collecting singleton methods.
1056
+ - Detect singleton method visibility.
1057
+ - Find constants in ApiMap.
1058
+ - Inferring signatures detects methods that return self.
1059
+
1060
+ ## 0.11.0 - August 16, 2017
1061
+ - Add space to = in attr_accessor suggestions.
1062
+ - Refactored detection of assignment node types.
1063
+ - ApiMap caches assignment node types.
1064
+ - ApiMap checks method visibility.
1065
+ - Smart switching between class and instance scope when inferring signature types.
1066
+ - Private methods are available from included modules.
1067
+ - Avoid infinite loops from variable assignments that reference themselves.
1068
+ - Detect the self keyword when inferring signature types.
1069
+ - Updated gemspec dependencies.
1070
+
1071
+ ## 0.10.3 - August 13, 2017
1072
+ - Return to master branch for releases.
1073
+
1074
+ ## 0.10.2 - August 11, 2017
1075
+ - Chained method call inference.
1076
+ - Detect class and instance variables in signatures.
1077
+ - ApiMap caches inferred signature types.
1078
+
1079
+ ## 0.10.1 - August 11, 2017
1080
+ - CodeMap signature typing detects method arguments.
1081
+ - Miscellaneous nil checks.
1082
+ - Fixed yieldparam detection.
1083
+ - Clean namespace strings for return types with subtypes.
1084
+
1085
+ ## 0.10.0 - August 9, 2017
1086
+ - YardMap#get_constants filters for classes, modules, and constants.
1087
+ - Suggestions allow Constant as a kind attribute.
1088
+ - Class variable support.
1089
+ - Detect variables that directly references classes instead of instances.
1090
+ - Detect and infer types for yield params.
1091
+
1092
+ ## 0.9.2 - August 7, 2017
1093
+ - Add block parameter variables to suggestions.
1094
+
1095
+ ## 0.9.1 - August 1, 2017
1096
+ - YardMap fixes.
1097
+ - Workaround for paths in HTML helper.
1098
+ - Extract default values for optional arguments from code.
1099
+ - Parse param tags in suggestions.
1100
+ - Show return types for method params.
1101
+ - CodeMap detects comments.
1102
+ - Solargraph config subcommand writes to .solargraph.yml.
1103
+
1104
+ ## 0.9.0 - June 27, 2017
1105
+ - Run GC after each server request.
1106
+ - ApiMap appends all .rb files in workspace.
1107
+ - Emulate YARD when parsing comments in ApiMap.
1108
+ - Include modules in ApiMap inner instance methods.
1109
+ - Configure ApiMap file options in .solargraph.yml.
1110
+
1111
+ ## 0.8.6 - June 14, 2017
1112
+ - ApiMap#update_yardoc sets workspace from thread. Retain docstring in suggestions.
1113
+ - ApiMap#update_yardoc uses .yardopts directly for globs.
1114
+ - CodeMap#filename path separator hack.
1115
+ - Include all arguments in ApiMap instance method suggestions. Nil filename exception in CodeMap.
1116
+
1117
+ ## 0.8.5 - June 12, 2017
1118
+ - Exclude Kernel module when querying namespace instance methods.
1119
+
1120
+ ## 0.8.4 - June 11, 2017
1121
+ - Sort and filter for suggestions.
1122
+ - CodeMap#namespace_from returns empty string instead of first node for nodes without locations.
1123
+ - Improved error handling.
1124
+ - Suggestions include return types.
1125
+ - Convert RDoc to HTML in Suggestion#documentation.
1126
+ - Instance methods in suggestions include superclass and mixin methods.
1127
+
1128
+ ## 0.8.3 - June 8, 2017
1129
+ - Improved detection of cursors inside strings.
1130
+ - Property and Field kinds for suggestions.
1131
+
1132
+ ## 0.8.2 - June 3, 2017
1133
+ - Suggestions and inferences for method arguments.
1134
+
1135
+ ## 0.8.1 - May 31, 2017
1136
+ - Server uses Webrick.
1137
+
1138
+ ## 0.8.0 - May 29, 2017
1139
+ - Method suggestions include arguments.
1140
+ - Use CodeMap#signature_at to get suggestions for method arguments.
1141
+ - Server includes /signify endpoint for method arguments.
1142
+ - First support for hover documentation.
1143
+ - Handle multi-part constants in namespaces, e.g., "class Foo::Bar"
1144
+ - Use #initialize documentation for #new methods.
1145
+ - More HTML formatting helpers.
1146
+ - Improved type detection for local variables.
1147
+ - Long/complex signature handling.
1148
+
1149
+ ## 0.7.5 - May 12, 2017
1150
+ - Improved live error correction and instance variable suggestions.