solargraph 0.57.0 → 0.58.1

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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.github/workflows/linting.yml +4 -2
  4. data/.github/workflows/plugins.yml +61 -27
  5. data/.github/workflows/rspec.yml +19 -4
  6. data/.github/workflows/typecheck.yml +2 -2
  7. data/.rubocop.yml +1 -1
  8. data/.rubocop_todo.yml +90 -1438
  9. data/CHANGELOG.md +30 -0
  10. data/Rakefile +1 -1
  11. data/bin/solargraph +3 -0
  12. data/lib/solargraph/api_map/constants.rb +107 -46
  13. data/lib/solargraph/api_map/index.rb +32 -8
  14. data/lib/solargraph/api_map/source_to_yard.rb +5 -2
  15. data/lib/solargraph/api_map/store.rb +22 -12
  16. data/lib/solargraph/api_map.rb +27 -33
  17. data/lib/solargraph/complex_type/type_methods.rb +5 -0
  18. data/lib/solargraph/complex_type/unique_type.rb +12 -5
  19. data/lib/solargraph/complex_type.rb +19 -2
  20. data/lib/solargraph/convention/active_support_concern.rb +1 -1
  21. data/lib/solargraph/convention/data_definition/data_definition_node.rb +1 -1
  22. data/lib/solargraph/diagnostics/rubocop_helpers.rb +4 -2
  23. data/lib/solargraph/doc_map.rb +9 -6
  24. data/lib/solargraph/environ.rb +1 -1
  25. data/lib/solargraph/equality.rb +1 -0
  26. data/lib/solargraph/gem_pins.rb +4 -0
  27. data/lib/solargraph/language_server/host.rb +10 -4
  28. data/lib/solargraph/language_server/message/text_document/definition.rb +2 -2
  29. data/lib/solargraph/language_server/message/text_document/formatting.rb +4 -1
  30. data/lib/solargraph/language_server/message/text_document/type_definition.rb +1 -1
  31. data/lib/solargraph/language_server/progress.rb +1 -1
  32. data/lib/solargraph/language_server/request.rb +3 -1
  33. data/lib/solargraph/library.rb +3 -3
  34. data/lib/solargraph/location.rb +1 -0
  35. data/lib/solargraph/page.rb +0 -1
  36. data/lib/solargraph/parser/flow_sensitive_typing.rb +1 -1
  37. data/lib/solargraph/parser/parser_gem/class_methods.rb +2 -12
  38. data/lib/solargraph/parser/parser_gem/node_methods.rb +1 -14
  39. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +1 -0
  40. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +64 -8
  41. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +12 -3
  42. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +4 -5
  43. data/lib/solargraph/pin/base.rb +29 -8
  44. data/lib/solargraph/pin/base_variable.rb +5 -3
  45. data/lib/solargraph/pin/block.rb +3 -2
  46. data/lib/solargraph/pin/callable.rb +6 -2
  47. data/lib/solargraph/pin/closure.rb +3 -7
  48. data/lib/solargraph/pin/delegated_method.rb +0 -1
  49. data/lib/solargraph/pin/local_variable.rb +0 -4
  50. data/lib/solargraph/pin/method.rb +20 -4
  51. data/lib/solargraph/pin/parameter.rb +6 -2
  52. data/lib/solargraph/pin/proxy_type.rb +4 -1
  53. data/lib/solargraph/pin/reference.rb +2 -11
  54. data/lib/solargraph/pin/search.rb +3 -0
  55. data/lib/solargraph/pin_cache.rb +5 -5
  56. data/lib/solargraph/position.rb +1 -0
  57. data/lib/solargraph/range.rb +4 -0
  58. data/lib/solargraph/rbs_map/conversions.rb +22 -1
  59. data/lib/solargraph/rbs_map/core_fills.rb +18 -0
  60. data/lib/solargraph/rbs_map/core_map.rb +11 -7
  61. data/lib/solargraph/rbs_map.rb +2 -2
  62. data/lib/solargraph/shell.rb +82 -1
  63. data/lib/solargraph/source/chain/call.rb +7 -3
  64. data/lib/solargraph/source/chain/constant.rb +3 -66
  65. data/lib/solargraph/source/chain/if.rb +1 -1
  66. data/lib/solargraph/source/chain/link.rb +1 -1
  67. data/lib/solargraph/source/chain/or.rb +1 -1
  68. data/lib/solargraph/source/chain.rb +2 -0
  69. data/lib/solargraph/source/encoding_fixes.rb +23 -23
  70. data/lib/solargraph/source.rb +1 -1
  71. data/lib/solargraph/source_map/clip.rb +17 -25
  72. data/lib/solargraph/source_map/mapper.rb +0 -2
  73. data/lib/solargraph/source_map.rb +8 -3
  74. data/lib/solargraph/type_checker/rules.rb +23 -9
  75. data/lib/solargraph/type_checker.rb +133 -71
  76. data/lib/solargraph/version.rb +5 -5
  77. data/lib/solargraph/workspace/config.rb +21 -3
  78. data/lib/solargraph/workspace/require_paths.rb +0 -1
  79. data/lib/solargraph/workspace.rb +14 -19
  80. data/lib/solargraph/yard_map/mapper/to_method.rb +2 -1
  81. data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -0
  82. data/lib/solargraph/yard_map/to_method.rb +2 -1
  83. data/lib/solargraph/yardoc.rb +27 -4
  84. data/rbs/fills/bundler/0/bundler.rbs +4271 -0
  85. data/rbs/fills/open3/0/open3.rbs +172 -0
  86. data/rbs/fills/rubygems/0/basic_specification.rbs +326 -0
  87. data/rbs/fills/rubygems/0/errors.rbs +364 -0
  88. data/rbs/fills/rubygems/0/spec_fetcher.rbs +107 -0
  89. data/rbs/fills/rubygems/0/specification.rbs +1753 -0
  90. data/rbs_collection.yaml +4 -4
  91. data/sig/shims/ast/0/node.rbs +5 -0
  92. data/sig/shims/ast/2.4/.rbs_meta.yaml +9 -0
  93. data/sig/shims/ast/2.4/ast.rbs +73 -0
  94. data/sig/shims/parser/3.2.0.1/manifest.yaml +7 -0
  95. data/sig/shims/parser/3.2.0.1/parser.rbs +201 -0
  96. data/sig/shims/parser/3.2.0.1/polyfill.rbs +4 -0
  97. data/solargraph.gemspec +15 -4
  98. metadata +67 -12
  99. data/lib/solargraph/parser/node_methods.rb +0 -97
  100. /data/rbs/fills/{tuple.rbs → tuple/tuple.rbs} +0 -0
