rbs 1.7.0.beta.1 → 1.7.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +20 -1
  3. data/.gitignore +9 -1
  4. data/CHANGELOG.md +20 -9
  5. data/Rakefile +16 -1
  6. data/core/binding.rbs +2 -0
  7. data/core/complex.rbs +0 -2
  8. data/core/float.rbs +0 -2
  9. data/core/integer.rbs +0 -2
  10. data/core/numeric.rbs +7 -0
  11. data/core/object.rbs +1 -1
  12. data/core/proc.rbs +2 -0
  13. data/core/rational.rbs +0 -2
  14. data/core/unbound_method.rbs +13 -0
  15. data/docs/rbs_by_example.md +2 -2
  16. data/docs/syntax.md +2 -3
  17. data/ext/{rbs/extension → rbs_extension}/constants.c +0 -1
  18. data/ext/{rbs/extension → rbs_extension}/constants.h +0 -0
  19. data/ext/{rbs/extension → rbs_extension}/extconf.rb +1 -1
  20. data/ext/rbs_extension/lexer.c +2533 -0
  21. data/ext/{rbs/extension → rbs_extension}/lexer.h +33 -17
  22. data/ext/rbs_extension/lexer.re +140 -0
  23. data/ext/rbs_extension/lexstate.c +139 -0
  24. data/ext/{rbs/extension → rbs_extension}/location.c +0 -0
  25. data/ext/{rbs/extension → rbs_extension}/location.h +0 -0
  26. data/ext/{rbs/extension → rbs_extension}/main.c +1 -1
  27. data/ext/{rbs/extension → rbs_extension}/parser.c +6 -32
  28. data/ext/{rbs/extension → rbs_extension}/parser.h +0 -5
  29. data/ext/{rbs/extension → rbs_extension}/parserstate.c +0 -1
  30. data/ext/{rbs/extension → rbs_extension}/parserstate.h +0 -0
  31. data/ext/{rbs/extension → rbs_extension}/rbs_extension.h +1 -1
  32. data/ext/{rbs/extension → rbs_extension}/ruby_objs.c +84 -148
  33. data/ext/{rbs/extension → rbs_extension}/ruby_objs.h +0 -2
  34. data/ext/{rbs/extension → rbs_extension}/unescape.c +0 -0
  35. data/lib/rbs/collection/installer.rb +1 -0
  36. data/lib/rbs/collection/sources/git.rb +6 -1
  37. data/lib/rbs/errors.rb +14 -0
  38. data/lib/rbs/location_aux.rb +13 -0
  39. data/lib/rbs/parser_aux.rb +39 -0
  40. data/lib/rbs/parser_compat/lexer_error.rb +4 -0
  41. data/lib/rbs/parser_compat/located_value.rb +5 -0
  42. data/lib/rbs/parser_compat/semantics_error.rb +4 -0
  43. data/lib/rbs/parser_compat/syntax_error.rb +4 -0
  44. data/lib/rbs/prototype/helpers.rb +113 -0
  45. data/lib/rbs/prototype/rb.rb +2 -105
  46. data/lib/rbs/prototype/runtime.rb +16 -0
  47. data/lib/rbs/types.rb +2 -2
  48. data/lib/rbs/version.rb +1 -1
  49. data/lib/rbs.rb +13 -1
  50. data/rbs.gemspec +1 -1
  51. data/sig/errors.rbs +10 -0
  52. data/sig/location.rbs +5 -0
  53. data/sig/parser.rbs +5 -0
  54. data/sig/rbs.rbs +4 -0
  55. data/stdlib/io-console/0/io-console.rbs +137 -0
  56. data/stdlib/net-http/0/net-http.rbs +2 -1
  57. data/stdlib/tempfile/0/tempfile.rbs +4 -6
  58. metadata +27 -19
  59. data/ext/rbs/extension/lexer.c +0 -1070
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f2e7e51d08feb7b1a562ac43c679da8fc6f0a7cfc2ecef65e11c1e8c3d0d2b9
4
- data.tar.gz: d41ed33c0b5de01cd1746faa3572e56f651ecfc808c046cdb4166a0ec357138e
3
+ metadata.gz: 813a7a51e3db502f844756f75a52356945988ffc9e3230b6ff564d7864af02d4
4
+ data.tar.gz: 2589b291bd8fa87c7228d3204d2c6b4541617c450e64da2efc28fa658c92f0bb
5
5
  SHA512:
