solargraph 0.58.0 → 0.58.2

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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +9 -0
  5. data/bin/solargraph +8 -8
  6. data/lib/solargraph/api_map/cache.rb +110 -110
  7. data/lib/solargraph/api_map/constants.rb +279 -279
  8. data/lib/solargraph/api_map/index.rb +193 -193
  9. data/lib/solargraph/api_map/source_to_yard.rb +97 -97
  10. data/lib/solargraph/api_map/store.rb +384 -384
  11. data/lib/solargraph/api_map.rb +945 -945
  12. data/lib/solargraph/complex_type/type_methods.rb +228 -228
  13. data/lib/solargraph/complex_type/unique_type.rb +482 -482
  14. data/lib/solargraph/complex_type.rb +444 -444
  15. data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
  16. data/lib/solargraph/convention/data_definition.rb +105 -105
  17. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
  18. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
  19. data/lib/solargraph/convention/struct_definition.rb +164 -164
  20. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  21. data/lib/solargraph/diagnostics/rubocop.rb +118 -118
  22. data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -68
  23. data/lib/solargraph/diagnostics/type_check.rb +55 -55
  24. data/lib/solargraph/doc_map.rb +439 -439
  25. data/lib/solargraph/equality.rb +34 -34
  26. data/lib/solargraph/gem_pins.rb +98 -98
  27. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  28. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  29. data/lib/solargraph/language_server/host/message_worker.rb +112 -112
  30. data/lib/solargraph/language_server/host/sources.rb +99 -99
  31. data/lib/solargraph/language_server/host.rb +878 -878
  32. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
  33. data/lib/solargraph/language_server/message/extended/document.rb +23 -23
  34. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
  35. data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
  36. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
  37. data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -148
  38. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  39. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
  40. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
  41. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  42. data/lib/solargraph/library.rb +683 -683
  43. data/lib/solargraph/location.rb +82 -82
  44. data/lib/solargraph/logging.rb +37 -37
  45. data/lib/solargraph/parser/comment_ripper.rb +69 -69
  46. data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
  47. data/lib/solargraph/parser/node_processor/base.rb +92 -92
  48. data/lib/solargraph/parser/node_processor.rb +62 -62
  49. data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -149
  50. data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
  51. data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -486
  52. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  53. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
  54. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
  55. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
  56. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
  57. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
  58. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
  59. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
  60. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
  61. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  62. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  63. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
  64. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -52
  65. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -291
  66. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
  67. data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
  68. data/lib/solargraph/parser/region.rb +69 -69
  69. data/lib/solargraph/parser/snippet.rb +17 -17
  70. data/lib/solargraph/pin/base.rb +729 -729
  71. data/lib/solargraph/pin/base_variable.rb +126 -126
  72. data/lib/solargraph/pin/block.rb +104 -104
  73. data/lib/solargraph/pin/breakable.rb +9 -9
  74. data/lib/solargraph/pin/callable.rb +231 -231
  75. data/lib/solargraph/pin/closure.rb +72 -72
  76. data/lib/solargraph/pin/common.rb +79 -79
  77. data/lib/solargraph/pin/conversions.rb +123 -123
  78. data/lib/solargraph/pin/delegated_method.rb +120 -120
  79. data/lib/solargraph/pin/documenting.rb +114 -114
  80. data/lib/solargraph/pin/instance_variable.rb +34 -34
  81. data/lib/solargraph/pin/keyword.rb +20 -20
  82. data/lib/solargraph/pin/local_variable.rb +75 -75
  83. data/lib/solargraph/pin/method.rb +672 -672
  84. data/lib/solargraph/pin/method_alias.rb +34 -34
  85. data/lib/solargraph/pin/namespace.rb +115 -115
  86. data/lib/solargraph/pin/parameter.rb +275 -275
  87. data/lib/solargraph/pin/proxy_type.rb +39 -39
  88. data/lib/solargraph/pin/reference/override.rb +47 -47
  89. data/lib/solargraph/pin/reference/superclass.rb +15 -15
  90. data/lib/solargraph/pin/reference.rb +39 -39
  91. data/lib/solargraph/pin/search.rb +61 -61
  92. data/lib/solargraph/pin/signature.rb +61 -61
  93. data/lib/solargraph/pin/symbol.rb +53 -53
  94. data/lib/solargraph/pin/until.rb +18 -18
  95. data/lib/solargraph/pin/while.rb +18 -18
  96. data/lib/solargraph/pin.rb +44 -44
  97. data/lib/solargraph/pin_cache.rb +245 -245
  98. data/lib/solargraph/position.rb +132 -119
  99. data/lib/solargraph/range.rb +112 -112
  100. data/lib/solargraph/rbs_map/conversions.rb +823 -823
  101. data/lib/solargraph/rbs_map/core_map.rb +58 -58
  102. data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
  103. data/lib/solargraph/rbs_map.rb +163 -163
  104. data/lib/solargraph/shell.rb +352 -352
  105. data/lib/solargraph/source/chain/call.rb +337 -337
  106. data/lib/solargraph/source/chain/constant.rb +26 -26
  107. data/lib/solargraph/source/chain/hash.rb +34 -34
  108. data/lib/solargraph/source/chain/if.rb +28 -28
  109. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  110. data/lib/solargraph/source/chain/literal.rb +48 -48
  111. data/lib/solargraph/source/chain/or.rb +23 -23
  112. data/lib/solargraph/source/chain.rb +291 -291
  113. data/lib/solargraph/source/change.rb +82 -82
  114. data/lib/solargraph/source/cursor.rb +166 -166
  115. data/lib/solargraph/source/encoding_fixes.rb +23 -23
  116. data/lib/solargraph/source/source_chainer.rb +194 -194
  117. data/lib/solargraph/source/updater.rb +55 -55
  118. data/lib/solargraph/source.rb +498 -498
  119. data/lib/solargraph/source_map/clip.rb +226 -226
  120. data/lib/solargraph/source_map/data.rb +34 -34
  121. data/lib/solargraph/source_map/mapper.rb +259 -259
  122. data/lib/solargraph/source_map.rb +212 -212
  123. data/lib/solargraph/type_checker/checks.rb +124 -124
  124. data/lib/solargraph/type_checker/param_def.rb +37 -37
  125. data/lib/solargraph/type_checker/problem.rb +32 -32
  126. data/lib/solargraph/type_checker/rules.rb +84 -84
  127. data/lib/solargraph/type_checker.rb +814 -814
  128. data/lib/solargraph/version.rb +5 -5
  129. data/lib/solargraph/workspace/config.rb +255 -255
  130. data/lib/solargraph/workspace/require_paths.rb +97 -97
  131. data/lib/solargraph/workspace.rb +220 -220
  132. data/lib/solargraph/yard_map/helpers.rb +44 -44
  133. data/lib/solargraph/yard_map/mapper/to_method.rb +130 -130
  134. data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -31
  135. data/lib/solargraph/yard_map/mapper.rb +79 -79
  136. data/lib/solargraph/yard_map/to_method.rb +89 -89
  137. data/lib/solargraph/yardoc.rb +87 -87
  138. data/lib/solargraph.rb +105 -105
  139. data/rbs_collection.yaml +1 -1
  140. metadata +13 -12
  141. /data/{sig → rbs}/shims/ast/0/node.rbs +0 -0
  142. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  143. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  144. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  145. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  146. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  147. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  148. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  149. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  150. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,82 +1,82 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- # A pointer to a section of source text identified by its filename
