solargraph 0.26.1 → 0.27.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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/lib/solargraph.rb +5 -2
  3. data/lib/solargraph/api_map.rb +236 -234
  4. data/lib/solargraph/api_map/store.rb +18 -53
  5. data/lib/solargraph/bundle.rb +22 -0
  6. data/lib/solargraph/complex_type.rb +9 -5
  7. data/lib/solargraph/complex_type/type_methods.rb +113 -0
  8. data/lib/solargraph/complex_type/unique_type.rb +35 -0
  9. data/lib/solargraph/core_fills.rb +1 -0
  10. data/lib/solargraph/diagnostics.rb +6 -4
  11. data/lib/solargraph/diagnostics/base.rb +3 -0
  12. data/lib/solargraph/diagnostics/require_not_found.rb +2 -1
  13. data/lib/solargraph/diagnostics/rubocop.rb +21 -6
  14. data/lib/solargraph/diagnostics/type_not_defined.rb +4 -3
  15. data/lib/solargraph/diagnostics/update_errors.rb +18 -0
  16. data/lib/solargraph/language_server/host.rb +90 -222
  17. data/lib/solargraph/language_server/host/cataloger.rb +68 -0
  18. data/lib/solargraph/language_server/host/diagnoser.rb +85 -0
  19. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +35 -24
  20. data/lib/solargraph/language_server/message/text_document/completion.rb +6 -8
  21. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +1 -1
  22. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +0 -1
  23. data/lib/solargraph/language_server/transport/socket.rb +4 -6
  24. data/lib/solargraph/language_server/transport/stdio.rb +4 -6
  25. data/lib/solargraph/library.rb +152 -99
  26. data/lib/solargraph/live_map.rb +1 -1
  27. data/lib/solargraph/location.rb +28 -0
  28. data/lib/solargraph/pin.rb +2 -0
  29. data/lib/solargraph/pin/attribute.rb +26 -12
  30. data/lib/solargraph/pin/base.rb +15 -35
  31. data/lib/solargraph/pin/base_variable.rb +7 -15
  32. data/lib/solargraph/pin/block.rb +5 -9
  33. data/lib/solargraph/pin/block_parameter.rb +9 -7
  34. data/lib/solargraph/pin/conversions.rb +5 -5
  35. data/lib/solargraph/pin/duck_method.rb +1 -1
  36. data/lib/solargraph/pin/instance_variable.rb +0 -4
  37. data/lib/solargraph/pin/keyword.rb +4 -0
  38. data/lib/solargraph/pin/localized.rb +5 -3
  39. data/lib/solargraph/pin/method.rb +11 -0
  40. data/lib/solargraph/pin/namespace.rb +7 -3
  41. data/lib/solargraph/pin/proxy_type.rb +3 -7
  42. data/lib/solargraph/pin/reference.rb +2 -2
  43. data/lib/solargraph/pin/symbol.rb +1 -1
  44. data/lib/solargraph/pin/yard_pin/method.rb +2 -2
  45. data/lib/solargraph/pin/yard_pin/namespace.rb +16 -7
  46. data/lib/solargraph/position.rb +103 -0
  47. data/lib/solargraph/range.rb +70 -0
  48. data/lib/solargraph/source.rb +159 -328
  49. data/lib/solargraph/source/chain.rb +38 -55
  50. data/lib/solargraph/source/chain/call.rb +47 -29
  51. data/lib/solargraph/source/chain/class_variable.rb +2 -2
  52. data/lib/solargraph/source/chain/constant.rb +3 -3
  53. data/lib/solargraph/source/chain/definition.rb +7 -3
  54. data/lib/solargraph/source/chain/global_variable.rb +1 -1
  55. data/lib/solargraph/source/chain/head.rb +22 -9
  56. data/lib/solargraph/source/chain/instance_variable.rb +2 -2
  57. data/lib/solargraph/source/chain/link.rb +4 -4
  58. data/lib/solargraph/source/chain/literal.rb +1 -1
  59. data/lib/solargraph/source/chain/variable.rb +2 -2
  60. data/lib/solargraph/source/change.rb +0 -6
  61. data/lib/solargraph/source/cursor.rb +161 -0
  62. data/lib/solargraph/source/encoding_fixes.rb +1 -1
  63. data/lib/solargraph/source/node_chainer.rb +28 -21
  64. data/lib/solargraph/source/node_methods.rb +1 -1
  65. data/lib/solargraph/source/source_chainer.rb +217 -0
  66. data/lib/solargraph/source_map.rb +138 -0
  67. data/lib/solargraph/source_map/clip.rb +123 -0
  68. data/lib/solargraph/{source → source_map}/completion.rb +3 -3
  69. data/lib/solargraph/{source → source_map}/mapper.rb +143 -41
  70. data/lib/solargraph/version.rb +1 -1
  71. data/lib/solargraph/workspace.rb +13 -20
  72. data/lib/solargraph/yard_map.rb +77 -48
  73. metadata +17 -11
  74. data/lib/solargraph/basic_type.rb +0 -33
  75. data/lib/solargraph/basic_type_methods.rb +0 -111
  76. data/lib/solargraph/source/call_chainer.rb +0 -273
  77. data/lib/solargraph/source/fragment.rb +0 -342
  78. data/lib/solargraph/source/location.rb +0 -23
  79. data/lib/solargraph/source/position.rb +0 -95
  80. data/lib/solargraph/source/range.rb +0 -64