6
- metadata.gz: bc198dc7d40caaa802604cb1f633098955540d838c4e1adcca635da85880703378d981a4f37c528e7f4b3720fc6f152d7fc6c7bcb11ce3e0abba76fd14a6d47c
7
- data.tar.gz: 68c6643f9adf4761bec2a2ffb211e223cb732a37c341652c4625191b5ab6d6791c91196f3c3bc4fd5624d6d853558c33e28f8462f483f923badad8f38498a675
6
+ metadata.gz: 1acea4997b9a4d30da59bb02b0d7bb8afa63794c9102b35efd9627efab007195a60ad3e42ebd1595333cd5965acb1e4d1af576cd23e28efab83da6fed5ee649e
7
+ data.tar.gz: 4822b8fa8cb7fc652d847d90a1bf15215f8229eda1cd11ef9307e03a4abdc0be1ef3a5b117e6fdd00ec7ad43db8cfd914903125dcacea69a8e477b6b2d1cf917
@@ -15,10 +15,18 @@ jobs:
15
15
  - master-nightly-focal
16
16
  - 3.0-focal
17
17
  - 2.7-bionic
18
+ - 2.6-bionic
18
19
  job:
19
20
  - test
20
21
  - stdlib_test
21
22
  - rubocop validate test_doc build test_generate_stdlib
23
+ - lexer confirm_lexer
24
+ - lexer compile
25
+ exclude:
26
+ - container_tag: master-nightly-focal
27
+ job: confirm_lexer
28
+ - container_tag: 2.6-bionic
29
+ job: stdlib_test
22
30
  container:
23
31
  image: rubylang/ruby:${{ matrix.container_tag }}
24
32
  steps:
@@ -26,7 +34,18 @@ jobs:
26
34
  - name: Install dependencies
27
35
  run: |
28
36
  apt-get update
29
- apt-get install -y libdb-dev
37
+ apt-get install -y libdb-dev curl autoconf automake m4 libtool
38
+ - name: Install Re2c
39
+ if: contains(matrix.job, 'lexer')
40
+ run: |
41
+ cd /tmp
42
+ curl -L https://github.com/skvadrik/re2c/archive/refs/tags/2.2.tar.gz > re2c-2.2.tar.gz
43
+ tar xf re2c-2.2.tar.gz
44
+ cd re2c-2.2
45
+ autoreconf -i -W all
46
+ ./configure
47
+ make
48
+ make install
30
49
  - name: Update rubygems & bundler
31
50
  run: |
32
51
  ruby -v
data/.gitignore CHANGED
@@ -1,14 +1,22 @@
1
1
  /.bundle/
2
+ /vendor/bundle/
2
3
  /steep/.bundle/
4
+ /steep/vendor/bundle/
3
5
  /.yardoc
4
6
  /_yardoc/
5
7
  /coverage/
6
8
  /pkg/
7
9
  /spec/reports/
8
10
  /tmp/
9
- /.ruby-version
11
+ **/.ruby-version
12
+ **/.rvmrc
13
+ **/.rbfu-version
14
+ **/.rbenv-version
15
+ **/.versions.conf
10
16
  /lib/rbs/parser.output
11
17
  /vendor/sigs
12
18
  /Gemfile.lock
13
19
 
14
20
  lib/**/*.bundle
21
+ lib/**/*.so
22
+ lib/**/*.dll
data/CHANGELOG.md CHANGED
@@ -2,20 +2,31 @@
2
2
 
3
3
  ## master
4
4
 
5
- ## 1.7.0 (beta.1)
5
+ ## 1.7.0 (beta.5)
6
6
 
