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,37 +1,37 @@
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
- # @param name [String]
16
- # @param type [Symbol] The type of parameter, such as :req, :opt, :rest, etc.
17
- def initialize name, type
18
- @name = name
19
- @type = type
20
- end
21
-
22
- class << self
23
- # Get an array of ParamDefs from a method pin.
24
- #
25
- # @param pin [Solargraph::Pin::Method]
26
- # @return [Array<ParamDef>]
27
- def from pin
28
- result = []
29
- pin.parameters.each do |par|
30
- result.push ParamDef.new(par.name, par.decl)
31
- end
32
- result
33
- end
34
- end
35
- end
36
- end
37
- end
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
+ # @param name [String]
16
+ # @param type [Symbol] The type of parameter, such as :req, :opt, :rest, etc.
17
+ def initialize name, type
18
+ @name = name
19
+ @type = type
20
+ end
21
+
22
+ class << self
23
+ # Get an array of ParamDefs from a method pin.
24
+ #
25
+ # @param pin [Solargraph::Pin::Method]
26
+ # @return [Array<ParamDef>]
27
+ def from pin
28
+ result = []
29
+ pin.parameters.each do |par|
30
+ result.push ParamDef.new(par.name, par.decl)
31
+ end
32
+ result
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,32 +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
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
@@ -1,84 +1,84 @@
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
- alpha: 4
14
- }.freeze
15
-
16
- # @return [Symbol]
17
- attr_reader :level
18
-
19
- # @return [Integer]
20
- attr_reader :rank
21
-
22
- # @param level [Symbol]
23
- # @param overrides [Hash{Symbol => Symbol}]
24
- def initialize level, overrides
25
- @rank = if LEVELS.key?(level)
26
- LEVELS[level]
27
- else
28
- Solargraph.logger.warn "Unrecognized TypeChecker level #{level}, assuming normal"
29
- 0
30
- end
31
- @level = LEVELS[LEVELS.values.index(@rank)]
32
- @overrides = overrides
33
- end
34
-
35
- def ignore_all_undefined?
36
- !report_undefined?
37
- end
38
-
39
- def report_undefined?
40
- report?(:report_undefined, :strict)
41
- end
42
-
43
- def validate_consts?
44
- report?(:validate_consts, :strict)
45
- end
46
-
47
- def validate_calls?
48
- report?(:validate_calls, :strict)
49
- end
50
-
51
- def require_type_tags?
52
- report?(:validate_type_tags, :strong)
53
- end
54
-
55
- def must_tag_or_infer?
56
- report?(:must_tag_or_infer, :strict)
57
- end
58
-
59
- def validate_tags?
60
- report?(:validate_tags, :typed)
61
- end
62
-
63
- def require_all_return_types_match_inferred?
64
- report?(:require_all_return_types_match_inferred, :alpha)
65
- end
66
-
67
- # We keep this at strong because if you added an @ sg-ignore to
68
- # address a strong-level issue, then ran at a lower level, you'd
69
- # get a false positive - we don't run stronger level checks than
70
- # requested for performance reasons
71
- def validate_sg_ignores?
72
- report?(:validate_sg_ignores, :strong)
73
- end
74
-
75
- private
76
-
77
- # @param type [Symbol]
78
- # @param level [Symbol]
79
- def report?(type, level)
80
- rank >= LEVELS[@overrides.fetch(type, level)]
81
- end
82
- end
83
- end
84
- end
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
+ alpha: 4
14
+ }.freeze
15
+
16
+ # @return [Symbol]
17
+ attr_reader :level
18
+
19
+ # @return [Integer]
20
+ attr_reader :rank
21
+
22
+ # @param level [Symbol]
23
+ # @param overrides [Hash{Symbol => Symbol}]
24
+ def initialize level, overrides
25
+ @rank = if LEVELS.key?(level)
26
+ LEVELS[level]
27
+ else
28
+ Solargraph.logger.warn "Unrecognized TypeChecker level #{level}, assuming normal"
29
+ 0
30
+ end
31
+ @level = LEVELS[LEVELS.values.index(@rank)]
32
+ @overrides = overrides
33
+ end
34
+
35
+ def ignore_all_undefined?
36
+ !report_undefined?
37
+ end
38
+
39
+ def report_undefined?
40
+ report?(:report_undefined, :strict)
41
+ end
42
+
43
+ def validate_consts?
44
+ report?(:validate_consts, :strict)
45
+ end
46
+
47
+ def validate_calls?
48
+ report?(:validate_calls, :strict)
49
+ end
50
+
51
+ def require_type_tags?
52
+ report?(:validate_type_tags, :strong)
53
+ end
54
+
55
+ def must_tag_or_infer?
56
+ report?(:must_tag_or_infer, :strict)
57
+ end
58
+
59
+ def validate_tags?
60
+ report?(:validate_tags, :typed)
61
+ end
62
+
63
+ def require_all_return_types_match_inferred?
64
+ report?(:require_all_return_types_match_inferred, :alpha)
65
+ end
66
+
67
+ # We keep this at strong because if you added an @ sg-ignore to
68
+ # address a strong-level issue, then ran at a lower level, you'd
69
+ # get a false positive - we don't run stronger level checks than
70
+ # requested for performance reasons
71
+ def validate_sg_ignores?
72
+ report?(:validate_sg_ignores, :strong)
73
+ end
74
+
75
+ private
76
+
77
+ # @param type [Symbol]
78
+ # @param level [Symbol]
79
+ def report?(type, level)
80
+ rank >= LEVELS[@overrides.fetch(type, level)]
81
+ end
82
+ end
83
+ end
84
+ end