@@ -1,23 +0,0 @@
1
- module Solargraph
2
- class Source
3
- class Location
4
- # @return [String]
5
- attr_reader :filename
6
-
7
- # @return [Solargraph::Source::Range]
8
- attr_reader :range
9
-
10
- # @param filename [String]
11
- # @param range [Solargraph::Source::Range]
12
- def initialize filename, range
13
- @filename = filename
14
- @range = range
15
- end
16
-
17
- def == other
18
- return false unless other.is_a?(Location)
19
- filename == other.filename and range == other.range
20
- end
21
- end
22
- end
23
- end
@@ -1,95 +0,0 @@
1
- module Solargraph
2
-
3
- class Source
4
- class Position
5
- # @return [Integer]
6
- attr_reader :line
7
-
8
- # @return [Integer]
9
- attr_reader :character
10
-
11
- def initialize line, character
12
- @line = line
13
- @character = character
14
- end
15
-
16
- def column
17
- character
18
- end
19
-
20
- # Get a hash of the position. This representation is suitable for use in
21
- # the language server protocol.
22
- #
23
- # @return [Hash]
24
- def to_hash
25
- {
26
- line: line,
27
- character: character
28
- }
29
- end
30
-
31
- # Get a numeric offset for the specified text and position.
32
- #
33
- # @param text [String]
34
- # @param position [Position]
35
- # @return [Integer]
36
- def self.to_offset text, position
37
- result = 0
38
- feed = 0
39
- line = position.line
40
- column = position.character
41
- text.lines.each do |l|
42
- line_length = l.length
43
- char_length = l.chomp.length
44
- if feed == line
45
- result += column
46
- break
47
- end
48
- result += line_length
49
- feed += 1
50
- end
51
- result
52
- end
53
-
54
- # Get a numeric offset for the specified text and a position identified
55
- # by its line and character.
56
- #
57
- # @param text [String]
58
- # @param line [Integer]
59
- # @param character [Integer]
60
- # @return [Integer]
61
- def self.line_char_to_offset text, line, character
62
- to_offset(text, Position.new(line, character))
63
- end
64
-
65
- # Get a position for the specified text and offset.
66
- #
67
- # @param text [String]
68
- # @param offset [Integer]
69
- # @return [Position]
70
- def self.from_offset text, offset
71
- cursor = 0
72
- line = 0
73
- character = nil
74
- text.lines.each do |l|
75
- line_length = l.length
76
- char_length = l.chomp.length
77
- if cursor + char_length >= offset
78
- character = offset - cursor
79
- break
80
- end
81
- cursor += line_length
82
- line += 1
83
- end
84
- character = 0 if character.nil? and offset == cursor
85
- raise InvalidOffsetError if character.nil?
86
- Position.new(line, character)
87
- end
88
-
89
- def == other
90
- return false unless other.is_a?(Position)
91
- line == other.line and character == other.character
92
- end
93
- end
94
- end
95
- end
@@ -1,64 +0,0 @@
1
- module Solargraph
2
- class Source
3
- class Range
4
- # @return [Position]
5
- attr_reader :start
6
-
7
- # @return [Position]
8
- attr_reader :ending
9
-
10
- # @param start [Position]
11
- # @param ending [Position]
12
- def initialize start, ending
13
- @start = start
14
- @ending = ending
15
- end
16
-
17
- # Get a hash of the range. This representation is suitable for use in
18
- # the language server protocol.
19
- #
20
- # @return [Hash<Symbol, Position>]
21
- def to_hash
22
- {
23
- start: start.to_hash,
24
- end: ending.to_hash
25
- }
26
- end
27
-
28
- # True if the specified position is inside the range.
29
- #
30
- # @param position [Solargraph::Source::Position]
31
- # @return [Boolean]
32
- def contain? position
33
- return false if position.line < start.line or position.line > ending.line
34
- return false if position.line == start.line and position.character < start.character
35
- return false if position.line == ending.line and position.character > ending.character
36
- true
37
- end
38
-
39
- # True if the range contains the specified position and the position does not precede it.
40
- #
41
- # @param position [Source::Position]
42
- # @return [Boolean]
43
- def include? position
44
- contain?(position) and !(position.line == start.line and position.character == start.character)
45
- end
46
-
47
- # Create a range from a pair of lines and characters.
48
- #
49
- # @param l1 [Integer] Starting line
50
- # @param c1 [Integer] Starting character
51
- # @param l2 [Integer] Ending line
52
- # @param c2 [Integer] Ending character
53
- # @return [Range]
54
- def self.from_to l1, c1, l2, c2
55
- Range.new(Position.new(l1, c1), Position.new(l2, c2))
56
- end
57
-
58
- def == other
59
- return false unless other.is_a?(Range)
60
- start == other.start and ending == other.ending
61
- end
62
- end
63
- end
64
- end