5
- # and Range.
6
- #
7
- class Location
8
- include Equality
9
-
10
- # @return [String]
11
- attr_reader :filename
12
-
13
- # @return [Solargraph::Range]
14
- attr_reader :range
15
-
16
- # @param filename [String]
17
- # @param range [Solargraph::Range]
18
- def initialize filename, range
19
- @filename = filename
20
- @range = range
21
- end
22
-
23
- # @sg-ignore Fix "Not enough arguments to Module#protected"
24
- protected def equality_fields
25
- [filename, range]
26
- end
27
-
28
- # @param other [self]
29
- def <=>(other)
30
- return nil unless other.is_a?(Location)
31
- if filename == other.filename
32
- range <=> other.range
33
- else
34
- filename <=> other.filename
35
- end
36
- end
37
-
38
- def rbs?
39
- filename.end_with?('.rbs')
40
- end
41
-
42
- # @param location [self]
43
- def contain? location
44
- range.contain?(location.range.start) && range.contain?(location.range.ending) && filename == location.filename
45
- end
46
-
47
- def inspect
48
- "<#{self.class.name}: filename=#{filename}, range=#{range.inspect}>"
49
- end
50
-
51
- def to_s
52
- inspect
53
- end
54
-
55
- # @return [Hash]
56
- def to_hash
57
- {
58
- filename: filename,
59
- range: range.to_hash
60
- }
61
- end
62
-
63
- # @param node [Parser::AST::Node, nil]
64
- # @return [Location, nil]
65
- def self.from_node(node)
66
- return nil if node.nil? || node.loc.nil?
67
- range = Range.from_node(node)
68
- self.new(node.loc.expression.source_buffer.name, range)
69
- end
70
-
71
- # @param other [BasicObject]
72
- def == other
73
- return false unless other.is_a?(Location)
74
- # @sg-ignore https://github.com/castwide/solargraph/pull/1114
75
- filename == other.filename and range == other.range
76
- end
77
-
78
- def inspect
79
- "#<#{self.class} #{filename}, #{range.inspect}>"
80
- end
81
- end
82
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ # A pointer to a section of source text identified by its filename
5
+ # and Range.
6
+ #
7
+ class Location
8
+ include Equality
9
+
10
+ # @return [String]
11
+ attr_reader :filename
12
+
13
+ # @return [Solargraph::Range]
14
+ attr_reader :range
15
+
16
+ # @param filename [String]
17
+ # @param range [Solargraph::Range]
18
+ def initialize filename, range
19
+ @filename = filename
20
+ @range = range
21
+ end
22
+
23
+ # @sg-ignore Fix "Not enough arguments to Module#protected"
24
+ protected def equality_fields
25
+ [filename, range]
26
+ end
27
+
28
+ # @param other [self]
29
+ def <=>(other)
30
+ return nil unless other.is_a?(Location)
31
+ if filename == other.filename
32
+ range <=> other.range
33
+ else
34
+ filename <=> other.filename
35
+ end
36
+ end
37
+
38
+ def rbs?
39
+ filename.end_with?('.rbs')
40
+ end
41
+
42
+ # @param location [self]
43
+ def contain? location
44
+ range.contain?(location.range.start) && range.contain?(location.range.ending) && filename == location.filename
45
+ end
46
+
47
+ def inspect
48
+ "<#{self.class.name}: filename=#{filename}, range=#{range.inspect}>"
49
+ end
50
+
51
+ def to_s
52
+ inspect
53
+ end
54
+
55
+ # @return [Hash]
56
+ def to_hash
57
+ {
58
+ filename: filename,
59
+ range: range.to_hash
60
+ }
61
+ end
62
+
63
+ # @param node [Parser::AST::Node, nil]
64
+ # @return [Location, nil]
65
+ def self.from_node(node)
66
+ return nil if node.nil? || node.loc.nil?
67
+ range = Range.from_node(node)
68
+ self.new(node.loc.expression.source_buffer.name, range)
69
+ end
70
+
71
+ # @param other [BasicObject]
72
+ def == other
73
+ return false unless other.is_a?(Location)
74
+ # @sg-ignore https://github.com/castwide/solargraph/pull/1114
75
+ filename == other.filename and range == other.range
76
+ end
77
+
78
+ def inspect
79
+ "#<#{self.class} #{filename}, #{range.inspect}>"
80
+ end
81
+ end
82
+ end
@@ -1,37 +1,37 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
-
5
- module Solargraph
6
- module Logging
7
- DEFAULT_LOG_LEVEL = Logger::WARN
8
-
9
- LOG_LEVELS = {
10
- 'warn' => Logger::WARN,
11
- 'info' => Logger::INFO,
12
- 'debug' => Logger::DEBUG
13
- }
14
- configured_level = ENV.fetch('SOLARGRAPH_LOG', nil)
15
- level = if LOG_LEVELS.keys.include?(configured_level)
16
- LOG_LEVELS.fetch(configured_level)
17
- else
18
- if configured_level
19
- warn "Invalid value for SOLARGRAPH_LOG: #{configured_level.inspect} - " \
20
- "valid values are #{LOG_LEVELS.keys}"
21
- end
22
- DEFAULT_LOG_LEVEL
23
- end
24
- @@logger = Logger.new(STDERR, level: level)
25
- # @sg-ignore Fix cvar issue
26
- @@logger.formatter = proc do |severity, datetime, progname, msg|
27
- "[#{severity}] #{msg}\n"
28
- end
29
-
30
- module_function
31
-
32
- # @return [Logger]
33
- def logger
34
- @@logger
35
- end
36
- end
37
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module Solargraph
6
+ module Logging
7
+ DEFAULT_LOG_LEVEL = Logger::WARN
8
+
9
+ LOG_LEVELS = {
10
+ 'warn' => Logger::WARN,
11
+ 'info' => Logger::INFO,
12
+ 'debug' => Logger::DEBUG
13
+ }
14
+ configured_level = ENV.fetch('SOLARGRAPH_LOG', nil)
15
+ level = if LOG_LEVELS.keys.include?(configured_level)
16
+ LOG_LEVELS.fetch(configured_level)
17
+ else
18
+ if configured_level
19
+ warn "Invalid value for SOLARGRAPH_LOG: #{configured_level.inspect} - " \
20
+ "valid values are #{LOG_LEVELS.keys}"
21
+ end
22
+ DEFAULT_LOG_LEVEL
23
+ end
24
+ @@logger = Logger.new(STDERR, level: level)
25
+ # @sg-ignore Fix cvar issue
26
+ @@logger.formatter = proc do |severity, datetime, progname, msg|
27
+ "[#{severity}] #{msg}\n"
28
+ end
29
+
30
+ module_function
31
+
32
+ # @return [Logger]
33
+ def logger
34
+ @@logger
35
+ end
36
+ end
37
+ end
@@ -1,69 +1,69 @@
1
- require 'ripper'
2
-
3
- module Solargraph
4
- module Parser
5
- class CommentRipper < Ripper::SexpBuilderPP
6
- # @!override Ripper::SexpBuilder#on_embdoc_beg
7
- # @return [Array(Symbol, String, Array)]
8
- # @!override Ripper::SexpBuilder#on_embdoc
9
- # @return [Array(Symbol, String, Array)]
10
- # @!override Ripper::SexpBuilder#on_embdoc_end
11
- # @return [Array(Symbol, String, Array)]
12
-
13
- # @param src [String]
14
- # @param filename [String]
15
- # @param lineno [Integer]
16
- def initialize src, filename = '(ripper)', lineno = 0
17
- super
18
- @buffer = src
19
- @buffer_lines = @buffer.lines
20
- end
21
-
22
- def on_comment *args
23
- # @sg-ignore
24
- # @type [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
25
- result = super
26
- if @buffer_lines[result[2][0]][0..result[2][1]].strip =~ /^#/
27
- chomped = result[1].chomp
28
- if result[2][0] == 0 && chomped.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').match(/^#\s*frozen_string_literal:/)
29
- chomped = '#'
30
- end
31
- @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0], result[2][1], result[2][0], result[2][1] + chomped.length), chomped)
32
- end
33
- result
34
- end
35
-
36
- # @param result [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
37
- # @return [void]
38
- def create_snippet(result)
39
- chomped = result[1].chomp
40
- @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0] || 0, result[2][1] || 0, result[2][0] || 0, (result[2][1] || 0) + chomped.length), chomped)
41
- end
42
-
43
- def on_embdoc_beg *args
44
- result = super
45
- create_snippet(result)
46
- result
47
- end
48
-
49
- def on_embdoc *args
50
- result = super
51
- create_snippet(result)
52
- result
53
- end
54
-
55
- def on_embdoc_end *args
56
- result = super
57
- create_snippet(result)
58
- result
59
- end
60
-
61
- # @return [Hash{Integer => Solargraph::Parser::Snippet}]
62
- def parse
63
- @comments = {}
64
- super
65
- @comments
66
- end
67
- end
68
- end
69
- end
1
+ require 'ripper'
2
+
3
+ module Solargraph
4
+ module Parser
5
+ class CommentRipper < Ripper::SexpBuilderPP
6
+ # @!override Ripper::SexpBuilder#on_embdoc_beg
7
+ # @return [Array(Symbol, String, Array)]
8
+ # @!override Ripper::SexpBuilder#on_embdoc
9
+ # @return [Array(Symbol, String, Array)]
10
+ # @!override Ripper::SexpBuilder#on_embdoc_end
11
+ # @return [Array(Symbol, String, Array)]
12
+
13
+ # @param src [String]
14
+ # @param filename [String]
15
+ # @param lineno [Integer]
16
+ def initialize src, filename = '(ripper)', lineno = 0
17
+ super
18
+ @buffer = src
19
+ @buffer_lines = @buffer.lines
20
+ end
21
+
22
+ def on_comment *args
23
+ # @sg-ignore
24
+ # @type [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
25
+ result = super
26
+ if @buffer_lines[result[2][0]][0..result[2][1]].strip =~ /^#/
27
+ chomped = result[1].chomp
28
+ if result[2][0] == 0 && chomped.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '').match(/^#\s*frozen_string_literal:/)
29
+ chomped = '#'
30
+ end
31
+ @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0], result[2][1], result[2][0], result[2][1] + chomped.length), chomped)
32
+ end
33
+ result
34
+ end
35
+
36
+ # @param result [Array(Symbol, String, Array([Integer, nil], [Integer, nil]))]
37
+ # @return [void]
38
+ def create_snippet(result)
39
+ chomped = result[1].chomp
40
+ @comments[result[2][0]] = Snippet.new(Range.from_to(result[2][0] || 0, result[2][1] || 0, result[2][0] || 0, (result[2][1] || 0) + chomped.length), chomped)
41
+ end
42
+
43
+ def on_embdoc_beg *args
44
+ result = super
45
+ create_snippet(result)
46
+ result
47
+ end
48
+
49
+ def on_embdoc *args
50
+ result = super
51
+ create_snippet(result)
52
+ result
53
+ end
54
+
55
+ def on_embdoc_end *args
56
+ result = super
57
+ create_snippet(result)
58
+ result
59
+ end
60
+
61
+ # @return [Hash{Integer => Solargraph::Parser::Snippet}]
62
+ def parse
63
+ @comments = {}
64
+ super
65
+ @comments
66
+ end
67
+ end
68
+ end
69
+ end