solargraph 0.31.2 → 0.31.3
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.
- checksums.yaml +4 -4
- data/lib/solargraph/api_map.rb +1 -1
- data/lib/solargraph/complex_type.rb +7 -0
- data/lib/solargraph/language_server/host.rb +16 -19
- data/lib/solargraph/language_server/host/dispatch.rb +4 -3
- data/lib/solargraph/language_server/host/sources.rb +3 -3
- data/lib/solargraph/language_server/message/text_document/completion.rb +2 -3
- data/lib/solargraph/language_server/message/text_document/definition.rb +1 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +1 -2
- data/lib/solargraph/language_server/message/text_document/references.rb +1 -1
- data/lib/solargraph/language_server/message/text_document/rename.rb +1 -1
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +1 -2
- data/lib/solargraph/language_server/uri_helpers.rb +1 -1
- data/lib/solargraph/pin/base.rb +1 -1
- data/lib/solargraph/pin/base_method.rb +1 -6
- data/lib/solargraph/pin/base_variable.rb +2 -2
- data/lib/solargraph/pin/block_parameter.rb +2 -2
- data/lib/solargraph/pin/method.rb +3 -3
- data/lib/solargraph/pin/method_parameter.rb +1 -1
- data/lib/solargraph/pin/namespace.rb +2 -2
- data/lib/solargraph/pin/yard_pin/method.rb +1 -1
- data/lib/solargraph/source.rb +1 -0
- data/lib/solargraph/source/chain/call.rb +2 -6
- data/lib/solargraph/source/chain/literal.rb +1 -1
- data/lib/solargraph/source_map/clip.rb +7 -5
- data/lib/solargraph/source_map/mapper.rb +19 -11
- data/lib/solargraph/source_map/node_processor/def_node.rb +1 -1
- data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +1 -1
- data/lib/solargraph/version.rb +1 -1
- data/yardoc/2.2.2.tar.gz +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a18d1986bcaf5c2f39fb6f7adf604a2275382a87eaa7d292d0a48ee4d65bf40e
|
4
|
+
data.tar.gz: 8bd096eb42b1b573b1433b6fa1bad9adbbda95c24cde405422a489f69ead949c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b0c25b798781b5ff29c16d1728e1b03108a8bbcc55cc20d407fd6b1e4f16fe0e45d1f730b1de6c6ba1cc661091cd0f4e8e993186cca721e68d9e341ec2f12ed
|
7
|
+
data.tar.gz: e711f3d5b03207e7a6bff18fa68768ae3d9d8efc6a54e2225d25b4f37033bcbba916c60ce3a379e4d2e1fe20d1c03cad294fc3cfe3411f6568c13bbe4681c52e
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -133,6 +133,13 @@ module Solargraph
|
|
133
133
|
@cache[strings] = result unless partial
|
134
134
|
result
|
135
135
|
end
|
136
|
+
|
137
|
+
def try_parse *strings
|
138
|
+
parse *strings
|
139
|
+
rescue ComplexTypeError => e
|
140
|
+
Solargraph.logger.info "Error parsing complex type: #{e.message}"
|
141
|
+
ComplexType::UNDEFINED
|
142
|
+
end
|
136
143
|
end
|
137
144
|
|
138
145
|
VOID = ComplexType.parse('void')
|
@@ -459,41 +459,41 @@ module Solargraph
|
|
459
459
|
library.read_text(filename)
|
460
460
|
end
|
461
461
|
|
462
|
-
# @param
|
462
|
+
# @param uri [String]
|
463
463
|
# @param line [Integer]
|
464
464
|
# @param column [Integer]
|
465
465
|
# @return [Solargraph::ApiMap::Completion]
|
466
|
-
def completions_at
|
467
|
-
library = library_for(
|
468
|
-
library.completions_at
|
466
|
+
def completions_at uri, line, column
|
467
|
+
library = library_for(uri)
|
468
|
+
library.completions_at uri_to_file(uri), line, column
|
469
469
|
end
|
470
470
|
|
471
|
-
# @param
|
471
|
+
# @param uri [String]
|
472
472
|
# @param line [Integer]
|
473
473
|
# @param column [Integer]
|
474
474
|
# @return [Array<Solargraph::Pin::Base>]
|
475
|
-
def definitions_at
|
476
|
-
library = library_for(
|
477
|
-
library.definitions_at(
|
475
|
+
def definitions_at uri, line, column
|
476
|
+
library = library_for(uri)
|
477
|
+
library.definitions_at(uri_to_file(uri), line, column)
|
478
478
|
end
|
479
479
|
|
480
|
-
# @param
|
480
|
+
# @param uri [String]
|
481
481
|
# @param line [Integer]
|
482
482
|
# @param column [Integer]
|
483
483
|
# @return [Array<Solargraph::Pin::Base>]
|
484
|
-
def signatures_at
|
485
|
-
library = library_for(
|
486
|
-
library.signatures_at(
|
484
|
+
def signatures_at uri, line, column
|
485
|
+
library = library_for(uri)
|
486
|
+
library.signatures_at(uri_to_file(uri), line, column)
|
487
487
|
end
|
488
488
|
|
489
|
-
# @param
|
489
|
+
# @param uri [String]
|
490
490
|
# @param line [Integer]
|
491
491
|
# @param column [Integer]
|
492
492
|
# @param strip [Boolean] Strip special characters from variable names
|
493
493
|
# @return [Array<Solargraph::Range>]
|
494
|
-
def references_from
|
495
|
-
library = library_for(
|
496
|
-
library.references_from(
|
494
|
+
def references_from uri, line, column, strip: true
|
495
|
+
library = library_for(uri)
|
496
|
+
library.references_from(uri_to_file(uri), line, column, strip: strip)
|
497
497
|
end
|
498
498
|
|
499
499
|
# @param query [String]
|
@@ -586,9 +586,6 @@ module Solargraph
|
|
586
586
|
# @param uri [String]
|
587
587
|
# @return [Array<Range>]
|
588
588
|
def folding_ranges uri
|
589
|
-
# library = library_for(uri)
|
590
|
-
# file = uri_to_file(uri)
|
591
|
-
# library.folding_ranges(file)
|
592
589
|
sources.find(uri).folding_ranges
|
593
590
|
end
|
594
591
|
|
@@ -21,9 +21,10 @@ module Solargraph
|
|
21
21
|
# The Sources observer callback that merges a source into the host's
|
22
22
|
# libraries when it gets updated.
|
23
23
|
#
|
24
|
-
# @param
|
24
|
+
# @param uri [String]
|
25
25
|
# @return [void]
|
26
|
-
def update_libraries
|
26
|
+
def update_libraries uri
|
27
|
+
src = sources.find(uri)
|
27
28
|
# @todo This module should not call cataloger and diagnoser
|
28
29
|
libraries.each do |lib|
|
29
30
|
if lib.contain?(src.filename) || lib.open?(src.filename)
|
@@ -31,7 +32,7 @@ module Solargraph
|
|
31
32
|
cataloger.ping(lib)
|
32
33
|
end
|
33
34
|
end
|
34
|
-
diagnoser.schedule
|
35
|
+
diagnoser.schedule uri if src.synchronized?
|
35
36
|
end
|
36
37
|
|
37
38
|
# Find the best libary match for the given URI.
|
@@ -38,7 +38,7 @@ module Solargraph
|
|
38
38
|
nxt = open_source_hash[uri].finish_synchronize
|
39
39
|
open_source_hash[uri] = nxt
|
40
40
|
changed
|
41
|
-
notify_observers
|
41
|
+
notify_observers uri
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
@@ -70,7 +70,7 @@ module Solargraph
|
|
70
70
|
src = find(uri)
|
71
71
|
mutex.synchronize { open_source_hash[uri] = src.synchronize(updater) }
|
72
72
|
changed
|
73
|
-
notify_observers
|
73
|
+
notify_observers uri
|
74
74
|
end
|
75
75
|
|
76
76
|
# @param uri [String]
|
@@ -81,7 +81,7 @@ module Solargraph
|
|
81
81
|
mutex.synchronize { open_source_hash[uri] = src.start_synchronize(updater) }
|
82
82
|
mutex.synchronize { queue.push uri }
|
83
83
|
changed
|
84
|
-
notify_observers
|
84
|
+
notify_observers uri
|
85
85
|
end
|
86
86
|
|
87
87
|
# Find the source with the given URI.
|
@@ -4,11 +4,10 @@ module Solargraph
|
|
4
4
|
module TextDocument
|
5
5
|
class Completion < Base
|
6
6
|
def process
|
7
|
-
filename = uri_to_file(params['textDocument']['uri'])
|
8
7
|
line = params['position']['line']
|
9
8
|
col = params['position']['character']
|
10
9
|
begin
|
11
|
-
completion = host.completions_at(
|
10
|
+
completion = host.completions_at(params['textDocument']['uri'], line, col)
|
12
11
|
if host.cancel?(id)
|
13
12
|
return set_result(empty_result) if host.cancel?(id)
|
14
13
|
end
|
@@ -32,7 +31,7 @@ module Solargraph
|
|
32
31
|
items: items
|
33
32
|
)
|
34
33
|
rescue InvalidOffsetError => e
|
35
|
-
Logging.logger.info "Completion ignored invalid offset: #{
|
34
|
+
Logging.logger.info "Completion ignored invalid offset: #{params['textDocument']['uri']}, line #{line}, character #{col}"
|
36
35
|
set_result empty_result
|
37
36
|
end
|
38
37
|
end
|
@@ -3,14 +3,9 @@ require 'uri'
|
|
3
3
|
module Solargraph::LanguageServer::Message::TextDocument
|
4
4
|
class Definition < Base
|
5
5
|
def process
|
6
|
-
# source = host.read(params['textDocument']['uri'])
|
7
|
-
# code_map = Solargraph::CodeMap.from_source(source, host.api_map)
|
8
|
-
# offset = code_map.get_offset(params['position']['line'], params['position']['character'])
|
9
|
-
# suggestions = code_map.define_symbol_at(offset)
|
10
|
-
filename = uri_to_file(params['textDocument']['uri'])
|
11
6
|
line = params['position']['line']
|
12
7
|
col = params['position']['character']
|
13
|
-
suggestions = host.definitions_at(
|
8
|
+
suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
|
14
9
|
locations = suggestions.reject{|pin| pin.location.nil?}.map do |pin|
|
15
10
|
{
|
16
11
|
uri: file_to_uri(pin.location.filename),
|
@@ -4,11 +4,10 @@ require 'htmlentities'
|
|
4
4
|
module Solargraph::LanguageServer::Message::TextDocument
|
5
5
|
class Hover < Base
|
6
6
|
def process
|
7
|
-
filename = uri_to_file(params['textDocument']['uri'])
|
8
7
|
line = params['position']['line']
|
9
8
|
col = params['position']['character']
|
10
9
|
contents = []
|
11
|
-
suggestions = host.definitions_at(
|
10
|
+
suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
|
12
11
|
last_link = nil
|
13
12
|
suggestions.each do |pin|
|
14
13
|
parts = []
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Solargraph::LanguageServer::Message::TextDocument
|
2
2
|
class References < Base
|
3
3
|
def process
|
4
|
-
locs = host.references_from(
|
4
|
+
locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'])
|
5
5
|
result = locs.map do |loc|
|
6
6
|
{
|
7
7
|
uri: file_to_uri(loc.filename),
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Solargraph::LanguageServer::Message::TextDocument
|
2
2
|
class Rename < Base
|
3
3
|
def process
|
4
|
-
locs = host.references_from(
|
4
|
+
locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true)
|
5
5
|
changes = {}
|
6
6
|
locs.each do |loc|
|
7
7
|
uri = file_to_uri(loc.filename)
|
@@ -4,10 +4,9 @@ module Solargraph
|
|
4
4
|
module TextDocument
|
5
5
|
class SignatureHelp < TextDocument::Base
|
6
6
|
def process
|
7
|
-
filename = uri_to_file(params['textDocument']['uri'])
|
8
7
|
line = params['position']['line']
|
9
8
|
col = params['position']['character']
|
10
|
-
suggestions = host.signatures_at(
|
9
|
+
suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
|
11
10
|
info = suggestions.map(&:signature_help)
|
12
11
|
set_result({
|
13
12
|
signatures: info
|
data/lib/solargraph/pin/base.rb
CHANGED
@@ -31,12 +31,7 @@ module Solargraph
|
|
31
31
|
tag = ol.tag(:return) unless ol.nil?
|
32
32
|
end
|
33
33
|
return ComplexType::UNDEFINED if tag.nil? or tag.types.nil? or tag.types.empty?
|
34
|
-
|
35
|
-
ComplexType.parse *tag.types
|
36
|
-
rescue Solargraph::ComplexTypeError => e
|
37
|
-
Solargraph::Logging.logger.warn e.message
|
38
|
-
ComplexType::UNDEFINED
|
39
|
-
end
|
34
|
+
ComplexType.try_parse *tag.types
|
40
35
|
end
|
41
36
|
|
42
37
|
# @param [ApiMap]
|
@@ -63,8 +63,8 @@ module Solargraph
|
|
63
63
|
|
64
64
|
def generate_complex_type
|
65
65
|
tag = docstring.tag(:type)
|
66
|
-
return ComplexType.
|
67
|
-
return ComplexType.
|
66
|
+
return ComplexType.try_parse(*tag.types) unless tag.nil? || tag.types.nil? || tag.types.empty?
|
67
|
+
return ComplexType.try_parse(@literal) unless @literal.nil?
|
68
68
|
ComplexType.new
|
69
69
|
end
|
70
70
|
end
|
@@ -61,7 +61,7 @@ module Solargraph
|
|
61
61
|
if found.nil? and !index.nil?
|
62
62
|
found = params[index] if params[index] && (params[index].name.nil? || params[index].name.empty?)
|
63
63
|
end
|
64
|
-
@return_complex_type = ComplexType.
|
64
|
+
@return_complex_type = ComplexType.try_parse(*found.types) unless found.nil? or found.types.nil?
|
65
65
|
end
|
66
66
|
super
|
67
67
|
@return_complex_type
|
@@ -88,7 +88,7 @@ module Solargraph
|
|
88
88
|
else
|
89
89
|
yps = meth.docstring.tags(:yieldparam)
|
90
90
|
unless yps[index].nil? or yps[index].types.nil? or yps[index].types.empty?
|
91
|
-
return ComplexType.
|
91
|
+
return ComplexType.try_parse(yps[index].types.first).qualify(api_map, meth.context.namespace)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -34,9 +34,9 @@ module Solargraph
|
|
34
34
|
@context ||= begin
|
35
35
|
if scope == :class
|
36
36
|
# @todo Determine whether the namespace is a class or a module
|
37
|
-
ComplexType.
|
37
|
+
ComplexType.try_parse("Class<#{namespace}>")
|
38
38
|
else
|
39
|
-
ComplexType.
|
39
|
+
ComplexType.try_parse(namespace)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -119,7 +119,7 @@ module Solargraph
|
|
119
119
|
result.push type unless type.undefined?
|
120
120
|
end
|
121
121
|
return ComplexType::UNDEFINED if result.empty?
|
122
|
-
ComplexType.
|
122
|
+
ComplexType.try_parse(*result.map(&:tag))
|
123
123
|
end
|
124
124
|
end
|
125
125
|
end
|
@@ -14,7 +14,7 @@ module Solargraph
|
|
14
14
|
if found.nil? and !index.nil?
|
15
15
|
found = params[index] if params[index] && (params[index].name.nil? || params[index].name.empty?)
|
16
16
|
end
|
17
|
-
@return_complex_type = ComplexType.
|
17
|
+
@return_complex_type = ComplexType.try_parse(*found.types) unless found.nil? or found.types.nil?
|
18
18
|
end
|
19
19
|
super
|
20
20
|
@return_complex_type
|
@@ -18,7 +18,7 @@ module Solargraph
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def context
|
21
|
-
@context ||= ComplexType.
|
21
|
+
@context ||= ComplexType.try_parse("#{type.to_s.capitalize}<#{path}>")
|
22
22
|
end
|
23
23
|
|
24
24
|
def scope
|
@@ -39,7 +39,7 @@ module Solargraph
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def return_complex_type
|
42
|
-
@return_complex_type ||= ComplexType.
|
42
|
+
@return_complex_type ||= ComplexType.try_parse( (type == :class ? 'Class' : 'Module') + "<#{path}>" )
|
43
43
|
end
|
44
44
|
|
45
45
|
def domains
|
@@ -10,7 +10,7 @@ module Solargraph
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def return_complex_type
|
13
|
-
@return_complex_type ||= Solargraph::ComplexType.
|
13
|
+
@return_complex_type ||= Solargraph::ComplexType.try_parse(Solargraph::CoreFills::CUSTOM_RETURN_TYPES[path]) if Solargraph::CoreFills::CUSTOM_RETURN_TYPES.has_key?(path)
|
14
14
|
super
|
15
15
|
end
|
16
16
|
|
data/lib/solargraph/source.rb
CHANGED
@@ -32,11 +32,7 @@ module Solargraph
|
|
32
32
|
# @param context [Solargraph::ComplexType]
|
33
33
|
# @return [Pin::Method]
|
34
34
|
def virtual_new_pin new_pin, context
|
35
|
-
|
36
|
-
# @todo Smelly instance variable access.
|
37
|
-
# pin.instance_variable_set(:@return_complex_type, ComplexType.parse(context.namespace))
|
38
|
-
# pin
|
39
|
-
Pin::ProxyType.anonymous(ComplexType.parse(context.namespace))
|
35
|
+
Pin::ProxyType.anonymous(ComplexType.try_parse(context.namespace))
|
40
36
|
end
|
41
37
|
|
42
38
|
def inferred_pins pins, api_map, context, locals
|
@@ -101,7 +97,7 @@ module Solargraph
|
|
101
97
|
docstring = YARD::Docstring.parser.parse(txt).to_docstring
|
102
98
|
tag = docstring.tag(:return)
|
103
99
|
unless tag.nil? || tag.types.nil?
|
104
|
-
return Pin::ProxyType.anonymous(ComplexType.
|
100
|
+
return Pin::ProxyType.anonymous(ComplexType.try_parse(*tag.types))
|
105
101
|
end
|
106
102
|
Pin::ProxyType.new(nil, nil, nil, ComplexType::UNDEFINED)
|
107
103
|
end
|
@@ -30,9 +30,9 @@ module Solargraph
|
|
30
30
|
else
|
31
31
|
full = cursor.chain.links.first.word
|
32
32
|
if full.include?('::') && cursor.chain.links.length == 1
|
33
|
-
type = ComplexType.
|
33
|
+
type = ComplexType.try_parse(full.split('::')[0..-2].join('::'))
|
34
34
|
elsif cursor.chain.links.length > 1
|
35
|
-
type = ComplexType.
|
35
|
+
type = ComplexType.try_parse(full)
|
36
36
|
else
|
37
37
|
type = ComplexType::UNDEFINED
|
38
38
|
end
|
@@ -78,8 +78,10 @@ module Solargraph
|
|
78
78
|
#
|
79
79
|
# @return [Array<Solargraph::Pin::Base>]
|
80
80
|
def locals
|
81
|
+
loc_pos = context_pin.location.range.contain?(cursor.position) ? cursor.position : context_pin.location.range.ending
|
82
|
+
adj_pos = Position.new(loc_pos.line, (loc_pos.column.zero? ? 0 : loc_pos.column - 1))
|
81
83
|
@locals ||= source_map.locals.select { |pin|
|
82
|
-
pin.visible_from?(block,
|
84
|
+
pin.visible_from?(block, adj_pos)
|
83
85
|
}.reverse
|
84
86
|
end
|
85
87
|
|
@@ -117,12 +119,12 @@ module Solargraph
|
|
117
119
|
result = []
|
118
120
|
ys = receiver_pin.docstring.tag(:yieldself)
|
119
121
|
unless ys.nil? || ys.types.empty?
|
120
|
-
ysct = ComplexType.
|
122
|
+
ysct = ComplexType.try_parse(*ys.types).qualify(api_map, receiver_pin.context.namespace)
|
121
123
|
result.concat api_map.get_complex_type_methods(ysct, ysct.namespace, true)
|
122
124
|
end
|
123
125
|
ys = receiver_pin.docstring.tag(:yieldpublic)
|
124
126
|
unless ys.nil? || ys.types.empty?
|
125
|
-
ysct = ComplexType.
|
127
|
+
ysct = ComplexType.try_parse(*ys.types).qualify(api_map, receiver_pin.context.namespace)
|
126
128
|
result.concat api_map.get_complex_type_methods(ysct, '', false)
|
127
129
|
end
|
128
130
|
result
|
@@ -59,27 +59,27 @@ module Solargraph
|
|
59
59
|
@pins.select{|pin| pin.kind == Pin::NAMESPACE and pin.location.range.contain?(position)}.last
|
60
60
|
end
|
61
61
|
|
62
|
-
def process_comment
|
62
|
+
def process_comment source_position, comment_position, comment
|
63
63
|
return unless comment =~ MACRO_REGEXP
|
64
64
|
cmnt = remove_inline_comment_hashes(comment)
|
65
65
|
parse = YARD::Docstring.parser.parse(cmnt)
|
66
|
-
parse.directives.each { |d| process_directive(
|
66
|
+
parse.directives.each { |d| process_directive(source_position, comment_position, d) }
|
67
67
|
end
|
68
68
|
|
69
69
|
# @param position [Position]
|
70
70
|
# @param directive [YARD::Tags::Directive]
|
71
|
-
def process_directive
|
71
|
+
def process_directive source_position, comment_position, directive
|
72
72
|
docstring = YARD::Docstring.parser.parse(directive.tag.text).to_docstring
|
73
|
-
location = Location.new(@filename, Range.new(
|
73
|
+
location = Location.new(@filename, Range.new(comment_position, comment_position))
|
74
74
|
case directive.tag.tag_name
|
75
75
|
when 'method'
|
76
|
-
namespace = namespace_at(
|
76
|
+
namespace = namespace_at(source_position)
|
77
77
|
gen_src = Solargraph::SourceMap.load_string("def #{directive.tag.name};end")
|
78
78
|
gen_pin = gen_src.pins.select{ |p| p.kind == Pin::METHOD }.first
|
79
79
|
return if gen_pin.nil?
|
80
80
|
@pins.push Solargraph::Pin::Method.new(location, namespace.path, gen_pin.name, docstring.all, :instance, :public, gen_pin.parameters, nil)
|
81
81
|
when 'attribute'
|
82
|
-
namespace = namespace_at(
|
82
|
+
namespace = namespace_at(source_position)
|
83
83
|
t = (directive.tag.types.nil? || directive.tag.types.empty?) ? nil : directive.tag.types.flatten.join('')
|
84
84
|
if t.nil? || t.include?('r')
|
85
85
|
# location, namespace, name, docstring, access
|
@@ -90,16 +90,16 @@ module Solargraph
|
|
90
90
|
end
|
91
91
|
when 'parse'
|
92
92
|
# @todo Parse and map directive.tag.text
|
93
|
-
ns = namespace_at(
|
93
|
+
ns = namespace_at(comment_position)
|
94
94
|
region = Region.new(source: @source, namespace: ns.path)
|
95
95
|
begin
|
96
|
-
node = Solargraph::Source.parse(directive.tag.text, @filename,
|
96
|
+
node = Solargraph::Source.parse(directive.tag.text, @filename, comment_position.line)
|
97
97
|
NodeProcessor.process(node, region, @pins)
|
98
98
|
rescue Parser::SyntaxError => e
|
99
99
|
# @todo Handle parser errors in !parse directives
|
100
100
|
end
|
101
101
|
when 'domain'
|
102
|
-
namespace = namespace_at(
|
102
|
+
namespace = namespace_at(source_position)
|
103
103
|
namespace.domains.concat directive.tag.types unless directive.tag.types.nil?
|
104
104
|
end
|
105
105
|
end
|
@@ -126,11 +126,19 @@ module Solargraph
|
|
126
126
|
# @return [void]
|
127
127
|
def process_comment_directives
|
128
128
|
return unless @code =~ MACRO_REGEXP
|
129
|
+
used = []
|
129
130
|
@source.associated_comments.each do |line, comments|
|
130
|
-
|
131
|
+
used.concat comments
|
132
|
+
src_pos = Position.new(line, @code.lines[line].chomp.length)
|
133
|
+
com_pos = Position.new(comments.first.loc.line, comments.first.loc.column)
|
131
134
|
txt = comments.map(&:text).join("\n")
|
132
|
-
process_comment(
|
135
|
+
process_comment(src_pos, com_pos, txt)
|
133
136
|
end
|
137
|
+
left = @comments - used
|
138
|
+
return if left.empty?
|
139
|
+
txt = left.map(&:text).join("\n")
|
140
|
+
com_pos = Position.new(left.first.loc.line, left.first.loc.column)
|
141
|
+
process_comment(com_pos, com_pos, txt)
|
134
142
|
end
|
135
143
|
end
|
136
144
|
end
|
@@ -7,7 +7,7 @@ module Solargraph
|
|
7
7
|
if methpin.name == 'initialize' and methpin.scope == :instance
|
8
8
|
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, 'new', methpin.comments, :class, :public, methpin.parameters, nil)
|
9
9
|
# @todo Smelly instance variable access.
|
10
|
-
pins.last.instance_variable_set(:@return_complex_type, ComplexType.
|
10
|
+
pins.last.instance_variable_set(:@return_complex_type, ComplexType.try_parse(methpin.namespace))
|
11
11
|
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, methpin.scope, :private, methpin.parameters, methpin.node)
|
12
12
|
elsif region.visibility == :module_function
|
13
13
|
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :class, :public, methpin.parameters, methpin.node)
|
@@ -7,7 +7,7 @@ module Solargraph
|
|
7
7
|
named_path = named_path_pin(here)
|
8
8
|
pins.push Solargraph::Pin::InstanceVariable.new(get_node_location(node), region.namespace,node.children[0].to_s, comments_for(node), node.children[1], infer_literal_node_type(node.children[1]), named_path.context)
|
9
9
|
if region.visibility == :module_function and named_path.kind == Pin::METHOD
|
10
|
-
other = ComplexType.
|
10
|
+
other = ComplexType.try_parse("Module<#{named_path.context.namespace}>")
|
11
11
|
pins.push Solargraph::Pin::InstanceVariable.new(get_node_location(node), region.namespace,node.children[0].to_s, comments_for(node), node.children[1], infer_literal_node_type(node.children[1]), other)
|
12
12
|
end
|
13
13
|
process_children
|
data/lib/solargraph/version.rb
CHANGED
data/yardoc/2.2.2.tar.gz
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.31.
|
4
|
+
version: 0.31.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|