solargraph 0.32.1 → 0.32.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.
- checksums.yaml +4 -4
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +25 -0
- data/EXAMPLES.md +76 -0
- data/Gemfile +3 -0
- data/LANGUAGE_SERVER.md +51 -0
- data/LICENSE +21 -0
- data/OVERVIEW.md +37 -0
- data/README.md +106 -0
- data/Rakefile +14 -0
- data/SERVER.md +95 -0
- data/bin/solargraph +0 -0
- data/bin/solargraph-runtime +5 -5
- data/lib/solargraph.rb +54 -54
- data/lib/solargraph/api_map.rb +659 -659
- data/lib/solargraph/api_map/cache.rb +49 -49
- data/lib/solargraph/api_map/source_to_yard.rb +67 -67
- data/lib/solargraph/api_map/store.rb +201 -201
- data/lib/solargraph/bundle.rb +24 -24
- data/lib/solargraph/complex_type.rb +150 -150
- data/lib/solargraph/complex_type/type_methods.rb +124 -124
- data/lib/solargraph/complex_type/unique_type.rb +44 -44
- data/lib/solargraph/core_fills.rb +37 -37
- data/lib/solargraph/diagnostics.rb +52 -52
- data/lib/solargraph/diagnostics/base.rb +20 -20
- data/lib/solargraph/diagnostics/require_not_found.rb +28 -28
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +46 -46
- data/lib/solargraph/diagnostics/type_not_defined.rb +108 -108
- data/lib/solargraph/diagnostics/update_errors.rb +38 -38
- data/lib/solargraph/language_server/completion_item_kinds.rb +33 -33
- data/lib/solargraph/language_server/error_codes.rb +18 -18
- data/lib/solargraph/language_server/host.rb +684 -681
- data/lib/solargraph/language_server/host/cataloger.rb +54 -79
- data/lib/solargraph/language_server/host/diagnoser.rb +80 -80
- data/lib/solargraph/language_server/host/dispatch.rb +112 -113
- data/lib/solargraph/language_server/host/sources.rb +138 -138
- data/lib/solargraph/language_server/message.rb +90 -90
- data/lib/solargraph/language_server/message/base.rb +83 -83
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +40 -40
- data/lib/solargraph/language_server/message/exit_notification.rb +11 -11
- data/lib/solargraph/language_server/message/extended.rb +19 -19
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +86 -86
- data/lib/solargraph/language_server/message/extended/document.rb +18 -18
- data/lib/solargraph/language_server/message/extended/document_gems.rb +30 -30
- data/lib/solargraph/language_server/message/extended/environment.rb +20 -20
- data/lib/solargraph/language_server/message/extended/search.rb +18 -18
- data/lib/solargraph/language_server/message/initialize.rb +141 -141
- data/lib/solargraph/language_server/message/initialized.rb +23 -23
- data/lib/solargraph/language_server/message/shutdown.rb +11 -11
- data/lib/solargraph/language_server/message/text_document.rb +25 -25
- data/lib/solargraph/language_server/message/text_document/completion.rb +51 -51
- data/lib/solargraph/language_server/message/text_document/definition.rb +18 -18
- data/lib/solargraph/language_server/message/text_document/did_change.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +21 -21
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +24 -24
- data/lib/solargraph/language_server/message/text_document/formatting.rb +50 -50
- data/lib/solargraph/language_server/message/text_document/hover.rb +31 -31
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +32 -32
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +9 -9
- data/lib/solargraph/language_server/message/text_document/references.rb +14 -14
- data/lib/solargraph/language_server/message/text_document/rename.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +19 -19
- data/lib/solargraph/language_server/message/workspace.rb +12 -12
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -29
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +29 -27
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +21 -21
- data/lib/solargraph/language_server/request.rb +22 -22
- data/lib/solargraph/language_server/symbol_kinds.rb +34 -34
- data/lib/solargraph/language_server/transport.rb +11 -11
- data/lib/solargraph/language_server/transport/adapter.rb +60 -60
- data/lib/solargraph/language_server/transport/data_reader.rb +66 -66
- data/lib/solargraph/language_server/uri_helpers.rb +25 -25
- data/lib/solargraph/library.rb +421 -419
- data/lib/solargraph/live_map.rb +126 -126
- data/lib/solargraph/live_map/cache.rb +38 -38
- data/lib/solargraph/location.rb +31 -31
- data/lib/solargraph/logging.rb +25 -25
- data/lib/solargraph/page.rb +68 -68
- data/lib/solargraph/pin.rb +50 -50
- data/lib/solargraph/pin/attribute.rb +41 -41
- data/lib/solargraph/pin/base.rb +280 -280
- data/lib/solargraph/pin/base_method.rb +76 -76
- data/lib/solargraph/pin/base_variable.rb +72 -72
- data/lib/solargraph/pin/block.rb +32 -32
- data/lib/solargraph/pin/block_parameter.rb +103 -103
- data/lib/solargraph/pin/class_variable.rb +9 -9
- data/lib/solargraph/pin/constant.rb +30 -30
- data/lib/solargraph/pin/conversions.rb +79 -79
- data/lib/solargraph/pin/documenting.rb +41 -41
- data/lib/solargraph/pin/duck_method.rb +14 -14
- data/lib/solargraph/pin/global_variable.rb +9 -9
- data/lib/solargraph/pin/instance_variable.rb +9 -9
- data/lib/solargraph/pin/keyword.rb +17 -17
- data/lib/solargraph/pin/local_variable.rb +23 -23
- data/lib/solargraph/pin/localized.rb +22 -22
- data/lib/solargraph/pin/method.rb +126 -126
- data/lib/solargraph/pin/method_alias.rb +30 -30
- data/lib/solargraph/pin/method_parameter.rb +40 -40
- data/lib/solargraph/pin/namespace.rb +54 -54
- data/lib/solargraph/pin/plugin/method.rb +25 -25
- data/lib/solargraph/pin/proxy_type.rb +35 -35
- data/lib/solargraph/pin/reference.rb +22 -22
- data/lib/solargraph/pin/reference/extend.rb +11 -11
- data/lib/solargraph/pin/reference/include.rb +11 -11
- data/lib/solargraph/pin/reference/require.rb +15 -15
- data/lib/solargraph/pin/reference/superclass.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +44 -44
- data/lib/solargraph/pin/yard_pin.rb +10 -10
- data/lib/solargraph/pin/yard_pin/constant.rb +14 -14
- data/lib/solargraph/pin/yard_pin/method.rb +35 -35
- data/lib/solargraph/pin/yard_pin/namespace.rb +19 -19
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +14 -14
- data/lib/solargraph/plugin.rb +8 -8
- data/lib/solargraph/plugin/base.rb +41 -41
- data/lib/solargraph/plugin/canceler.rb +11 -11
- data/lib/solargraph/plugin/process.rb +172 -172
- data/lib/solargraph/plugin/runtime.rb +134 -134
- data/lib/solargraph/position.rb +110 -110
- data/lib/solargraph/range.rb +83 -83
- data/lib/solargraph/server_methods.rb +14 -14
- data/lib/solargraph/shell.rb +102 -102
- data/lib/solargraph/source.rb +521 -521
- data/lib/solargraph/source/chain.rb +120 -120
- data/lib/solargraph/source/chain/call.rb +107 -107
- data/lib/solargraph/source/chain/class_variable.rb +11 -11
- data/lib/solargraph/source/chain/constant.rb +30 -30
- data/lib/solargraph/source/chain/global_variable.rb +11 -11
- data/lib/solargraph/source/chain/head.rb +33 -33
- data/lib/solargraph/source/chain/instance_variable.rb +11 -11
- data/lib/solargraph/source/chain/link.rb +33 -33
- data/lib/solargraph/source/chain/literal.rb +21 -21
- data/lib/solargraph/source/chain/variable.rb +11 -11
- data/lib/solargraph/source/change.rb +77 -77
- data/lib/solargraph/source/cursor.rb +157 -157
- data/lib/solargraph/source/node_chainer.rb +96 -96
- data/lib/solargraph/source/node_methods.rb +225 -225
- data/lib/solargraph/source/source_chainer.rb +183 -183
- data/lib/solargraph/source_map.rb +169 -169
- data/lib/solargraph/source_map/clip.rb +145 -145
- data/lib/solargraph/source_map/completion.rb +21 -21
- data/lib/solargraph/source_map/mapper.rb +149 -149
- data/lib/solargraph/source_map/node_processor.rb +78 -78
- data/lib/solargraph/source_map/node_processor/alias_node.rb +19 -19
- data/lib/solargraph/source_map/node_processor/args_node.rb +28 -28
- data/lib/solargraph/source_map/node_processor/base.rb +68 -68
- data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/block_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/def_node.rb +54 -54
- data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -21
- data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -18
- data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -16
- data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -26
- data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/send_node.rb +162 -162
- data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -11
- data/lib/solargraph/source_map/region.rb +58 -58
- data/lib/solargraph/version.rb +3 -3
- data/lib/solargraph/views/environment.erb +53 -53
- data/lib/solargraph/workspace.rb +183 -183
- data/lib/solargraph/workspace/config.rb +170 -170
- data/lib/solargraph/yard_map.rb +298 -298
- data/lib/solargraph/yard_map/cache.rb +17 -17
- data/lib/solargraph/yard_map/core_docs.rb +163 -163
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/yard-coregen.rb +16 -16
- data/lib/yard-solargraph.rb +18 -18
- data/solargraph.gemspec +37 -0
- data/travis-bundler.rb +10 -0
- metadata +19 -6
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class AliasNode < Base
|
|
5
|
-
def process
|
|
6
|
-
pin = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.name == node.children[1].children[0].to_s && p.namespace == region.namespace && p.scope == region.scope}.first
|
|
7
|
-
if pin.nil?
|
|
8
|
-
pins.push Solargraph::Pin::MethodAlias.new(get_node_location(node), region.namespace, node.children[0].children[0].to_s, region.scope, node.children[1].children[0].to_s)
|
|
9
|
-
elsif pin.is_a?(Solargraph::Pin::Method)
|
|
10
|
-
pins.push Solargraph::Pin::Method.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.scope, pin.visibility, pin.parameters, pin.node)
|
|
11
|
-
elsif pin.is_a?(Solargraph::Pin::Attribute)
|
|
12
|
-
pins.push Solargraph::Pin::Attribute.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.access, pin.scope, pin.visibility)
|
|
13
|
-
end
|
|
14
|
-
process_children
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class AliasNode < Base
|
|
5
|
+
def process
|
|
6
|
+
pin = pins.select{|p| [Solargraph::Pin::Method, Solargraph::Pin::Attribute].include?(p.class) && p.name == node.children[1].children[0].to_s && p.namespace == region.namespace && p.scope == region.scope}.first
|
|
7
|
+
if pin.nil?
|
|
8
|
+
pins.push Solargraph::Pin::MethodAlias.new(get_node_location(node), region.namespace, node.children[0].children[0].to_s, region.scope, node.children[1].children[0].to_s)
|
|
9
|
+
elsif pin.is_a?(Solargraph::Pin::Method)
|
|
10
|
+
pins.push Solargraph::Pin::Method.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.scope, pin.visibility, pin.parameters, pin.node)
|
|
11
|
+
elsif pin.is_a?(Solargraph::Pin::Attribute)
|
|
12
|
+
pins.push Solargraph::Pin::Attribute.new(get_node_location(node), pin.namespace, node.children[0].children[0].to_s, comments_for(node) || pin.comments, pin.access, pin.scope, pin.visibility)
|
|
13
|
+
end
|
|
14
|
+
process_children
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class ArgsNode < Base
|
|
5
|
-
def process
|
|
6
|
-
return if node.children.empty?
|
|
7
|
-
here = get_node_start_position(node)
|
|
8
|
-
context = named_path_pin(here)
|
|
9
|
-
block = block_pin(here)
|
|
10
|
-
if block.kind == Solargraph::Pin::BLOCK
|
|
11
|
-
pi = 0
|
|
12
|
-
node.children.each do |u|
|
|
13
|
-
pins.push Solargraph::Pin::BlockParameter.new(get_node_location(u), region.namespace, "#{u.children[0]}", comments_for(node), block)
|
|
14
|
-
block.parameters.push pins.last
|
|
15
|
-
pi += 1
|
|
16
|
-
end
|
|
17
|
-
else
|
|
18
|
-
node.children.each do |u|
|
|
19
|
-
presence = Range.new(here, block.location.range.ending)
|
|
20
|
-
pins.push Solargraph::Pin::MethodParameter.new(get_node_location(u), region.namespace, u.children[0].to_s, comments_for(node), u.children[1], infer_literal_node_type(u.children[1]), context, block, presence)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
process_children
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class ArgsNode < Base
|
|
5
|
+
def process
|
|
6
|
+
return if node.children.empty?
|
|
7
|
+
here = get_node_start_position(node)
|
|
8
|
+
context = named_path_pin(here)
|
|
9
|
+
block = block_pin(here)
|
|
10
|
+
if block.kind == Solargraph::Pin::BLOCK
|
|
11
|
+
pi = 0
|
|
12
|
+
node.children.each do |u|
|
|
13
|
+
pins.push Solargraph::Pin::BlockParameter.new(get_node_location(u), region.namespace, "#{u.children[0]}", comments_for(node), block)
|
|
14
|
+
block.parameters.push pins.last
|
|
15
|
+
pi += 1
|
|
16
|
+
end
|
|
17
|
+
else
|
|
18
|
+
node.children.each do |u|
|
|
19
|
+
presence = Range.new(here, block.location.range.ending)
|
|
20
|
+
pins.push Solargraph::Pin::MethodParameter.new(get_node_location(u), region.namespace, u.children[0].to_s, comments_for(node), u.children[1], infer_literal_node_type(u.children[1]), context, block, presence)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
process_children
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class Base
|
|
5
|
-
include Solargraph::Source::NodeMethods
|
|
6
|
-
|
|
7
|
-
# @return [Parser::AST::Node]
|
|
8
|
-
attr_reader :node
|
|
9
|
-
|
|
10
|
-
# @return [Region]
|
|
11
|
-
attr_reader :region
|
|
12
|
-
|
|
13
|
-
# @return [Array<Pin::Base>]
|
|
14
|
-
attr_reader :pins
|
|
15
|
-
|
|
16
|
-
# @param node [Parser::AST::Node]
|
|
17
|
-
# @param region [Region]
|
|
18
|
-
# @param pins [Array<Pin::Base>]
|
|
19
|
-
def initialize node, region, pins
|
|
20
|
-
@node = node
|
|
21
|
-
@region = region
|
|
22
|
-
@pins = pins
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
protected
|
|
26
|
-
|
|
27
|
-
# Subclasses should override this method to generate new pins.
|
|
28
|
-
#
|
|
29
|
-
# @return [void]
|
|
30
|
-
def process
|
|
31
|
-
raise NoMethodError, "#{self.class} does not implement the `process` method"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
private
|
|
35
|
-
|
|
36
|
-
# @param subregion [Region]
|
|
37
|
-
# @return [void]
|
|
38
|
-
def process_children subregion = region
|
|
39
|
-
node.children.each do |child|
|
|
40
|
-
next unless child.is_a?(Parser::AST::Node)
|
|
41
|
-
NodeProcessor.process(child, subregion, pins)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# @param node [Parser::AST::Node]
|
|
46
|
-
# @return [Solargraph::Location]
|
|
47
|
-
def get_node_location(node)
|
|
48
|
-
st = Position.new(node.loc.line, node.loc.column)
|
|
49
|
-
en = Position.new(node.loc.last_line, node.loc.last_column)
|
|
50
|
-
range = Range.new(st, en)
|
|
51
|
-
Location.new(region.filename, range)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def comments_for(node)
|
|
55
|
-
region.source.comments_for(node)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def named_path_pin position
|
|
59
|
-
pins.select{|pin| [Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def block_pin position
|
|
63
|
-
pins.select{|pin| [Pin::BLOCK, Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class Base
|
|
5
|
+
include Solargraph::Source::NodeMethods
|
|
6
|
+
|
|
7
|
+
# @return [Parser::AST::Node]
|
|
8
|
+
attr_reader :node
|
|
9
|
+
|
|
10
|
+
# @return [Region]
|
|
11
|
+
attr_reader :region
|
|
12
|
+
|
|
13
|
+
# @return [Array<Pin::Base>]
|
|
14
|
+
attr_reader :pins
|
|
15
|
+
|
|
16
|
+
# @param node [Parser::AST::Node]
|
|
17
|
+
# @param region [Region]
|
|
18
|
+
# @param pins [Array<Pin::Base>]
|
|
19
|
+
def initialize node, region, pins
|
|
20
|
+
@node = node
|
|
21
|
+
@region = region
|
|
22
|
+
@pins = pins
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
# Subclasses should override this method to generate new pins.
|
|
28
|
+
#
|
|
29
|
+
# @return [void]
|
|
30
|
+
def process
|
|
31
|
+
raise NoMethodError, "#{self.class} does not implement the `process` method"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
# @param subregion [Region]
|
|
37
|
+
# @return [void]
|
|
38
|
+
def process_children subregion = region
|
|
39
|
+
node.children.each do |child|
|
|
40
|
+
next unless child.is_a?(Parser::AST::Node)
|
|
41
|
+
NodeProcessor.process(child, subregion, pins)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @param node [Parser::AST::Node]
|
|
46
|
+
# @return [Solargraph::Location]
|
|
47
|
+
def get_node_location(node)
|
|
48
|
+
st = Position.new(node.loc.line, node.loc.column)
|
|
49
|
+
en = Position.new(node.loc.last_line, node.loc.last_column)
|
|
50
|
+
range = Range.new(st, en)
|
|
51
|
+
Location.new(region.filename, range)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def comments_for(node)
|
|
55
|
+
region.source.comments_for(node)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def named_path_pin position
|
|
59
|
+
pins.select{|pin| [Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def block_pin position
|
|
63
|
+
pins.select{|pin| [Pin::BLOCK, Pin::NAMESPACE, Pin::METHOD].include?(pin.kind) and pin.location.range.contain?(position)}.last
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class BeginNode < Base
|
|
5
|
-
def process
|
|
6
|
-
process_children
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class BeginNode < Base
|
|
5
|
+
def process
|
|
6
|
+
process_children
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class BlockNode < Base
|
|
5
|
-
def process
|
|
6
|
-
here = get_node_start_position(node)
|
|
7
|
-
named_path = named_path_pin(here)
|
|
8
|
-
pins.push Solargraph::Pin::Block.new(get_node_location(node), region.namespace, '', comments_for(node), node.children[0], named_path.context)
|
|
9
|
-
process_children
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class BlockNode < Base
|
|
5
|
+
def process
|
|
6
|
+
here = get_node_start_position(node)
|
|
7
|
+
named_path = named_path_pin(here)
|
|
8
|
+
pins.push Solargraph::Pin::Block.new(get_node_location(node), region.namespace, '', comments_for(node), node.children[0], named_path.context)
|
|
9
|
+
process_children
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class CasgnNode < Base
|
|
5
|
-
def process
|
|
6
|
-
here = get_node_start_position(node)
|
|
7
|
-
block = block_pin(here)
|
|
8
|
-
pins.push Solargraph::Pin::Constant.new(get_node_location(node), region.namespace, node.children[1].to_s, comments_for(node), node.children[2], infer_literal_node_type(node.children[2]), block.context, :public)
|
|
9
|
-
process_children
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class CasgnNode < Base
|
|
5
|
+
def process
|
|
6
|
+
here = get_node_start_position(node)
|
|
7
|
+
block = block_pin(here)
|
|
8
|
+
pins.push Solargraph::Pin::Constant.new(get_node_location(node), region.namespace, node.children[1].to_s, comments_for(node), node.children[2], infer_literal_node_type(node.children[2]), block.context, :public)
|
|
9
|
+
process_children
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class CvasgnNode < Base
|
|
5
|
-
def process
|
|
6
|
-
here = get_node_start_position(node)
|
|
7
|
-
context = named_path_pin(here)
|
|
8
|
-
pins.push Solargraph::Pin::ClassVariable.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]), context.context)
|
|
9
|
-
process_children
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class CvasgnNode < Base
|
|
5
|
+
def process
|
|
6
|
+
here = get_node_start_position(node)
|
|
7
|
+
context = named_path_pin(here)
|
|
8
|
+
pins.push Solargraph::Pin::ClassVariable.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]), context.context)
|
|
9
|
+
process_children
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
class SourceMap
|
|
3
|
-
module NodeProcessor
|
|
4
|
-
class DefNode < Base
|
|
5
|
-
def process
|
|
6
|
-
methpin = Solargraph::Pin::Method.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), region.scope, region.visibility, method_args, node)
|
|
7
|
-
if methpin.name == 'initialize' and methpin.scope == :instance
|
|
8
|
-
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, 'new', methpin.comments, :class, :public, methpin.parameters, nil)
|
|
9
|
-
# @todo Smelly instance variable access.
|
|
10
|
-
pins.last.instance_variable_set(:@return_complex_type, ComplexType.try_parse(methpin.namespace))
|
|
11
|
-
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, methpin.scope, :private, methpin.parameters, methpin.node)
|
|
12
|
-
elsif region.visibility == :module_function
|
|
13
|
-
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :class, :public, methpin.parameters, methpin.node)
|
|
14
|
-
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :instance, :private, methpin.parameters, methpin.node)
|
|
15
|
-
else
|
|
16
|
-
pins.push methpin
|
|
17
|
-
end
|
|
18
|
-
process_children
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
private
|
|
22
|
-
|
|
23
|
-
def method_args
|
|
24
|
-
return [] if node.nil?
|
|
25
|
-
list = nil
|
|
26
|
-
args = []
|
|
27
|
-
node.children.each { |c|
|
|
28
|
-
if c.kind_of?(AST::Node) and c.type == :args
|
|
29
|
-
list = c
|
|
30
|
-
break
|
|
31
|
-
end
|
|
32
|
-
}
|
|
33
|
-
return args if list.nil?
|
|
34
|
-
list.children.each { |c|
|
|
35
|
-
if c.type == :arg
|
|
36
|
-
args.push c.children[0].to_s
|
|
37
|
-
elsif c.type == :restarg
|
|
38
|
-
args.push "*#{c.children[0]}"
|
|
39
|
-
elsif c.type == :optarg
|
|
40
|
-
args.push "#{c.children[0]} = #{region.code_for(c.children[1])}"
|
|
41
|
-
elsif c.type == :kwarg
|
|
42
|
-
args.push "#{c.children[0]}:"
|
|
43
|
-
elsif c.type == :kwoptarg
|
|
44
|
-
args.push "#{c.children[0]}: #{region.code_for(c.children[1])}"
|
|
45
|
-
elsif c.type == :blockarg
|
|
46
|
-
args.push "&#{c.children[0]}"
|
|
47
|
-
end
|
|
48
|
-
}
|
|
49
|
-
args
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
class SourceMap
|
|
3
|
+
module NodeProcessor
|
|
4
|
+
class DefNode < Base
|
|
5
|
+
def process
|
|
6
|
+
methpin = Solargraph::Pin::Method.new(get_node_location(node), region.namespace, node.children[0].to_s, comments_for(node), region.scope, region.visibility, method_args, node)
|
|
7
|
+
if methpin.name == 'initialize' and methpin.scope == :instance
|
|
8
|
+
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, 'new', methpin.comments, :class, :public, methpin.parameters, nil)
|
|
9
|
+
# @todo Smelly instance variable access.
|
|
10
|
+
pins.last.instance_variable_set(:@return_complex_type, ComplexType.try_parse(methpin.namespace))
|
|
11
|
+
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, methpin.scope, :private, methpin.parameters, methpin.node)
|
|
12
|
+
elsif region.visibility == :module_function
|
|
13
|
+
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :class, :public, methpin.parameters, methpin.node)
|
|
14
|
+
pins.push Solargraph::Pin::Method.new(methpin.location, methpin.namespace, methpin.name, methpin.comments, :instance, :private, methpin.parameters, methpin.node)
|
|
15
|
+
else
|
|
16
|
+
pins.push methpin
|
|
17
|
+
end
|
|
18
|
+
process_children
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def method_args
|
|
24
|
+
return [] if node.nil?
|
|
25
|
+
list = nil
|
|
26
|
+
args = []
|
|
27
|
+
node.children.each { |c|
|
|
28
|
+
if c.kind_of?(AST::Node) and c.type == :args
|
|
29
|
+
list = c
|
|
30
|
+
break
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
return args if list.nil?
|
|
34
|
+
list.children.each { |c|
|
|
35
|
+
if c.type == :arg
|
|
36
|
+
args.push c.children[0].to_s
|
|
37
|
+
elsif c.type == :restarg
|
|
38
|
+
args.push "*#{c.children[0]}"
|
|
39
|
+
elsif c.type == :optarg
|
|
40
|
+
args.push "#{c.children[0]} = #{region.code_for(c.children[1])}"
|
|
41
|
+
elsif c.type == :kwarg
|
|
42
|
+
args.push "#{c.children[0]}:"
|
|
43
|
+
elsif c.type == :kwoptarg
|
|
44
|
+
args.push "#{c.children[0]}: #{region.code_for(c.children[1])}"
|
|
45
|
+
elsif c.type == :blockarg
|
|
46
|
+
args.push "&#{c.children[0]}"
|
|
47
|
+
end
|
|
48
|
+
}
|
|
49
|
+
args
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|