solargraph 0.57.0 → 0.58.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/.gitattributes +2 -0
- data/.github/workflows/linting.yml +4 -2
- data/.github/workflows/plugins.yml +63 -28
- data/.github/workflows/rspec.yml +19 -4
- data/.github/workflows/typecheck.yml +2 -2
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +90 -1438
- data/CHANGELOG.md +39 -0
- data/Rakefile +1 -1
- data/bin/solargraph +3 -0
- data/lib/solargraph/api_map/cache.rb +110 -110
- data/lib/solargraph/api_map/constants.rb +279 -218
- data/lib/solargraph/api_map/index.rb +193 -169
- data/lib/solargraph/api_map/source_to_yard.rb +97 -94
- data/lib/solargraph/api_map/store.rb +384 -374
- data/lib/solargraph/api_map.rb +945 -951
- data/lib/solargraph/bench.rb +45 -45
- data/lib/solargraph/complex_type/type_methods.rb +228 -223
- data/lib/solargraph/complex_type/unique_type.rb +482 -475
- data/lib/solargraph/complex_type.rb +444 -427
- data/lib/solargraph/convention/active_support_concern.rb +1 -1
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
- data/lib/solargraph/convention/data_definition.rb +105 -105
- 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 +61 -61
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
- data/lib/solargraph/convention/struct_definition.rb +164 -164
- data/lib/solargraph/convention.rb +78 -78
- data/lib/solargraph/converters/dd.rb +17 -17
- data/lib/solargraph/converters/dl.rb +15 -15
- data/lib/solargraph/converters/dt.rb +15 -15
- data/lib/solargraph/converters/misc.rb +1 -1
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
- data/lib/solargraph/diagnostics/rubocop.rb +118 -118
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -66
- data/lib/solargraph/diagnostics/type_check.rb +55 -55
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/doc_map.rb +439 -436
- data/lib/solargraph/environ.rb +1 -1
- data/lib/solargraph/equality.rb +34 -33
- data/lib/solargraph/gem_pins.rb +98 -94
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +130 -130
- data/lib/solargraph/language_server/host/message_worker.rb +112 -112
- data/lib/solargraph/language_server/host/sources.rb +99 -99
- data/lib/solargraph/language_server/host.rb +878 -872
- data/lib/solargraph/language_server/message/base.rb +97 -97
- data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -60
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
- data/lib/solargraph/language_server/message/extended/document.rb +23 -23
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +19 -19
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/initialize.rb +191 -191
- data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
- data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -145
- data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -35
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -40
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +26 -26
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/language_server/message.rb +94 -94
- data/lib/solargraph/language_server/progress.rb +1 -1
- data/lib/solargraph/language_server/request.rb +27 -25
- data/lib/solargraph/language_server/transport/data_reader.rb +74 -74
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/library.rb +683 -683
- data/lib/solargraph/location.rb +82 -81
- data/lib/solargraph/logging.rb +37 -37
- data/lib/solargraph/page.rb +92 -93
- data/lib/solargraph/parser/comment_ripper.rb +69 -69
- data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
- data/lib/solargraph/parser/node_processor/base.rb +92 -92
- data/lib/solargraph/parser/node_processor.rb +62 -62
- data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -159
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
- data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -499
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -21
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +37 -37
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -42
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -43
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -292
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
- data/lib/solargraph/parser/parser_gem.rb +12 -12
- data/lib/solargraph/parser/region.rb +69 -69
- data/lib/solargraph/parser/snippet.rb +17 -17
- data/lib/solargraph/parser.rb +23 -23
- data/lib/solargraph/pin/base.rb +729 -708
- data/lib/solargraph/pin/base_variable.rb +126 -124
- data/lib/solargraph/pin/block.rb +104 -103
- data/lib/solargraph/pin/breakable.rb +9 -9
- data/lib/solargraph/pin/callable.rb +231 -227
- data/lib/solargraph/pin/closure.rb +72 -76
- data/lib/solargraph/pin/common.rb +79 -79
- data/lib/solargraph/pin/constant.rb +45 -45
- data/lib/solargraph/pin/conversions.rb +123 -123
- data/lib/solargraph/pin/delegated_method.rb +120 -121
- data/lib/solargraph/pin/documenting.rb +114 -114
- data/lib/solargraph/pin/instance_variable.rb +34 -34
- data/lib/solargraph/pin/keyword.rb +20 -20
- data/lib/solargraph/pin/local_variable.rb +75 -79
- data/lib/solargraph/pin/method.rb +672 -656
- data/lib/solargraph/pin/method_alias.rb +34 -34
- data/lib/solargraph/pin/namespace.rb +115 -115
- data/lib/solargraph/pin/parameter.rb +275 -271
- data/lib/solargraph/pin/proxy_type.rb +39 -36
- data/lib/solargraph/pin/reference/override.rb +47 -47
- data/lib/solargraph/pin/reference/superclass.rb +15 -15
- data/lib/solargraph/pin/reference.rb +39 -48
- data/lib/solargraph/pin/search.rb +61 -58
- data/lib/solargraph/pin/signature.rb +61 -61
- data/lib/solargraph/pin/symbol.rb +53 -53
- data/lib/solargraph/pin/until.rb +18 -18
- data/lib/solargraph/pin/while.rb +18 -18
- data/lib/solargraph/pin.rb +44 -44
- data/lib/solargraph/pin_cache.rb +245 -245
- data/lib/solargraph/position.rb +132 -118
- data/lib/solargraph/range.rb +112 -108
- data/lib/solargraph/rbs_map/conversions.rb +823 -802
- data/lib/solargraph/rbs_map/core_fills.rb +84 -66
- data/lib/solargraph/rbs_map/core_map.rb +58 -54
- data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
- data/lib/solargraph/rbs_map.rb +163 -163
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +363 -271
- data/lib/solargraph/source/chain/array.rb +37 -37
- data/lib/solargraph/source/chain/call.rb +337 -333
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +26 -89
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +34 -34
- data/lib/solargraph/source/chain/if.rb +28 -28
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +109 -109
- data/lib/solargraph/source/chain/literal.rb +48 -48
- data/lib/solargraph/source/chain/or.rb +23 -23
- data/lib/solargraph/source/chain/q_call.rb +11 -11
- data/lib/solargraph/source/chain/variable.rb +13 -13
- data/lib/solargraph/source/chain/z_super.rb +30 -30
- data/lib/solargraph/source/chain.rb +291 -289
- data/lib/solargraph/source/change.rb +82 -82
- data/lib/solargraph/source/cursor.rb +166 -166
- data/lib/solargraph/source/encoding_fixes.rb +23 -23
- data/lib/solargraph/source/source_chainer.rb +194 -194
- data/lib/solargraph/source/updater.rb +55 -55
- data/lib/solargraph/source.rb +498 -498
- data/lib/solargraph/source_map/clip.rb +226 -234
- data/lib/solargraph/source_map/data.rb +34 -34
- data/lib/solargraph/source_map/mapper.rb +259 -261
- data/lib/solargraph/source_map.rb +212 -207
- data/lib/solargraph/type_checker/checks.rb +124 -124
- data/lib/solargraph/type_checker/param_def.rb +37 -37
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +84 -70
- data/lib/solargraph/type_checker.rb +814 -752
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/workspace/config.rb +255 -237
- data/lib/solargraph/workspace/require_paths.rb +97 -98
- data/lib/solargraph/workspace.rb +220 -225
- data/lib/solargraph/yard_map/helpers.rb +44 -44
- data/lib/solargraph/yard_map/mapper/to_method.rb +130 -129
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -30
- data/lib/solargraph/yard_map/mapper.rb +79 -79
- data/lib/solargraph/yard_map/to_method.rb +89 -88
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +87 -64
- data/lib/solargraph.rb +105 -105
- data/rbs/fills/bundler/0/bundler.rbs +4271 -0
- data/rbs/fills/open3/0/open3.rbs +172 -0
- data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
- data/rbs/fills/rubygems/0/errors.rbs +364 -0
- data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
- data/rbs/fills/rubygems/0/specification.rbs +1753 -0
- data/rbs/shims/ast/0/node.rbs +5 -0
- data/rbs/shims/ast/2.4/.rbs_meta.yaml +9 -0
- data/rbs/shims/ast/2.4/ast.rbs +73 -0
- data/rbs/shims/parser/3.2.0.1/manifest.yaml +7 -0
- data/rbs/shims/parser/3.2.0.1/parser.rbs +201 -0
- data/rbs/shims/parser/3.2.0.1/polyfill.rbs +4 -0
- data/rbs_collection.yaml +4 -4
- data/solargraph.gemspec +15 -4
- metadata +71 -16
- data/lib/solargraph/parser/node_methods.rb +0 -97
- /data/rbs/fills/{tuple.rbs → tuple/tuple.rbs} +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
## 0.58.3 - March 9, 2026
|
|
2
|
+
- Ignore workspace dependencies in cache processes (#1174)
|
|
3
|
+
|
|
4
|
+
## 0.58.2 - January 19, 2026
|
|
5
|
+
- Avoid rbs pollution (#1146)
|
|
6
|
+
- Fix 'solargraph pin --references ClassName' private method call (#1150)
|
|
7
|
+
- Improve memory efficiency of Position class (#1054)
|
|
8
|
+
- Raise InvalidOffsetError for offsets > text (#1155)
|
|
9
|
+
|
|
10
|
+
## 0.58.1 - January 2, 2026
|
|
11
|
+
- Normalize line endings to LF (#1142)
|
|
12
|
+
|
|
13
|
+
## 0.58.0 - January 1, 2026
|
|
14
|
+
- Faster constant resolution (#1083)
|
|
15
|
+
- [regression] Handle RBS static method aliases (#1094)
|
|
16
|
+
- More type fills and shims (#1005)
|
|
17
|
+
- Fix resolution in blocks in type checker (#890)
|
|
18
|
+
- Annotation fixes for strong typechecking (#1057)
|
|
19
|
+
- Remove dead code (#1077)
|
|
20
|
+
- Fix flakey spec (#1080)
|
|
21
|
+
- Fix bad sexpr generation in op_asgn (#1089)
|
|
22
|
+
- Opt-in for MFA requirement (#730)
|
|
23
|
+
- [regression] Fix resolution issues with namespaces from YARD (#1097)
|
|
24
|
+
- Improve a pin combination case around selfy types (#1024)
|
|
25
|
+
- Rescue reference errors in hosts (#1105)
|
|
26
|
+
- Relax bundler runtime dependency version constraint to support newer versions (#1125)
|
|
27
|
+
- Remove stale Pathname test (#1135)
|
|
28
|
+
- Enable strong type checking in CI (#928)
|
|
29
|
+
- Stale sg-ignore
|
|
30
|
+
- Use rbs 3.9.5 in tests (#1136)
|
|
31
|
+
- Drop broken 'namespaces' method (#1065)
|
|
32
|
+
- Add ActiveRecord example from RBS (#1074)
|
|
33
|
+
- Keep workspace directories as absolute paths (#1076)
|
|
34
|
+
- Handle bad gem_dir from gemspec object (#1079)
|
|
35
|
+
- Test for absolute require paths (#1137)
|
|
36
|
+
- [regression] Fix resolution of ambiguous argument types (#1098)
|
|
37
|
+
- Remove sg-ignore for String#=~ (#1138)
|
|
38
|
+
- Allow levels to be changed for typechecking rules in .solargraph.yml (#1126)
|
|
39
|
+
|
|
1
40
|
## 0.57.0 - September 16, 2025
|
|
2
41
|
- Support ActiveSupport::Concern pattern for class methods (#948)
|
|
3
42
|
- More CI checks (#996)
|
data/Rakefile
CHANGED
|
@@ -9,7 +9,7 @@ task :console do
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
desc "Run the type checker"
|
|
12
|
-
task typecheck: [:
|
|
12
|
+
task typecheck: [:typecheck_strong]
|
|
13
13
|
|
|
14
14
|
desc "Run the type checker at typed level - return code issues provable without annotations being correct"
|
|
15
15
|
task :typecheck_typed do
|
data/bin/solargraph
CHANGED
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class ApiMap
|
|
5
|
-
class Cache
|
|
6
|
-
def initialize
|
|
7
|
-
# @type [Hash{String => Array<Pin::Method>}]
|
|
8
|
-
@methods = {}
|
|
9
|
-
# @type [Hash{String, Array<String> => Array<Pin::Base>}]
|
|
10
|
-
@constants = {}
|
|
11
|
-
# @type [Hash{String => String}]
|
|
12
|
-
@qualified_namespaces = {}
|
|
13
|
-
# @type [Hash{String => Pin::Method}]
|
|
14
|
-
@receiver_definitions = {}
|
|
15
|
-
# @type [Hash{String => SourceMap::Clip}]
|
|
16
|
-
@clips = {}
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def to_s
|
|
20
|
-
self.class.to_s
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# avoid enormous dump
|
|
24
|
-
def inspect
|
|
25
|
-
to_s
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# @param fqns [String]
|
|
29
|
-
# @param scope [Symbol]
|
|
30
|
-
# @param visibility [Array<Symbol>]
|
|
31
|
-
# @param deep [Boolean]
|
|
32
|
-
# @return [Array<Pin::Method>]
|
|
33
|
-
def get_methods fqns, scope, visibility, deep
|
|
34
|
-
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# @param fqns [String]
|
|
38
|
-
# @param scope [Symbol]
|
|
39
|
-
# @param visibility [Array<Symbol>]
|
|
40
|
-
# @param deep [Boolean]
|
|
41
|
-
# @param value [Array<Pin::Method>]
|
|
42
|
-
# @return [void]
|
|
43
|
-
def set_methods fqns, scope, visibility, deep, value
|
|
44
|
-
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# @param namespace [String]
|
|
48
|
-
# @param contexts [Array<String>]
|
|
49
|
-
# @return [Array<Pin::Base>]
|
|
50
|
-
def get_constants namespace, contexts
|
|
51
|
-
@constants["#{namespace}|#{contexts}"]
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# @param namespace [String]
|
|
55
|
-
# @param contexts [Array<String>]
|
|
56
|
-
# @param value [Array<Pin::Base>]
|
|
57
|
-
# @return [void]
|
|
58
|
-
def set_constants namespace, contexts, value
|
|
59
|
-
@constants["#{namespace}|#{contexts}"] = value
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# @param name [String]
|
|
63
|
-
# @param context [String]
|
|
64
|
-
# @return [String]
|
|
65
|
-
def get_qualified_namespace name, context
|
|
66
|
-
@qualified_namespaces["#{name}|#{context}"]
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# @param name [String]
|
|
70
|
-
# @param context [String]
|
|
71
|
-
# @param value [String]
|
|
72
|
-
# @return [void]
|
|
73
|
-
def set_qualified_namespace name, context, value
|
|
74
|
-
@qualified_namespaces["#{name}|#{context}"] = value
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# @param path [String]
|
|
78
|
-
# @return [Pin::Method]
|
|
79
|
-
def get_receiver_definition path
|
|
80
|
-
@receiver_definitions[path]
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# @param path [String]
|
|
84
|
-
# @param pin [Pin::Method]
|
|
85
|
-
# @return [void]
|
|
86
|
-
def set_receiver_definition path, pin
|
|
87
|
-
@receiver_definitions[path] = pin
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# @return [void]
|
|
91
|
-
def clear
|
|
92
|
-
return if empty?
|
|
93
|
-
|
|
94
|
-
all_caches.each(&:clear)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# @return [Boolean]
|
|
98
|
-
def empty?
|
|
99
|
-
all_caches.all?(&:empty?)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
private
|
|
103
|
-
|
|
104
|
-
# @return [Array<Object>]
|
|
105
|
-
def all_caches
|
|
106
|
-
[@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class ApiMap
|
|
5
|
+
class Cache
|
|
6
|
+
def initialize
|
|
7
|
+
# @type [Hash{String => Array<Pin::Method>}]
|
|
8
|
+
@methods = {}
|
|
9
|
+
# @type [Hash{String, Array<String> => Array<Pin::Base>}]
|
|
10
|
+
@constants = {}
|
|
11
|
+
# @type [Hash{String => String}]
|
|
12
|
+
@qualified_namespaces = {}
|
|
13
|
+
# @type [Hash{String => Pin::Method}]
|
|
14
|
+
@receiver_definitions = {}
|
|
15
|
+
# @type [Hash{String => SourceMap::Clip}]
|
|
16
|
+
@clips = {}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_s
|
|
20
|
+
self.class.to_s
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# avoid enormous dump
|
|
24
|
+
def inspect
|
|
25
|
+
to_s
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @param fqns [String]
|
|
29
|
+
# @param scope [Symbol]
|
|
30
|
+
# @param visibility [Array<Symbol>]
|
|
31
|
+
# @param deep [Boolean]
|
|
32
|
+
# @return [Array<Pin::Method>]
|
|
33
|
+
def get_methods fqns, scope, visibility, deep
|
|
34
|
+
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @param fqns [String]
|
|
38
|
+
# @param scope [Symbol]
|
|
39
|
+
# @param visibility [Array<Symbol>]
|
|
40
|
+
# @param deep [Boolean]
|
|
41
|
+
# @param value [Array<Pin::Method>]
|
|
42
|
+
# @return [void]
|
|
43
|
+
def set_methods fqns, scope, visibility, deep, value
|
|
44
|
+
@methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @param namespace [String]
|
|
48
|
+
# @param contexts [Array<String>]
|
|
49
|
+
# @return [Array<Pin::Base>]
|
|
50
|
+
def get_constants namespace, contexts
|
|
51
|
+
@constants["#{namespace}|#{contexts}"]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# @param namespace [String]
|
|
55
|
+
# @param contexts [Array<String>]
|
|
56
|
+
# @param value [Array<Pin::Base>]
|
|
57
|
+
# @return [void]
|
|
58
|
+
def set_constants namespace, contexts, value
|
|
59
|
+
@constants["#{namespace}|#{contexts}"] = value
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# @param name [String]
|
|
63
|
+
# @param context [String]
|
|
64
|
+
# @return [String]
|
|
65
|
+
def get_qualified_namespace name, context
|
|
66
|
+
@qualified_namespaces["#{name}|#{context}"]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @param name [String]
|
|
70
|
+
# @param context [String]
|
|
71
|
+
# @param value [String]
|
|
72
|
+
# @return [void]
|
|
73
|
+
def set_qualified_namespace name, context, value
|
|
74
|
+
@qualified_namespaces["#{name}|#{context}"] = value
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# @param path [String]
|
|
78
|
+
# @return [Pin::Method]
|
|
79
|
+
def get_receiver_definition path
|
|
80
|
+
@receiver_definitions[path]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @param path [String]
|
|
84
|
+
# @param pin [Pin::Method]
|
|
85
|
+
# @return [void]
|
|
86
|
+
def set_receiver_definition path, pin
|
|
87
|
+
@receiver_definitions[path] = pin
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# @return [void]
|
|
91
|
+
def clear
|
|
92
|
+
return if empty?
|
|
93
|
+
|
|
94
|
+
all_caches.each(&:clear)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @return [Boolean]
|
|
98
|
+
def empty?
|
|
99
|
+
all_caches.all?(&:empty?)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
private
|
|
103
|
+
|
|
104
|
+
# @return [Array<Object>]
|
|
105
|
+
def all_caches
|
|
106
|
+
[@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|