solargraph 0.58.2 → 0.59.0.dev.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/.envrc +3 -0
- data/.github/workflows/linting.yml +4 -5
- data/.github/workflows/plugins.yml +41 -34
- data/.github/workflows/rspec.yml +44 -23
- data/.github/workflows/typecheck.yml +2 -2
- data/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +50 -966
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +26 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/cache.rb +3 -3
- data/lib/solargraph/api_map/constants.rb +13 -3
- data/lib/solargraph/api_map/index.rb +23 -18
- data/lib/solargraph/api_map/source_to_yard.rb +22 -9
- data/lib/solargraph/api_map/store.rb +33 -28
- data/lib/solargraph/api_map.rb +150 -82
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +28 -17
- data/lib/solargraph/complex_type/unique_type.rb +218 -57
- data/lib/solargraph/complex_type.rb +170 -57
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +7 -5
- data/lib/solargraph/convention/data_definition.rb +5 -2
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +23 -23
- data/lib/solargraph/convention/rakefile.rb +17 -17
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +2 -1
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +4 -3
- data/lib/solargraph/convention/struct_definition.rb +8 -4
- data/lib/solargraph/convention.rb +78 -78
- data/lib/solargraph/converters/dd.rb +19 -17
- data/lib/solargraph/converters/dl.rb +17 -15
- data/lib/solargraph/converters/dt.rb +17 -15
- data/lib/solargraph/converters/misc.rb +3 -1
- data/lib/solargraph/diagnostics/require_not_found.rb +1 -0
- data/lib/solargraph/diagnostics/rubocop.rb +11 -10
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
- data/lib/solargraph/diagnostics/type_check.rb +11 -10
- data/lib/solargraph/diagnostics/update_errors.rb +37 -41
- data/lib/solargraph/doc_map.rb +133 -373
- data/lib/solargraph/equality.rb +4 -4
- data/lib/solargraph/gem_pins.rb +21 -20
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +1 -1
- data/lib/solargraph/language_server/host/dispatch.rb +3 -3
- data/lib/solargraph/language_server/host/message_worker.rb +4 -3
- data/lib/solargraph/language_server/host/sources.rb +2 -1
- data/lib/solargraph/language_server/host.rb +30 -22
- data/lib/solargraph/language_server/message/base.rb +97 -97
- data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +12 -18
- data/lib/solargraph/language_server/message/extended/document.rb +1 -0
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/initialize.rb +197 -191
- data/lib/solargraph/language_server/message/text_document/completion.rb +10 -8
- data/lib/solargraph/language_server/message/text_document/definition.rb +41 -32
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -19
- data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +5 -5
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +3 -2
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -17
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
- data/lib/solargraph/language_server/message.rb +94 -94
- data/lib/solargraph/language_server/request.rb +29 -27
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/library.rb +85 -44
- data/lib/solargraph/location.rb +17 -14
- data/lib/solargraph/logging.rb +24 -4
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +19 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +326 -108
- data/lib/solargraph/parser/node_processor/base.rb +34 -4
- data/lib/solargraph/parser/node_processor.rb +8 -7
- data/lib/solargraph/parser/parser_gem/class_methods.rb +32 -14
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +50 -25
- data/lib/solargraph/parser/parser_gem/node_methods.rb +91 -70
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +4 -4
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +13 -11
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +9 -0
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +12 -12
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +36 -6
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +5 -3
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +3 -3
- data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -5
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +124 -113
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +6 -2
- data/lib/solargraph/parser/parser_gem/node_processors.rb +4 -0
- data/lib/solargraph/parser/parser_gem.rb +14 -12
- data/lib/solargraph/parser/region.rb +9 -3
- data/lib/solargraph/parser/snippet.rb +3 -1
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +126 -80
- data/lib/solargraph/pin/base_variable.rb +273 -24
- data/lib/solargraph/pin/block.rb +29 -6
- data/lib/solargraph/pin/breakable.rb +7 -1
- data/lib/solargraph/pin/callable.rb +65 -21
- data/lib/solargraph/pin/closure.rb +7 -10
- data/lib/solargraph/pin/common.rb +24 -6
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/constant.rb +43 -45
- data/lib/solargraph/pin/conversions.rb +10 -4
- data/lib/solargraph/pin/delegated_method.rb +19 -8
- data/lib/solargraph/pin/documenting.rb +4 -2
- data/lib/solargraph/pin/instance_variable.rb +5 -1
- data/lib/solargraph/pin/keyword.rb +0 -4
- data/lib/solargraph/pin/local_variable.rb +15 -59
- data/lib/solargraph/pin/method.rb +153 -104
- data/lib/solargraph/pin/method_alias.rb +8 -0
- data/lib/solargraph/pin/namespace.rb +19 -12
- data/lib/solargraph/pin/parameter.rb +100 -36
- data/lib/solargraph/pin/proxy_type.rb +4 -1
- data/lib/solargraph/pin/reference/override.rb +1 -1
- data/lib/solargraph/pin/reference/superclass.rb +2 -0
- data/lib/solargraph/pin/reference.rb +19 -0
- data/lib/solargraph/pin/search.rb +3 -2
- data/lib/solargraph/pin/signature.rb +15 -12
- data/lib/solargraph/pin/symbol.rb +2 -1
- data/lib/solargraph/pin/until.rb +2 -4
- data/lib/solargraph/pin/while.rb +2 -4
- data/lib/solargraph/pin.rb +2 -0
- data/lib/solargraph/pin_cache.rb +490 -73
- data/lib/solargraph/position.rb +14 -10
- data/lib/solargraph/range.rb +16 -15
- data/lib/solargraph/rbs_map/conversions.rb +343 -214
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- data/lib/solargraph/rbs_map/core_map.rb +24 -17
- data/lib/solargraph/rbs_map/stdlib_map.rb +33 -5
- data/lib/solargraph/rbs_map.rb +77 -32
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +128 -73
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +96 -56
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +5 -1
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +8 -5
- data/lib/solargraph/source/chain/if.rb +12 -10
- data/lib/solargraph/source/chain/instance_variable.rb +24 -1
- data/lib/solargraph/source/chain/link.rb +99 -109
- data/lib/solargraph/source/chain/literal.rb +9 -6
- data/lib/solargraph/source/chain/or.rb +10 -4
- data/lib/solargraph/source/chain/q_call.rb +13 -11
- data/lib/solargraph/source/chain/variable.rb +15 -13
- data/lib/solargraph/source/chain/z_super.rb +28 -30
- data/lib/solargraph/source/chain.rb +49 -38
- data/lib/solargraph/source/change.rb +12 -5
- data/lib/solargraph/source/cursor.rb +23 -17
- data/lib/solargraph/source/encoding_fixes.rb +6 -7
- data/lib/solargraph/source/source_chainer.rb +56 -32
- data/lib/solargraph/source/updater.rb +5 -1
- data/lib/solargraph/source.rb +59 -35
- data/lib/solargraph/source_map/clip.rb +48 -29
- data/lib/solargraph/source_map/data.rb +4 -1
- data/lib/solargraph/source_map/mapper.rb +71 -42
- data/lib/solargraph/source_map.rb +21 -9
- data/lib/solargraph/type_checker/problem.rb +3 -1
- data/lib/solargraph/type_checker/rules.rb +81 -8
- data/lib/solargraph/type_checker.rb +195 -120
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +13 -10
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +1 -0
- data/lib/solargraph/workspace.rb +149 -30
- data/lib/solargraph/yard_map/helpers.rb +8 -3
- data/lib/solargraph/yard_map/mapper/to_method.rb +13 -7
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +2 -1
- data/lib/solargraph/yard_map/mapper.rb +13 -8
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +33 -23
- data/lib/solargraph.rb +29 -8
- data/rbs/fills/rubygems/0/dependency.rbs +193 -0
- data/rbs/fills/tuple/tuple.rbs +28 -0
- data/rbs/shims/ast/0/node.rbs +1 -1
- data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
- data/solargraph.gemspec +36 -34
- metadata +38 -33
- data/lib/solargraph/type_checker/checks.rb +0 -124
- data/lib/solargraph/type_checker/param_def.rb +0 -37
- data/lib/solargraph/yard_map/to_method.rb +0 -89
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class TypeChecker
|
|
5
|
-
# Helper methods for performing type checks
|
|
6
|
-
#
|
|
7
|
-
module Checks
|
|
8
|
-
module_function
|
|
9
|
-
|
|
10
|
-
# Compare an expected type with an inferred type. Common usage is to
|
|
11
|
-
# check if the type declared in a method's @return tag matches the type
|
|
12
|
-
# inferred from static analysis of the code.
|
|
13
|
-
#
|
|
14
|
-
# @param api_map [ApiMap]
|
|
15
|
-
# @param expected [ComplexType]
|
|
16
|
-
# @param inferred [ComplexType]
|
|
17
|
-
# @return [Boolean]
|
|
18
|
-
def types_match? api_map, expected, inferred
|
|
19
|
-
return true if expected.to_s == inferred.to_s
|
|
20
|
-
matches = []
|
|
21
|
-
expected.each do |exp|
|
|
22
|
-
found = false
|
|
23
|
-
inferred.each do |inf|
|
|
24
|
-
# if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
|
|
25
|
-
if either_way?(api_map, inf, exp)
|
|
26
|
-
found = true
|
|
27
|
-
matches.push inf
|
|
28
|
-
break
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
return false unless found
|
|
32
|
-
end
|
|
33
|
-
inferred.each do |inf|
|
|
34
|
-
next if matches.include?(inf)
|
|
35
|
-
found = false
|
|
36
|
-
expected.each do |exp|
|
|
37
|
-
# if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
|
|
38
|
-
if either_way?(api_map, inf, exp)
|
|
39
|
-
found = true
|
|
40
|
-
break
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
return false unless found
|
|
44
|
-
end
|
|
45
|
-
true
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# @param api_map [ApiMap]
|
|
49
|
-
# @param expected [ComplexType]
|
|
50
|
-
# @param inferred [ComplexType]
|
|
51
|
-
# @return [Boolean]
|
|
52
|
-
def any_types_match? api_map, expected, inferred
|
|
53
|
-
expected = expected.downcast_to_literal_if_possible
|
|
54
|
-
inferred = inferred.downcast_to_literal_if_possible
|
|
55
|
-
return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
|
|
56
|
-
# walk through the union expected type and see if any members
|
|
57
|
-
# of the union match the inferred type
|
|
58
|
-
expected.each do |exp|
|
|
59
|
-
next if exp.duck_type?
|
|
60
|
-
# @todo: there should be a level of typechecking where all
|
|
61
|
-
# unique types in the inferred must match one of the
|
|
62
|
-
# expected unique types
|
|
63
|
-
inferred.each do |inf|
|
|
64
|
-
# return true if exp == inf || api_map.super_and_sub?(fuzz(inf), fuzz(exp))
|
|
65
|
-
return true if exp == inf || either_way?(api_map, inf, exp)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
false
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# @param api_map [ApiMap]
|
|
72
|
-
# @param inferred [ComplexType]
|
|
73
|
-
# @param expected [ComplexType]
|
|
74
|
-
# @return [Boolean]
|
|
75
|
-
def all_types_match? api_map, inferred, expected
|
|
76
|
-
expected = expected.downcast_to_literal_if_possible
|
|
77
|
-
inferred = inferred.downcast_to_literal_if_possible
|
|
78
|
-
return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
|
|
79
|
-
inferred.each do |inf|
|
|
80
|
-
next if inf.duck_type?
|
|
81
|
-
return false unless expected.any? { |exp| exp == inf || either_way?(api_map, inf, exp) }
|
|
82
|
-
end
|
|
83
|
-
true
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# @param api_map [ApiMap]
|
|
87
|
-
# @param expected [ComplexType]
|
|
88
|
-
# @param inferred [ComplexType]
|
|
89
|
-
# @return [Boolean]
|
|
90
|
-
def duck_types_match? api_map, expected, inferred
|
|
91
|
-
raise ArgumentError, 'Expected type must be duck type' unless expected.duck_type?
|
|
92
|
-
expected.each do |exp|
|
|
93
|
-
next unless exp.duck_type?
|
|
94
|
-
quack = exp.to_s[1..-1]
|
|
95
|
-
return false if api_map.get_method_stack(inferred.namespace, quack, scope: inferred.scope).empty?
|
|
96
|
-
end
|
|
97
|
-
true
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# @param type [ComplexType::UniqueType]
|
|
101
|
-
# @return [String]
|
|
102
|
-
def fuzz type
|
|
103
|
-
if type.parameters?
|
|
104
|
-
type.name
|
|
105
|
-
else
|
|
106
|
-
type.tag
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
# @param api_map [ApiMap]
|
|
111
|
-
# @param cls1 [ComplexType::UniqueType]
|
|
112
|
-
# @param cls2 [ComplexType::UniqueType]
|
|
113
|
-
# @return [Boolean]
|
|
114
|
-
def either_way?(api_map, cls1, cls2)
|
|
115
|
-
# @todo there should be a level of typechecking which uses the
|
|
116
|
-
# full tag with parameters to determine compatibility
|
|
117
|
-
f1 = cls1.name
|
|
118
|
-
f2 = cls2.name
|
|
119
|
-
api_map.type_include?(f1, f2) || api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
|
|
120
|
-
# api_map.type_include?(f1, f2) || api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
end
|
|
@@ -1,37 +0,0 @@
|
|
|
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,89 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class YardMap
|
|
5
|
-
class ToMethod
|
|
6
|
-
module InnerMethods
|
|
7
|
-
module_function
|
|
8
|
-
|
|
9
|
-
# @param code_object [YARD::CodeObjects::Base]
|
|
10
|
-
# @param location [Solargraph::Location]
|
|
11
|
-
# @param comments [String]
|
|
12
|
-
# @return [Array<Solargraph::Pin::Parameter>]
|
|
13
|
-
def get_parameters code_object, location, comments
|
|
14
|
-
return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
15
|
-
# HACK: Skip `nil` and `self` parameters that are sometimes emitted
|
|
16
|
-
# for methods defined in C
|
|
17
|
-
# See https://github.com/castwide/solargraph/issues/345
|
|
18
|
-
# @sg-ignore https://github.com/castwide/solargraph/pull/1114
|
|
19
|
-
code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
|
|
20
|
-
Solargraph::Pin::Parameter.new(
|
|
21
|
-
location: location,
|
|
22
|
-
closure: self,
|
|
23
|
-
comments: comments,
|
|
24
|
-
name: arg_name(a),
|
|
25
|
-
presence: nil,
|
|
26
|
-
decl: arg_type(a),
|
|
27
|
-
asgn_code: a[1],
|
|
28
|
-
source: :yard_map
|
|
29
|
-
)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# @param a [Array<String>]
|
|
34
|
-
# @return [String]
|
|
35
|
-
def arg_name a
|
|
36
|
-
a[0].gsub(/[^a-z0-9_]/i, '')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# @param a [Array]
|
|
40
|
-
# @return [::Symbol]
|
|
41
|
-
def arg_type a
|
|
42
|
-
if a[0].start_with?('**')
|
|
43
|
-
:kwrestarg
|
|
44
|
-
elsif a[0].start_with?('*')
|
|
45
|
-
:restarg
|
|
46
|
-
elsif a[0].start_with?('&')
|
|
47
|
-
:blockarg
|
|
48
|
-
elsif a[0].end_with?(':')
|
|
49
|
-
a[1] ? :kwoptarg : :kwarg
|
|
50
|
-
elsif a[1]
|
|
51
|
-
:optarg
|
|
52
|
-
else
|
|
53
|
-
:arg
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
private_constant :InnerMethods
|
|
58
|
-
|
|
59
|
-
include Helpers
|
|
60
|
-
|
|
61
|
-
# @param code_object [YARD::CodeObjects::MethodObject]
|
|
62
|
-
# @param name [String, nil]
|
|
63
|
-
# @param scope [Symbol, nil]
|
|
64
|
-
# @param visibility [Symbol, nil]
|
|
65
|
-
# @param closure [Solargraph::Pin::Base, nil]
|
|
66
|
-
# @param spec [Solargraph::Pin::Base, nil]
|
|
67
|
-
# @return [Solargraph::Pin::Method]
|
|
68
|
-
def make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
|
|
69
|
-
closure ||= Solargraph::Pin::Namespace.new(
|
|
70
|
-
name: code_object.namespace.to_s,
|
|
71
|
-
gates: [code_object.namespace.to_s]
|
|
72
|
-
)
|
|
73
|
-
location = object_location(code_object, spec)
|
|
74
|
-
comments = code_object.docstring ? code_object.docstring.all.to_s : ''
|
|
75
|
-
Pin::Method.new(
|
|
76
|
-
location: location,
|
|
77
|
-
closure: closure,
|
|
78
|
-
name: name || code_object.name.to_s,
|
|
79
|
-
comments: comments,
|
|
80
|
-
scope: scope || code_object.scope,
|
|
81
|
-
visibility: visibility || code_object.visibility,
|
|
82
|
-
parameters: InnerMethods.get_parameters(code_object, location, comments),
|
|
83
|
-
explicit: code_object.is_explicit?,
|
|
84
|
-
source: :yard_map
|
|
85
|
-
)
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|