rbs 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +34 -0
- data/CHANGELOG.md +45 -0
- data/Rakefile +52 -21
- data/core/encoding.rbs +742 -0
- data/core/file.rbs +1 -3
- data/core/kernel.rbs +5 -3
- data/docs/syntax.md +54 -11
- data/ext/rbs_extension/extconf.rb +1 -0
- data/ext/rbs_extension/lexer.h +5 -0
- data/ext/rbs_extension/lexstate.c +6 -0
- data/ext/rbs_extension/parser.c +85 -10
- data/ext/rbs_extension/ruby_objs.c +4 -2
- data/ext/rbs_extension/ruby_objs.h +2 -2
- data/goodcheck.yml +0 -11
- data/lib/rbs/annotate/rdoc_annotator.rb +2 -2
- data/lib/rbs/ast/members.rb +21 -13
- data/lib/rbs/buffer.rb +17 -11
- data/lib/rbs/cli.rb +5 -2
- data/lib/rbs/definition_builder/method_builder.rb +28 -16
- data/lib/rbs/definition_builder.rb +1 -1
- data/lib/rbs/environment.rb +8 -4
- data/lib/rbs/namespace.rb +1 -1
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +1 -1
- data/lib/rbs/validator.rb +2 -0
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +54 -4
- data/lib/rbs.rb +0 -2
- data/schema/typeParam.json +3 -3
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- data/sig/buffer.rbs +6 -2
- data/sig/members.rbs +24 -18
- data/sig/method_builder.rbs +5 -4
- data/sig/writer.rbs +79 -2
- data/stdlib/net-http/0/manifest.yaml +1 -0
- data/stdlib/net-http/0/net-http.rbs +21 -0
- data/stdlib/uri/0/generic.rbs +2 -2
- data/stdlib/uri/0/http.rbs +35 -0
- metadata +3 -3
- data/sig/char_scanner.rbs +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4afaa0d6ac4b7b74aae38aa7cd04679dad881ad073ca496aa06f272a7261cfe
|
4
|
+
data.tar.gz: 041f1bf758d156f9a968ae3cb460da45a99f80aacb2868513549687ee4e4ad76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8891199897e1ef1574b8009bc810c0d60a1a8fbe4a9f2d5d6658b703c75d515d6e89022e5246a6196657775d8f0ea2bd44db13718a425face5d16d3e5cff38dd
|
7
|
+
data.tar.gz: faa9199018c944a87de33fc99a4bf203e73f2f24d27960d79cd92fb82aaa6be2218cae07a2bb6887ad1dee2df96e8abc7b43ec818bf11d5a40dfabf3e782f1c2
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: RBS Comments
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request: {}
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
test:
|
11
|
+
runs-on: "ubuntu-latest"
|
12
|
+
container:
|
13
|
+
image: rubylang/ruby:3.1-focal
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
- name: Install dependencies
|
17
|
+
run: |
|
18
|
+
apt-get update
|
19
|
+
apt-get install -y libdb-dev
|
20
|
+
- name: Update rubygems & bundler
|
21
|
+
run: |
|
22
|
+
ruby -v
|
23
|
+
gem update --system
|
24
|
+
- name: bundle config set with
|
25
|
+
run: |
|
26
|
+
echo "NO_MINITEST=true" >> $GITHUB_ENV
|
27
|
+
bundle config set --local without 'minitest'
|
28
|
+
if: "contains(matrix.container_tag, 'master-nightly')"
|
29
|
+
- name: bin/setup
|
30
|
+
run: |
|
31
|
+
bin/setup
|
32
|
+
- name: Run test
|
33
|
+
run: |
|
34
|
+
bundle exec rake annotate confirm_annotation
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,51 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## 2.2.0 (2022-02-22)
|
6
|
+
|
7
|
+
RBS 2.2 ships with a new syntax to specify the visibility of a method per definition bases.
|
8
|
+
|
9
|
+
```rbs
|
10
|
+
class Foo
|
11
|
+
private def hello: () -> void
|
12
|
+
|
13
|
+
private attr_accessor world: String
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
It also changes the semantics of `self?` method.
|
18
|
+
It defines both _public_ singleton method and _private_ instance method, which is equivalent to `module_function`.
|
19
|
+
|
20
|
+
## Signature updates
|
21
|
+
|
22
|
+
* `net-http` ([\#892](https://github.com/ruby/rbs/pull/892))
|
23
|
+
* `uri` ([\#864](https://github.com/ruby/rbs/pull/864))
|
24
|
+
* `Encoding` ([\#897](https://github.com/ruby/rbs/pull/897), [\#898](https://github.com/ruby/rbs/pull/898))
|
25
|
+
* `File::Stat` ([\#879](https://github.com/ruby/rbs/pull/879))
|
26
|
+
* `Kernel#sleep` ([\#893](https://github.com/ruby/rbs/pull/893))
|
27
|
+
|
28
|
+
### Language updates
|
29
|
+
|
30
|
+
* Add public/private per member modifier ([\#911](https://github.com/ruby/rbs/pull/911))
|
31
|
+
* Let `self?.` be equivalent to `module_function` ([\#910](https://github.com/ruby/rbs/pull/910))
|
32
|
+
|
33
|
+
### Library changes
|
34
|
+
|
35
|
+
* Add c99 flag for compiling on Ruby 2 ([\#895](https://github.com/ruby/rbs/pull/895))
|
36
|
+
* Fix incorrect URI reference in `schema/typeParam.json` ([\#891](https://github.com/ruby/rbs/pull/891))
|
37
|
+
* Allow scaffolding below namespace ([\#894](https://github.com/ruby/rbs/pull/894))
|
38
|
+
* Let `Writer` preserve format ([\#900](https://github.com/ruby/rbs/pull/900))
|
39
|
+
* Reduce memory usage of `RBS::Buffer` ([\#907](https://github.com/ruby/rbs/pull/907))
|
40
|
+
* Do not call `#class` from `#hash` to improve performance ([\#906](https://github.com/ruby/rbs/pull/906))
|
41
|
+
* Skip type variable validation if `unchcked` ([\#909](https://github.com/ruby/rbs/pull/909))
|
42
|
+
|
43
|
+
### Miscellaneous
|
44
|
+
|
45
|
+
* Add `Thread::Backtrace` and `Thread::Backtrace::Location` test ([\#896](https://github.com/ruby/rbs/pull/896))
|
46
|
+
* Test annotations ([\#902](https://github.com/ruby/rbs/pull/902))
|
47
|
+
* Remove goodcheck rule for arglists section ([\#901](https://github.com/ruby/rbs/pull/901))
|
48
|
+
* Remove `CharScanner` due to no longer used ([\#905](https://github.com/ruby/rbs/pull/905))
|
49
|
+
|
5
50
|
## 2.1.0 (2022-02-02)
|
6
51
|
|
7
52
|
RBS 2.1 is a release to deliver the types and documents of the new and updated methods of Ruby 3.1.
|
data/Rakefile
CHANGED
@@ -34,6 +34,15 @@ rule ".c" => ".re" do |t|
|
|
34
34
|
puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake lexer` ⚠️⚠️⚠️"
|
35
35
|
end
|
36
36
|
|
37
|
+
task :annotate do
|
38
|
+
sh "rbs annotate core stdlib"
|
39
|
+
end
|
40
|
+
|
41
|
+
task :confirm_annotation do
|
42
|
+
puts "Testing if RBS docs are updated with respect to RDoc"
|
43
|
+
sh "git diff --exit-code core stdlib"
|
44
|
+
end
|
45
|
+
|
37
46
|
task :compile => "ext/rbs_extension/lexer.c"
|
38
47
|
|
39
48
|
task :test_doc do
|
@@ -73,6 +82,7 @@ task :validate => :compile do
|
|
73
82
|
|
74
83
|
if lib == ["net-http"]
|
75
84
|
lib << "uri"
|
85
|
+
lib << "timeout"
|
76
86
|
end
|
77
87
|
|
78
88
|
if lib == ["resolv"]
|
@@ -106,17 +116,40 @@ namespace :generate do
|
|
106
116
|
raise "Class name is necessary. e.g. rake 'generate:stdlib_test[String]'"
|
107
117
|
end
|
108
118
|
|
109
|
-
path = Pathname(ENV["RBS_GENERATE_TEST_PATH"] || "test/stdlib/#{klass}_test.rb")
|
110
|
-
raise "#{path} already exists!" if path.exist?
|
111
|
-
|
112
119
|
require "erb"
|
113
120
|
require "rbs"
|
114
121
|
|
122
|
+
class TestTarget
|
123
|
+
def initialize(klass)
|
124
|
+
@type_name = RBS::Namespace.parse(klass).to_type_name
|
125
|
+
end
|
126
|
+
|
127
|
+
def path
|
128
|
+
Pathname(ENV['RBS_GENERATE_TEST_PATH'] || "test/stdlib/#{file_name}_test.rb")
|
129
|
+
end
|
130
|
+
|
131
|
+
def file_name
|
132
|
+
@type_name.to_s.gsub(/\A::/, '').gsub(/::/, '_')
|
133
|
+
end
|
134
|
+
|
135
|
+
def to_s
|
136
|
+
@type_name.to_s
|
137
|
+
end
|
138
|
+
|
139
|
+
def absolute_type_name
|
140
|
+
@absolute_type_name ||= @type_name.absolute!
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
target = TestTarget.new(klass)
|
145
|
+
path = target.path
|
146
|
+
raise "#{path} already exists!" if path.exist?
|
147
|
+
|
115
148
|
class TestTemplateBuilder
|
116
|
-
attr_reader :
|
149
|
+
attr_reader :target, :env
|
117
150
|
|
118
|
-
def initialize(
|
119
|
-
@
|
151
|
+
def initialize(target)
|
152
|
+
@target = target
|
120
153
|
|
121
154
|
loader = RBS::EnvironmentLoader.new
|
122
155
|
Dir['stdlib/*'].each do |lib|
|
@@ -132,17 +165,17 @@ namespace :generate do
|
|
132
165
|
require_relative "test_helper"
|
133
166
|
|
134
167
|
<%- unless class_methods.empty? -%>
|
135
|
-
class <%=
|
168
|
+
class <%= target %>SingletonTest < Test::Unit::TestCase
|
136
169
|
include TypeAssertions
|
137
170
|
|
138
171
|
# library "pathname", "set", "securerandom" # Declare library signatures to load
|
139
|
-
testing "singleton(::<%=
|
172
|
+
testing "singleton(::<%= target %>)"
|
140
173
|
|
141
174
|
<%- class_methods.each do |method_name, definition| %>
|
142
175
|
def test_<%= test_name_for(method_name) %>
|
143
176
|
<%- definition.method_types.each do |method_type| -%>
|
144
177
|
assert_send_type "<%= method_type %>",
|
145
|
-
<%=
|
178
|
+
<%= target %>, :<%= method_name %>
|
146
179
|
<%- end -%>
|
147
180
|
end
|
148
181
|
<%- end -%>
|
@@ -150,17 +183,17 @@ namespace :generate do
|
|
150
183
|
<%- end -%>
|
151
184
|
|
152
185
|
<%- unless instance_methods.empty? -%>
|
153
|
-
class <%=
|
186
|
+
class <%= target %>Test < Test::Unit::TestCase
|
154
187
|
include TypeAssertions
|
155
188
|
|
156
189
|
# library "pathname", "set", "securerandom" # Declare library signatures to load
|
157
|
-
testing "::<%=
|
190
|
+
testing "::<%= target %>"
|
158
191
|
|
159
192
|
<%- instance_methods.each do |method_name, definition| %>
|
160
193
|
def test_<%= test_name_for(method_name) %>
|
161
194
|
<%- definition.method_types.each do |method_type| -%>
|
162
195
|
assert_send_type "<%= method_type %>",
|
163
|
-
<%=
|
196
|
+
<%= target %>.new, :<%= method_name %>
|
164
197
|
<%- end -%>
|
165
198
|
end
|
166
199
|
<%- end -%>
|
@@ -200,24 +233,20 @@ namespace :generate do
|
|
200
233
|
}.fetch(method_name, method_name)
|
201
234
|
end
|
202
235
|
|
203
|
-
def type_name
|
204
|
-
@type_name ||= RBS::TypeName.new(name: klass.to_sym, namespace: RBS::Namespace.new(path: [], absolute: true))
|
205
|
-
end
|
206
|
-
|
207
236
|
def class_methods
|
208
|
-
@class_methods ||= RBS::DefinitionBuilder.new(env: env).build_singleton(
|
209
|
-
definition.implemented_in ==
|
237
|
+
@class_methods ||= RBS::DefinitionBuilder.new(env: env).build_singleton(target.absolute_type_name).methods.select {|_, definition|
|
238
|
+
definition.implemented_in == target.absolute_type_name
|
210
239
|
}
|
211
240
|
end
|
212
241
|
|
213
242
|
def instance_methods
|
214
|
-
@instance_methods ||= RBS::DefinitionBuilder.new(env: env).build_instance(
|
215
|
-
definition.implemented_in ==
|
243
|
+
@instance_methods ||= RBS::DefinitionBuilder.new(env: env).build_instance(target.absolute_type_name).methods.select {|_, definition|
|
244
|
+
definition.implemented_in == target.absolute_type_name
|
216
245
|
}
|
217
246
|
end
|
218
247
|
end
|
219
248
|
|
220
|
-
path.write TestTemplateBuilder.new(
|
249
|
+
path.write TestTemplateBuilder.new(target).call
|
221
250
|
|
222
251
|
puts "Created: #{path}"
|
223
252
|
end
|
@@ -226,4 +255,6 @@ end
|
|
226
255
|
task :test_generate_stdlib do
|
227
256
|
sh "RBS_GENERATE_TEST_PATH=/tmp/Array_test.rb rake 'generate:stdlib_test[Array]'"
|
228
257
|
sh "ruby -c /tmp/Array_test.rb"
|
258
|
+
sh "RBS_GENERATE_TEST_PATH=/tmp/Thread_Mutex_test.rb rake 'generate:stdlib_test[Thread::Mutex]'"
|
259
|
+
sh "ruby -c /tmp/Thread_Mutex_test.rb"
|
229
260
|
end
|