@@ -0,0 +1,172 @@
1
+ # <!-- rdoc-file=lib/open3.rb -->
2
+ # Module Open3 supports creating child processes with access to their $stdin,
3
+ # $stdout, and $stderr streams.
4
+ #
5
+ # ## What's Here
6
+ #
7
+ # Each of these methods executes a given command in a new process or subshell,
8
+ # or multiple commands in new processes and/or subshells:
9
+ #
10
+ # * Each of these methods executes a single command in a process or subshell,
11
+ # accepts a string for input to $stdin, and returns string output from
12
+ # $stdout, $stderr, or both:
13
+ #
14
+ # * Open3.capture2: Executes the command; returns the string from $stdout.
15
+ # * Open3.capture2e: Executes the command; returns the string from merged
16
+ # $stdout and $stderr.
17
+ # * Open3.capture3: Executes the command; returns strings from $stdout and
18
+ # $stderr.
19
+ #
20
+ # * Each of these methods executes a single command in a process or subshell,
21
+ # and returns pipes for $stdin, $stdout, and/or $stderr:
22
+ #
23
+ # * Open3.popen2: Executes the command; returns pipes for $stdin and
24
+ # $stdout.
25
+ # * Open3.popen2e: Executes the command; returns pipes for $stdin and
26
+ # merged $stdout and $stderr.
27
+ # * Open3.popen3: Executes the command; returns pipes for $stdin, $stdout,
28
+ # and $stderr.
29
+ #
30
+ # * Each of these methods executes one or more commands in processes and/or
31
+ # subshells, returns pipes for the first $stdin, the last $stdout, or both:
32
+ #
33
+ # * Open3.pipeline_r: Returns a pipe for the last $stdout.
34
+ # * Open3.pipeline_rw: Returns pipes for the first $stdin and the last
35
+ # $stdout.
36
+ # * Open3.pipeline_w: Returns a pipe for the first $stdin.
37
+ # * Open3.pipeline_start: Does not wait for processes to complete.
38
+ # * Open3.pipeline: Waits for processes to complete.
39
+ #
40
+ # Each of the methods above accepts:
41
+ #
42
+ # * An optional hash of environment variable names and values; see [Execution
43
+ # Environment](rdoc-ref:Process@Execution+Environment).
44
+ # * A required string argument that is a `command_line` or `exe_path`; see
45
+ # [Argument command_line or
46
+ # exe_path](rdoc-ref:Process@Argument+command_line+or+exe_path).
47
+ # * An optional hash of execution options; see [Execution
48
+ # Options](rdoc-ref:Process@Execution+Options).
49
+ #
50
+ module Open3
51
+ # <!--
52
+ # rdoc-file=lib/open3.rb
53
+ # - Open3.capture2e([env, ] command_line, options = {}) -> [stdout_and_stderr_s, status]
54
+ # - Open3.capture2e([env, ] exe_path, *args, options = {}) -> [stdout_and_stderr_s, status]
55
+ # -->
56
+ # Basically a wrapper for Open3.popen3 that:
57
+ #
58
+ # * Creates a child process, by calling Open3.popen3 with the given arguments
59
+ # (except for certain entries in hash `options`; see below).
60
+ # * Returns as string `stdout_and_stderr_s` the merged standard output and
61
+ # standard error of the child process.
62
+ # * Returns as `status` a `Process::Status` object that represents the exit
63
+ # status of the child process.
64
+ #
65
+ # Returns the array `[stdout_and_stderr_s, status]`:
66
+ #
67
+ # stdout_and_stderr_s, status = Open3.capture2e('echo "Foo"')
68
+ # # => ["Foo\n", #<Process::Status: pid 2371692 exit 0>]
69
+ #
70
+ # Like Process.spawn, this method has potential security vulnerabilities if
71
+ # called with untrusted input; see [Command
72
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
73
+ #
74
+ # Unlike Process.spawn, this method waits for the child process to exit before
75
+ # returning, so the caller need not do so.
76
+ #
77
+ # If the first argument is a hash, it becomes leading argument `env` in the call
78
+ # to Open3.popen3; see [Execution
79
+ # Environment](rdoc-ref:Process@Execution+Environment).
80
+ #
81
+ # If the last argument is a hash, it becomes trailing argument `options` in the
82
+ # call to Open3.popen3; see [Execution
83
+ # Options](rdoc-ref:Process@Execution+Options).
84
+ #
85
+ # The hash `options` is given; two options have local effect in method
86
+ # Open3.capture2e:
87
+ #
88
+ # * If entry `options[:stdin_data]` exists, the entry is removed and its
89
+ # string value is sent to the command's standard input:
90
+ #
91
+ # Open3.capture2e('tee', stdin_data: 'Foo')
92
+ # # => ["Foo", #<Process::Status: pid 2371732 exit 0>]
93
+ #
94
+ # * If entry `options[:binmode]` exists, the entry is removed and the internal
95
+ # streams are set to binary mode.
96
+ #
97
+ # The single required argument is one of the following:
98
+ #
99
+ # * `command_line` if it is a string, and if it begins with a shell reserved
100
+ # word or special built-in, or if it contains one or more metacharacters.
101
+ # * `exe_path` otherwise.
102
+ #
103
+ # **Argument `command_line`**
104
+ #
105
+ # String argument `command_line` is a command line to be passed to a shell; it
106
+ # must begin with a shell reserved word, begin with a special built-in, or
107
+ # contain meta characters:
108
+ #
109
+ # Open3.capture2e('if true; then echo "Foo"; fi') # Shell reserved word.
110
+ # # => ["Foo\n", #<Process::Status: pid 2371740 exit 0>]
111
+ # Open3.capture2e('echo') # Built-in.
112
+ # # => ["\n", #<Process::Status: pid 2371774 exit 0>]
113
+ # Open3.capture2e('date > date.tmp') # Contains meta character.
114
+ # # => ["", #<Process::Status: pid 2371812 exit 0>]
115
+ #
116
+ # The command line may also contain arguments and options for the command:
117
+ #
118
+ # Open3.capture2e('echo "Foo"')
119
+ # # => ["Foo\n", #<Process::Status: pid 2326183 exit 0>]
120
+ #
121
+ # **Argument `exe_path`**
122
+ #
123
+ # Argument `exe_path` is one of the following:
124
+ #
125
+ # * The string path to an executable to be called.
126
+ # * A 2-element array containing the path to an executable and the string to
127
+ # be used as the name of the executing process.
128
+ #
129
+ # Example:
130
+ #
131
+ # Open3.capture2e('/usr/bin/date')
132
+ # # => ["Sat Sep 30 09:01:46 AM CDT 2023\n", #<Process::Status: pid 2371820 exit 0>]
133
+ #
134
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
135
+ #
136
+ # Open3.capture2e('doesnt_exist') # Raises Errno::ENOENT
137
+ #
138
+ # If one or more `args` is given, each is an argument or option to be passed to
139
+ # the executable:
140
+ #
141
+ # Open3.capture2e('echo', 'C #')
142
+ # # => ["C #\n", #<Process::Status: pid 2371856 exit 0>]
143
+ # Open3.capture2e('echo', 'hello', 'world')
144
+ # # => ["hello world\n", #<Process::Status: pid 2371894 exit 0>]
145
+ #
146
+ def self.capture2e: (*String, ?stdin_data: String, ?chdir: String, ?binmode: boolish) -> [String, Process::Status]
147
+ | (Hash[String, String] env, *String cmds, ?chdir: String, ?stdin_data: String, ?binmode: boolish) -> [String, Process::Status]
148
+
149
+ def self.capture2: (?Hash[String, String] env, *String cmds, ?chdir: String) -> [String, Process::Status]
150
+
151
+ def self.capture3: (?Hash[String, String] env, *String cmds, ?chdir: String) -> [String, String, Process::Status]
152
+
153
+ def self.pipeline: (?Hash[String, String] env, *String cmds, ?chdir: String) -> Array[Process::Status]
154
+
155
+ def self.pipeline_r: (?Hash[String, String] env, *String cmds, ?chdir: String) -> [IO, Process::Waiter]
156
+
157
+ def self.pipeline_rw: (?Hash[String, String] env, *String cmds, ?chdir: String) -> [IO, IO, Process::Waiter]
158
+
159
+ def self.pipeline_start: (?Hash[String, String] env, *String cmds, ?chdir: String) -> Array[Process::Waiter]
160
+
161
+ def self.pipeline_w: (?Hash[String, String] env, *String cmds, ?chdir: String) -> [IO, Process::Waiter]
162
+
163
+ def self.popen2: (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) -> [IO, IO, Process::Waiter]
164
+ | [U] (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) { (IO stdin, IO stdout, Process::Waiter wait_thread) -> U } -> U
165
+
166
+ def self.popen2e: (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) -> [IO, IO, Process::Waiter]
167
+ | [U] (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) { (IO stdin, IO stdout_and_stderr, Process::Waiter wait_thread) -> U } -> U
168
+
169
+ def self.popen3: (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) -> [IO, IO, IO, Process::Waiter]
170
+ | [U] (?Hash[String, String] env, *String exe_path_or_cmd_with_args, ?chdir: String) { (IO stdin, IO stdout, IO stderr, Process::Waiter wait_thread) -> U } -> U
171
+
172
+ end
@@ -0,0 +1,326 @@
1
+ # <!-- rdoc-file=lib/rubygems/basic_specification.rb -->
2
+ # BasicSpecification is an abstract class which implements some common code used
3
+ # by both Specification and StubSpecification.
4
+ #
5
+ class Gem::BasicSpecification
6
+ @ignored: untyped
7
+
8
+ @extension_dir: untyped
9
+
10
+ @full_gem_path: untyped
11
+
12
+ @full_require_paths: untyped
13
+
14
+ @paths_map: untyped
15
+
16
+ @gem_dir: untyped
17
+
18
+ attr_writer base_dir: untyped
19
+
20
+ attr_writer extension_dir: untyped
21
+
22
+ attr_writer ignored: untyped
23
+
24
+ # <!-- rdoc-file=lib/rubygems/basic_specification.rb -->
25
+ # The path this gemspec was loaded from. This attribute is not persisted.
26
+ #
27
+ attr_accessor loaded_from: untyped
28
+
29
+ attr_writer full_gem_path: untyped
30
+
31
+ # <!--
32
+ # rdoc-file=lib/rubygems/basic_specification.rb
33
+ # - new()
34
+ # -->
35
+ #
36
+ def initialize: () -> void
37
+
38
+ # <!--
39
+ # rdoc-file=lib/rubygems/basic_specification.rb
40
+ # - default_specifications_dir()
41
+ # -->
42
+ #
43
+ def self.default_specifications_dir: () -> untyped
44
+
45
+ extend Gem::Deprecate
46
+
47
+ def gem_build_complete_path: () -> untyped
48
+
49
+ # <!--
50
+ # rdoc-file=lib/rubygems/basic_specification.rb
51
+ # - activated?()
52
+ # -->
53
+ # True when the gem has been activated
54
+ #
55
+ def activated?: () -> untyped
56
+
57
+ # <!--
58
+ # rdoc-file=lib/rubygems/basic_specification.rb
59
+ # - base_dir()
60
+ # -->
61
+ # Returns the full path to the base gem directory.
62
+ #
63
+ # eg: /usr/local/lib/ruby/gems/1.8
64
+ #
65
+ def base_dir: () -> untyped
66
+
67
+ # <!--
68
+ # rdoc-file=lib/rubygems/basic_specification.rb
69
+ # - contains_requirable_file?(file)
70
+ # -->
71
+ # Return true if this spec can require `file`.
72
+ #
73
+ def contains_requirable_file?: (untyped file) -> (false | untyped)
74
+
75
+ # <!--
76
+ # rdoc-file=lib/rubygems/basic_specification.rb
77
+ # - ignored?()
78
+ # -->
79
+ # Return true if this spec should be ignored because it's missing extensions.
80
+ #
81
+ def ignored?: () -> untyped
82
+
83
+ # <!--
84
+ # rdoc-file=lib/rubygems/basic_specification.rb
85
+ # - default_gem?()
86
+ # -->
87
+ #
88
+ def default_gem?: () -> untyped
89
+
90
+ # <!--
91
+ # rdoc-file=lib/rubygems/basic_specification.rb
92
+ # - default_gem_priority()
93
+ # -->
94
+ # Regular gems take precedence over default gems
95
+ #
96
+ def default_gem_priority: () -> (1 | -1)
97
+
98
+ # <!--
99
+ # rdoc-file=lib/rubygems/basic_specification.rb
100
+ # - base_dir_priority(gem_path)
101
+ # -->
102
+ # Gems higher up in `gem_path` take precedence
103
+ #
104
+ def base_dir_priority: (untyped gem_path) -> untyped
105
+
106
+ # <!--
107
+ # rdoc-file=lib/rubygems/basic_specification.rb
108
+ # - extension_dir()
109
+ # -->
110
+ # Returns full path to the directory where gem's extensions are installed.
111
+ #
112
+ def extension_dir: () -> untyped
113
+
114
+ # <!--
115
+ # rdoc-file=lib/rubygems/basic_specification.rb
116
+ # - extensions_dir()
117
+ # -->
118
+ # Returns path to the extensions directory.
119
+ #
120
+ def extensions_dir: () -> untyped
121
+
122
+ private
123
+
124
+ def find_full_gem_path: () -> untyped
125
+
126
+ public
127
+
128
+ # <!--
129
+ # rdoc-file=lib/rubygems/basic_specification.rb
130
+ # - full_gem_path()
131
+ # -->
132
+ # The full path to the gem (install path + full name).
133
+ #
134
+ # TODO: This is duplicated with #gem_dir. Eventually either of them should be
135
+ # deprecated.
136
+ #
137
+ def full_gem_path: () -> untyped
138
+
139
+ # <!--
140
+ # rdoc-file=lib/rubygems/basic_specification.rb
141
+ # - full_name()
142
+ # -->
143
+ # Returns the full name (name-version) of this Gem. Platform information is
144
+ # included (name-version-platform) if it is specified and not the default Ruby
145
+ # platform.
146
+ #
147
+ def full_name: () -> ::String
148
+
149
+ # <!--
150
+ # rdoc-file=lib/rubygems/basic_specification.rb
151
+ # - full_name_with_location()
152
+ # -->
153
+ # Returns the full name of this Gem (see `Gem::BasicSpecification#full_name`).
154
+ # Information about where the gem is installed is also included if not installed
155
+ # in the default GEM_HOME.
156
+ #
157
+ def full_name_with_location: () -> (::String | untyped)
158
+
159
+ # <!--
160
+ # rdoc-file=lib/rubygems/basic_specification.rb
161
+ # - full_require_paths()
162
+ # -->
163
+ # Full paths in the gem to add to `$LOAD_PATH` when this gem is activated.
164
+ #
165
+ def full_require_paths: () -> untyped
166
+
167
+ # <!--
168
+ # rdoc-file=lib/rubygems/basic_specification.rb
169
+ # - datadir()
170
+ # -->
171
+ # The path to the data directory for this gem.
172
+ #
173
+ def datadir: () -> untyped
174
+
175
+ # <!--
176
+ # rdoc-file=lib/rubygems/basic_specification.rb
177
+ # - to_fullpath(path)
178
+ # -->
179
+ # Full path of the target library file. If the file is not in this gem, return
180
+ # nil.
181
+ #
182
+ def to_fullpath: (untyped path) -> (untyped | nil)
183
+
184
+ # <!--
185
+ # rdoc-file=lib/rubygems/basic_specification.rb
186
+ # - gem_dir()
187
+ # -->
188
+ # Returns the full path to this spec's gem directory. eg:
189
+ # /usr/local/lib/ruby/1.8/gems/mygem-1.0
190
+ #
191
+ # TODO: This is duplicated with #full_gem_path. Eventually either of them should
192
+ # be deprecated.
193
+ #
194
+ def gem_dir: () -> untyped
195
+
196
+ # <!--
197
+ # rdoc-file=lib/rubygems/basic_specification.rb
198
+ # - gems_dir()
199
+ # -->
200
+ # Returns the full path to the gems directory containing this spec's gem
201
+ # directory. eg: /usr/local/lib/ruby/1.8/gems
202
+ #
203
+ def gems_dir: () -> untyped
204
+
205
+ def internal_init: () -> untyped
206
+
207
+ # <!--
208
+ # rdoc-file=lib/rubygems/basic_specification.rb
209
+ # - name()
210
+ # -->
211
+ # Name of the gem
212
+ #
213
+ def name: () -> untyped
214
+
215
+ # <!--
216
+ # rdoc-file=lib/rubygems/basic_specification.rb
217
+ # - platform()
218
+ # -->
219
+ # Platform of the gem
220
+ #
221
+ def platform: () -> untyped
222
+
223
+ def raw_require_paths: () -> untyped
224
+
225
+ # <!--
226
+ # rdoc-file=lib/rubygems/basic_specification.rb
227
+ # - require_paths()
228
+ # -->
229
+ # Paths in the gem to add to `$LOAD_PATH` when this gem is activated.
230
+ #
231
+ # See also #require_paths=
232
+ #
233
+ # If you have an extension you do not need to add `"ext"` to the require path,
234
+ # the extension build process will copy the extension files into "lib" for you.
235
+ #
236
+ # The default value is `"lib"`
237
+ #
238
+ # Usage:
239
+ #
240
+ # # If all library files are in the root directory...
241
+ # spec.require_path = '.'
242
+ #
243
+ def require_paths: () -> untyped
244
+
245
+ # <!--
246
+ # rdoc-file=lib/rubygems/basic_specification.rb
247
+ # - source_paths()
248
+ # -->
249
+ # Returns the paths to the source files for use with analysis and documentation
250
+ # tools. These paths are relative to full_gem_path.
251
+ #
252
+ def source_paths: () -> untyped
253
+
254
+ # <!--
255
+ # rdoc-file=lib/rubygems/basic_specification.rb
256
+ # - matches_for_glob(glob)
257
+ # -->
258
+ # Return all files in this gem that match for `glob`.
259
+ #
260
+ def matches_for_glob: (untyped glob) -> untyped
261
+
262
+ # <!--
263
+ # rdoc-file=lib/rubygems/basic_specification.rb
264
+ # - plugins()
265
+ # -->
266
+ # Returns the list of plugins in this spec.
267
+ #
268
+ def plugins: () -> untyped
269
+
270
+ # <!--
271
+ # rdoc-file=lib/rubygems/basic_specification.rb
272
+ # - lib_dirs_glob()
273
+ # -->
274
+ # Returns a string usable in Dir.glob to match all requirable paths for this
275
+ # spec.
276
+ #
277
+ def lib_dirs_glob: () -> ::String
278
+
279
+ # <!--
280
+ # rdoc-file=lib/rubygems/basic_specification.rb
281
+ # - to_spec()
282
+ # -->
283
+ # Return a Gem::Specification from this gem
284
+ #
285
+ def to_spec: () -> untyped
286
+
287
+ # <!--
288
+ # rdoc-file=lib/rubygems/basic_specification.rb
289
+ # - version()
290
+ # -->
291
+ # Version of the gem
292
+ #
293
+ def version: () -> untyped
294
+
295
+ # <!--
296
+ # rdoc-file=lib/rubygems/basic_specification.rb
297
+ # - stubbed?()
298
+ # -->
299
+ # Whether this specification is stubbed - i.e. we have information about the gem
300
+ # from a stub line, without having to evaluate the entire gemspec file.
301
+ #
302
+ def stubbed?: () -> untyped
303
+
304
+ # <!--
305
+ # rdoc-file=lib/rubygems/basic_specification.rb
306
+ # - this()
307
+ # -->
308
+ #
309
+ def this: () -> self
310
+
311
+ private
312
+
313
+ # <!--
314
+ # rdoc-file=lib/rubygems/basic_specification.rb
315
+ # - have_extensions?()
316
+ # -->
317
+ #
318
+ def have_extensions?: () -> untyped
319
+
320
+ # <!--
321
+ # rdoc-file=lib/rubygems/basic_specification.rb
322
+ # - have_file?(file, suffixes)
323
+ # -->
324
+ #
325
+ def have_file?: (untyped file, untyped suffixes) -> (true | untyped)
326
+ end