rbs 0.3.1 → 0.4.0
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/CHANGELOG.md +9 -0
- data/COPYING +1 -1
- data/Gemfile +2 -2
- data/README.md +2 -2
- data/Rakefile +1 -1
- data/bin/test_runner.rb +0 -2
- data/docs/sigs.md +6 -6
- data/docs/stdlib.md +3 -3
- data/lib/rbs/ast/declarations.rb +9 -1
- data/lib/rbs/cli.rb +2 -2
- data/lib/rbs/parser.y +2 -2
- data/lib/rbs/prototype/rb.rb +18 -4
- data/lib/rbs/prototype/runtime.rb +23 -0
- data/lib/rbs/version.rb +1 -1
- data/rbs.gemspec +1 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +327 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +245 -0
- data/schema/methodType.json +44 -0
- data/schema/types.json +299 -0
- data/stdlib/builtin/encoding.rbs +2 -0
- data/stdlib/builtin/enumerable.rbs +1 -1
- data/stdlib/builtin/enumerator.rbs +3 -1
- data/stdlib/builtin/fiber.rbs +5 -1
- data/stdlib/builtin/symbol.rbs +1 -1
- data/stdlib/fiber/fiber.rbs +117 -0
- metadata +25 -2
data/stdlib/builtin/encoding.rbs
CHANGED
@@ -385,7 +385,7 @@ module Enumerable[unchecked out Elem, out Return]: _Each[Elem, Return]
|
|
385
385
|
| () { (Elem arg0) -> untyped } -> self
|
386
386
|
|
387
387
|
# variadic type parameter is not supported yet
|
388
|
-
# https://github.com/ruby/
|
388
|
+
# https://github.com/ruby/rbs/issues/21
|
389
389
|
def zip: [Elem2, Return2] (::Enumerable[Elem2, Return2] enum) -> ::Array[[Elem, Elem2 | nil]]
|
390
390
|
| [U, Elem2, Return2] (::Enumerable[Elem2, Return2]) { ([Elem, Elem2 | nil]) -> U } -> nil
|
391
391
|
|
@@ -250,9 +250,11 @@ class Enumerator::Lazy[out Elem, out Return] < Enumerator[Elem, Return]
|
|
250
250
|
end
|
251
251
|
|
252
252
|
class Enumerator::Yielder < Object
|
253
|
-
def <<: (
|
253
|
+
def <<: (untyped arg0) -> void
|
254
254
|
|
255
255
|
def yield: (*untyped arg0) -> void
|
256
|
+
|
257
|
+
def to_proc: () -> Proc
|
256
258
|
end
|
257
259
|
|
258
260
|
class Enumerator::Chain[out Elem, out Return] < Object
|
data/stdlib/builtin/fiber.rbs
CHANGED
@@ -62,7 +62,11 @@
|
|
62
62
|
class Fiber < Object
|
63
63
|
def self.yield: (*untyped args) -> untyped
|
64
64
|
|
65
|
-
def initialize: () { () ->
|
65
|
+
def initialize: () { () -> untyped } -> void
|
66
66
|
|
67
67
|
def resume: (*untyped args) -> untyped
|
68
|
+
|
69
|
+
def raise: () -> untyped
|
70
|
+
| (string message) -> untyped
|
71
|
+
| (_Exception exception, ?string message, ?Array[String] backtrace) -> untyped
|
68
72
|
end
|
data/stdlib/builtin/symbol.rbs
CHANGED
@@ -152,7 +152,7 @@ class Symbol
|
|
152
152
|
# In general, `to_sym` returns the Symbol corresponding to an object. As *sym*
|
153
153
|
# is already a symbol, `self` is returned in this case.
|
154
154
|
#
|
155
|
-
def intern: () ->
|
155
|
+
def intern: () -> Symbol
|
156
156
|
|
157
157
|
# Same as `sym.to_s.length`.
|
158
158
|
#
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# Fibers are primitives for implementing light weight cooperative concurrency in
|
2
|
+
# Ruby. Basically they are a means of creating code blocks that can be paused
|
3
|
+
# and resumed, much like threads. The main difference is that they are never
|
4
|
+
# preempted and that the scheduling must be done by the programmer and not the
|
5
|
+
# VM.
|
6
|
+
#
|
7
|
+
# As opposed to other stackless light weight concurrency models, each fiber
|
8
|
+
# comes with a stack. This enables the fiber to be paused from deeply nested
|
9
|
+
# function calls within the fiber block. See the ruby(1) manpage to configure
|
10
|
+
# the size of the fiber stack(s).
|
11
|
+
#
|
12
|
+
# When a fiber is created it will not run automatically. Rather it must be
|
13
|
+
# explicitly asked to run using the Fiber#resume method. The code running inside
|
14
|
+
# the fiber can give up control by calling Fiber.yield in which case it yields
|
15
|
+
# control back to caller (the caller of the Fiber#resume).
|
16
|
+
#
|
17
|
+
# Upon yielding or termination the Fiber returns the value of the last executed
|
18
|
+
# expression
|
19
|
+
#
|
20
|
+
# For instance:
|
21
|
+
#
|
22
|
+
# fiber = Fiber.new do
|
23
|
+
# Fiber.yield 1
|
24
|
+
# 2
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# puts fiber.resume
|
28
|
+
# puts fiber.resume
|
29
|
+
# puts fiber.resume
|
30
|
+
#
|
31
|
+
# *produces*
|
32
|
+
#
|
33
|
+
# 1
|
34
|
+
# 2
|
35
|
+
# FiberError: dead fiber called
|
36
|
+
#
|
37
|
+
# The Fiber#resume method accepts an arbitrary number of parameters, if it is
|
38
|
+
# the first call to #resume then they will be passed as block arguments.
|
39
|
+
# Otherwise they will be the return value of the call to Fiber.yield
|
40
|
+
#
|
41
|
+
# Example:
|
42
|
+
#
|
43
|
+
# fiber = Fiber.new do |first|
|
44
|
+
# second = Fiber.yield first + 2
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# puts fiber.resume 10
|
48
|
+
# puts fiber.resume 1_000_000
|
49
|
+
# puts fiber.resume "The fiber will be dead before I can cause trouble"
|
50
|
+
#
|
51
|
+
# *produces*
|
52
|
+
#
|
53
|
+
# 12
|
54
|
+
# 1000000
|
55
|
+
# FiberError: dead fiber called
|
56
|
+
#
|
57
|
+
extension Fiber (Fiber)
|
58
|
+
# Returns the current fiber. You need to `require 'fiber'` before using this
|
59
|
+
# method. If you are not running in the context of a fiber this method will
|
60
|
+
# return the root fiber.
|
61
|
+
#
|
62
|
+
def self.current: () -> Fiber
|
63
|
+
|
64
|
+
public
|
65
|
+
|
66
|
+
# Returns true if the fiber can still be resumed (or transferred to). After
|
67
|
+
# finishing execution of the fiber block this method will always return false.
|
68
|
+
# You need to `require 'fiber'` before using this method.
|
69
|
+
#
|
70
|
+
def alive?: () -> bool
|
71
|
+
|
72
|
+
# Transfer control to another fiber, resuming it from where it last stopped or
|
73
|
+
# starting it if it was not resumed before. The calling fiber will be suspended
|
74
|
+
# much like in a call to Fiber.yield. You need to `require 'fiber'` before using
|
75
|
+
# this method.
|
76
|
+
#
|
77
|
+
# The fiber which receives the transfer call is treats it much like a resume
|
78
|
+
# call. Arguments passed to transfer are treated like those passed to resume.
|
79
|
+
#
|
80
|
+
# You cannot call `resume` on a fiber that has been transferred to. If you call
|
81
|
+
# `transfer` on a fiber, and later call `resume` on the the fiber, a
|
82
|
+
# `FiberError` will be raised. Once you call `transfer` on a fiber, the only way
|
83
|
+
# to resume processing the fiber is to call `transfer` on it again.
|
84
|
+
#
|
85
|
+
# Example:
|
86
|
+
#
|
87
|
+
# fiber1 = Fiber.new do
|
88
|
+
# puts "In Fiber 1"
|
89
|
+
# Fiber.yield
|
90
|
+
# puts "In Fiber 1 again"
|
91
|
+
# end
|
92
|
+
#
|
93
|
+
# fiber2 = Fiber.new do
|
94
|
+
# puts "In Fiber 2"
|
95
|
+
# fiber1.transfer
|
96
|
+
# puts "Never see this message"
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# fiber3 = Fiber.new do
|
100
|
+
# puts "In Fiber 3"
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# fiber2.resume
|
104
|
+
# fiber3.resume
|
105
|
+
# fiber1.resume rescue (p $!)
|
106
|
+
# fiber1.transfer
|
107
|
+
#
|
108
|
+
# *produces*
|
109
|
+
#
|
110
|
+
# In Fiber 2
|
111
|
+
# In Fiber 1
|
112
|
+
# In Fiber 3
|
113
|
+
# #<FiberError: cannot resume transferred Fiber>
|
114
|
+
# In Fiber 1 again
|
115
|
+
#
|
116
|
+
def transfer: (*untyped) -> untyped
|
117
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 2.3.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: json-schema
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.8'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.8'
|
125
139
|
description: RBS is the language for type signatures for Ruby and standard library
|
126
140
|
definitions.
|
127
141
|
email:
|
@@ -191,6 +205,14 @@ files:
|
|
191
205
|
- lib/rbs/writer.rb
|
192
206
|
- lib/ruby/signature.rb
|
193
207
|
- rbs.gemspec
|
208
|
+
- schema/annotation.json
|
209
|
+
- schema/comment.json
|
210
|
+
- schema/decls.json
|
211
|
+
- schema/function.json
|
212
|
+
- schema/location.json
|
213
|
+
- schema/members.json
|
214
|
+
- schema/methodType.json
|
215
|
+
- schema/types.json
|
194
216
|
- stdlib/abbrev/abbrev.rbs
|
195
217
|
- stdlib/base64/base64.rbs
|
196
218
|
- stdlib/benchmark/benchmark.rbs
|
@@ -253,6 +275,7 @@ files:
|
|
253
275
|
- stdlib/coverage/coverage.rbs
|
254
276
|
- stdlib/csv/csv.rbs
|
255
277
|
- stdlib/erb/erb.rbs
|
278
|
+
- stdlib/fiber/fiber.rbs
|
256
279
|
- stdlib/find/find.rbs
|
257
280
|
- stdlib/ipaddr/ipaddr.rbs
|
258
281
|
- stdlib/json/json.rbs
|