solargraph 0.26.1 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
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