7
- ## Library changes
7
+ ### Signature updates
8
+
9
+ * io/console ([\#783](https://github.com/ruby/rbs/pull/783))
10
+ * `Net::HTTPRequest` ([\#784](https://github.com/ruby/rbs/pull/784))
11
+ * `Tempfile.new`, `Tempfile.create` ([\#792](https://github.com/ruby/rbs/pull/792), [\#791](https://github.com/ruby/rbs/pull/791))
12
+ * `#clone` ([#811](https://github.com/ruby/rbs/pull/811))
8
13
 
9
- * Replace RBS::Parser ([#788](https://github.com/ruby/rbs/pull/788))
14
+ ### Library changes
15
+
16
+ * Fix unexpected `CollectionNotAvailable` without `gems` from git source ([\#795](https://github.com/ruby/rbs/pull/795))
17
+ * Replace RBS::Parser ([#788](https://github.com/ruby/rbs/pull/788), [#789](https://github.com/ruby/rbs/pull/789))
18
+ * Print deprecation warning ([\#801](https://github.com/ruby/rbs/pull/801))
19
+ * Make `Parser::KEYWORDS` a hash ([\#804](https://github.com/ruby/rbs/pull/804))
20
+ * Use _partial clone_ for `rbs collection` installer ([#805](https://github.com/ruby/rbs/pull/805))
10
21
 
11
22
  ## 1.6.2 (2021-09-09)
12
23
 
13
- ## Signature updates
24
+ ### Signature updates
14
25
 
15
26
  * `Enumerator::Lazy#force` ([\#782](https://github.com/ruby/rbs/pull/782))
16
27
  * `IO.readlines` ([\#780](https://github.com/ruby/rbs/pull/780))
17
28
 
18
- ## Miscellaneous
29
+ ### Miscellaneous
19
30
 
20
31
  * Set `$XDG_CACHE_HOME` during test ([\#781](https://github.com/ruby/rbs/pull/781))
21
32
 
@@ -23,7 +34,7 @@
23
34
 
24
35
  This is a minor release including test fixes.
25
36
 
26
- ## Miscellaneous
37
+ ### Miscellaneous
27
38
 
28
39
  * Fix stdlib test for `Resolv::Hosts` by removing `/etc/hosts` dependency ([\#779](https://github.com/ruby/rbs/pull/779))
29
40
  * Fix bundler related test for test-bundled-gems ([\#778](https://github.com/ruby/rbs/pull/778))
@@ -35,18 +46,18 @@ The command helps you manage RBS files from gem_rbs_collection or other reposito
35
46
 
36
47
  This feature is a preview, and any feedback is welcome!
37
48
 
38
- ## Signature updates
49
+ ### Signature updates
39
50
 
40
51
  * objspace ([\#763](https://github.com/ruby/rbs/pull/763), [\#776](https://github.com/ruby/rbs/pull/776))
41
52
  * tempfile ([\#767](https://github.com/ruby/rbs/pull/767), [\#775](https://github.com/ruby/rbs/pull/775))
42
53
  * `IO#set_encoding_by_bom` ([\#106](https://github.com/ruby/rbs/pull/106))
43
54
  * `OpenSSL::PKey::EC#dh_compute_key` ([\#775](https://github.com/ruby/rbs/pull/775))
44
55
 
45
- ## Library changes
56
+ ### Library changes
46
57
 
47
58
  * Add `rbs collection` ([\#589](https://github.com/ruby/rbs/pull/589), [\#772](https://github.com/ruby/rbs/pull/772), [\#773](https://github.com/ruby/rbs/pull/773))
48
59
 
49
- ## Miscellaneous
60
+ ### Miscellaneous
50
61
 
51
62
  * Let `bin/annotate-with-rdoc` process nested constants/classes ([\#766](https://github.com/ruby/rbs/pull/766), [\#768](https://github.com/ruby/rbs/pull/768))
52
63
  * Stop printing version mismatch message in CI ([\#777](https://github.com/ruby/rbs/pull/777))
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ ruby = ENV["RUBY"] || RbConfig.ruby
9
9
  rbs = File.join(__dir__, "exe/rbs")
10
10
  bin = File.join(__dir__, "bin")
11
11
 
12
- Rake::ExtensionTask.new("rbs/extension")
12
+ Rake::ExtensionTask.new("rbs_extension")
13
13
 
14
14
  Rake::TestTask.new(:test => :compile) do |t|
15
15
  t.libs << "test"
@@ -21,6 +21,21 @@ end
21
21
 
22
22
  multitask :default => [:test, :stdlib_test, :rubocop, :validate, :test_doc]
23
23
 
24
+ task :lexer do
25
+ sh "re2c -W --no-generation-date -o ext/rbs_extension/lexer.c ext/rbs_extension/lexer.re"
26
+ end
27
+
28
+ task :confirm_lexer => :lexer do
29
+ puts "Testing if lexer.c is updated with respect to lexer.re"
30
+ sh "git diff --exit-code ext/rbs_extension/lexer.c"
31
+ end
32
+
33
+ rule ".c" => ".re" do |t|
34
+ puts "⚠️⚠️⚠️ #{t.name} is older than #{t.source}. You may need to run `rake lexer` ⚠️⚠️⚠️"
35
+ end
36
+
37
+ task :compile => "ext/rbs_extension/lexer.c"
38
+
24
39
  task :test_doc do
25
40
  files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
41
  `git ls-files -z`.split("\x0").select do |file| Pathname(file).extname == ".md" end
data/core/binding.rbs CHANGED
@@ -31,6 +31,8 @@
31
31
  class Binding
32
32
  public
33
33
 
34
+ def clone: () -> self
35
+
34
36
  # Evaluates the Ruby expression(s) in *string*, in the *binding*'s context. If
35
37
  # the optional *filename* and *lineno* parameters are present, they will be used
36
38
  # when reporting syntax errors.
data/core/complex.rbs CHANGED
@@ -165,8 +165,6 @@ class Complex < Numeric
165
165
 
166
166
  def ceil: (*untyped) -> bot
167
167
 
168
- def clone: (?freeze: bool) -> self
169
-
170
168
  def coerce: (Numeric) -> [ Complex, Complex ]
171
169
 
172
170
  # Returns the complex conjugate.
data/core/float.rbs CHANGED
@@ -171,8 +171,6 @@ class Float < Numeric
171
171
  def ceil: () -> Integer
172
172
  | (int digits) -> (Integer | Float)
173
173
 
174
- def clone: (?freeze: bool) -> self
175
-
176
174
  # Returns an array with both `numeric` and `float` represented as Float objects.
177
175
  #
178
176
  # This is achieved by converting `numeric` to a Float.
data/core/integer.rbs CHANGED
@@ -272,8 +272,6 @@ class Integer < Numeric
272
272
  #
273
273
  def chr: (?encoding) -> String
274
274
 
275
- def clone: (?freeze: bool) -> self
276
-
277
275
  # Returns an array with both a `numeric` and a `big` represented as Bignum
278
276
  # objects.
279
277
  #
data/core/numeric.rbs CHANGED
@@ -416,4 +416,11 @@ class Numeric
416
416
  # Returns `true` if `num` has a zero value.
417
417
  #
418
418
  def zero?: () -> bool
419
+
420
+ # Returns +self+.
421
+ #
422
+ # Raises an exception if the value for +freeze+ is neither +true+ nor +nil+.
423
+ #
424
+ # Related: Numeric#dup.
425
+ def clone: (?freeze: true?) -> self
419
426
  end
data/core/object.rbs CHANGED
@@ -76,7 +76,7 @@ class Object < BasicObject
76
76
  # This method may have class-specific behavior. If so, that behavior will be
77
77
  # documented under the #`initialize_copy` method of the class.
78
78
  #
79
- def clone: (?freeze: bool) -> self
79
+ def clone: (?freeze: bool?) -> self
80
80
 
81
81
  # Defines a singleton method in the receiver. The *method* parameter can be a
82
82
  # `Proc`, a `Method` or an `UnboundMethod` object. If a block is specified, it
data/core/proc.rbs CHANGED
@@ -210,6 +210,8 @@
210
210
  # {test: 1}.to_proc.call(:test) #=> 1
211
211
  # %i[test many keys].map(&{test: 1}) #=> [1, nil, nil]
212
212
  class Proc < Object
213
+ def clone: () -> self
214
+
213
215
  # Returns the number of mandatory arguments. If the block is declared to
214
216
  # take no arguments, returns 0. If the block is known to take exactly n
215
217
  # arguments, returns n. If the block has optional arguments, returns -n-1,
data/core/rational.rbs CHANGED
@@ -175,8 +175,6 @@ class Rational < Numeric
175
175
  def ceil: () -> Integer
176
176
  | (Integer digits) -> (Integer | Rational)
177
177
 
178
- def clone: (?freeze: bool) -> self
179
-
180
178
  def coerce: (Numeric) -> [Numeric, Numeric]
181
179
 
182
180
  def conj: () -> Rational
@@ -45,6 +45,19 @@
45
45
  # um.bind(t).call #=> :original
46
46
  #
47
47
  class UnboundMethod
48
+ # Returns a clone of this method.
49
+ #
50
+ # class A
51
+ # def foo
52
+ # return "bar"
53
+ # end
54
+ # end
55
+ #
56
+ # m = A.new.method(:foo)
57
+ # m.call # => "bar"
58
+ # n = m.clone.call # => "bar"
59
+ def clone: () -> self
60
+
48
61
  # Returns an indication of the number of arguments accepted by a method. Returns
49
62
  # a nonnegative integer for methods that take a fixed number of arguments. For
50
63
  # Ruby methods that take a variable number of arguments, returns -n-1, where n
@@ -229,9 +229,9 @@ end
229
229
 
230
230
  ```ruby
231
231
  # .rb
232
- [1,2,3,4,5].select {|num| num.even? }
232
+ [1,2,3,4,5].filter {|num| num.even? }
233
233
  # => [2, 4]
234
- %w[ a b c d e f ].select {|v| v =~ /[aeiou]/ }
234
+ %w[ a b c d e f ].filter {|v| v =~ /[aeiou]/ }
235
235
  # => ["a", "e"]
236
236
  [1,2,3,4,5].filter
237
237
  ```
data/docs/syntax.md CHANGED
@@ -110,10 +110,10 @@ Array[Integer | String] # Array of Integer or String
110
110
  Intersection type denotes _a type of all of the given types_.
111
111
 
112
112
  ```
113
- Integer & String # Integer and String
113
+ _Reader & _Writer # _Reader and _Writer
114
114
  ```
115
115
 
116
- Note that `&` has higher precedence than `|` that `Integer & String | Symbol` is `(Integer & String) | Symbol`.
116
+ Note that `&` has higher precedence than `|` that `A & B | C` is `(A & B) | C`.
117
117
 
118
118
  ### Optional type
119
119
 
@@ -289,7 +289,6 @@ _method-member_ ::= `def` _method-name_ `:` _method-types_ # Instance
289
289
  | `def self?.` _method-name_ `:` _method-types_ # Singleton and instance method
290
290
 
291
291
  _method-types_ ::= # Empty
292
- | `super` # `super` overloading
293
292
  | _type-parameters_ _method-type_ `|` _method-types_ # Overloading types
294
293
  | `...` # Overloading for duplicate definitions
295
294
 
@@ -1,7 +1,6 @@
1
1
  #include "rbs_extension.h"
2
2
 
3
3
  VALUE RBS_Parser;
4
- VALUE RBS_Parser_KEYWORDS;
5
4
 
6
5
  VALUE RBS;
7
6
  VALUE RBS_AST;
File without changes
@@ -1,3 +1,3 @@
1
1
  require 'mkmf'
2
2
  $INCFLAGS << " -I$(top_srcdir)" if $extmk
3
- create_makefile 'extension'
3
+ create_makefile 'rbs_extension'