syntax_tree-rbs 0.5.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9379d527cf106bd1e0e5618effb95196b7adfab8e06760ac96d45c16b55c3d51
4
- data.tar.gz: d4856abe3f565b24b279658bba41deb6defd14dcdfc6abab8ed192fc36edee9e
3
+ metadata.gz: 7b66221375118043b0ba6f425de966904df6a558be4e2d07f67455947de1cc55
4
+ data.tar.gz: e6e0e6df40192b49c6e1dc073a55803bcdebb2523024bdf7f6a71ebe6736f93f
5
5
  SHA512:
6
- metadata.gz: 63422cb59ea92a9c6b6c43b1d8a67af97aabe669fab28931f09b2b635cba68faf8a6812ca8c415483754211fb080925412b6cd209651e5cd815515a40631a5cb
7
- data.tar.gz: 8100b6833c2082b7f2708a4be9dce498560451336183c9f6a95d777795c59c42da676c4ceab605a662779548f8570183a3a3d4a337f63cecde3d8a0224016403
6
+ metadata.gz: 0253f026e5248ec173de6c2f135f7b60135655c55883c94767ba5217f73066f45e7c0eefeff4205208a61112ea8ec1b857416023831f14487b9483a579e04a4c
7
+ data.tar.gz: c2009e30dafd9c04b95f688a9353d2b20f947a6d9b9f7f98d58b71bf92a91c8c843947b85d96274777726124272f1fae0591f24536c53517d7af7c96e9918f79
@@ -4,3 +4,7 @@ updates:
4
4
  directory: "/"
5
5
  schedule:
6
6
  interval: "daily"
7
+ - package-ecosystem: "github-actions"
8
+ directory: "/"
9
+ schedule:
10
+ interval: "daily"
@@ -0,0 +1,22 @@
1
+ name: Dependabot auto-merge
2
+ on: pull_request
3
+
4
+ permissions:
5
+ contents: write
6
+ pull-requests: write
7
+
8
+ jobs:
9
+ dependabot:
10
+ runs-on: ubuntu-latest
11
+ if: ${{ github.actor == 'dependabot[bot]' }}
12
+ steps:
13
+ - name: Dependabot metadata
14
+ id: metadata
15
+ uses: dependabot/fetch-metadata@v1.3.6
16
+ with:
17
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
18
+ - name: Enable auto-merge for Dependabot PRs
19
+ run: gh pr merge --auto --merge "$PR_URL"
20
+ env:
21
+ PR_URL: ${{github.event.pull_request.html_url}}
22
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
@@ -1,7 +1,9 @@
1
1
  name: Main
2
+
2
3
  on:
3
4
  - push
4
- - pull_request_target
5
+ - pull_request
6
+
5
7
  jobs:
6
8
  ci:
7
9
  strategy:
@@ -11,14 +13,15 @@ jobs:
11
13
  - '2.7.0'
12
14
  - '3.0'
13
15
  - '3.1'
16
+ - '3.2'
14
17
  gemfile:
15
18
  - rbs1
16
19
  - rbs2
20
+ - rbs3
17
21
  name: CI
18
22
  runs-on: ubuntu-latest
19
23
  env:
20
24
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
21
- CI: true
22
25
  steps:
23
26
  - uses: actions/checkout@master
24
27
  - uses: ruby/setup-ruby@v1
@@ -29,17 +32,3 @@ jobs:
29
32
  run: |
30
33
  bundle exec rake test
31
34
  bundle exec rake stree:check
32
- automerge:
33
- name: AutoMerge
34
- needs: ci
35
- runs-on: ubuntu-latest
36
- if: github.event_name == 'pull_request_target' && github.actor == 'dependabot[bot]'
37
- steps:
38
- - uses: actions/github-script@v3
39
- with:
40
- script: |
41
- github.pulls.merge({
42
- owner: context.payload.repository.owner.login,
43
- repo: context.payload.repository.name,
44
- pull_number: context.payload.pull_request.number
45
- })
data/CHANGELOG.md CHANGED
@@ -6,9 +6,20 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [0.5.1]
9
+ ## [1.0.0] - 2023-03-07
10
10
 
11
- ### Added - 2022-09-03
11
+ ### Added
12
+
13
+ - Support for RBS 3.
14
+
15
+ ### Changed
16
+
17
+ - The `visit_alias_declaration` method has been renamed to `visit_type_alias` to better reflect RBS 3.
18
+ - The `visit_alias_member` method has been renamed to `visit_alias` to better reflect RBS 3.
19
+
20
+ ## [0.5.1] - 2022-09-03
21
+
22
+ ### Added
12
23
 
13
24
  - Ruby 2.7.0 is now supported, not just 2.7.3 and above. This allows usage on Ubuntu 20.04 by default.
14
25
 
@@ -48,7 +59,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
48
59
 
49
60
  - 🎉 Initial release! 🎉
50
61
 
51
- [unreleased]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.5.1...HEAD
62
+ [unreleased]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v1.0.0...HEAD
63
+ [1.0.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.5.1...v1.0.0
52
64
  [0.5.1]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.5.0...v0.5.1
53
65
  [0.5.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.4.0...v0.5.0
54
66
  [0.4.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.3.0...v0.4.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree-rbs (0.5.1)
4
+ syntax_tree-rbs (1.0.0)
5
5
  prettier_print
6
6
  rbs
7
7
  syntax_tree (>= 2.0.1)
@@ -10,24 +10,21 @@ GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
12
  docile (1.4.0)
13
- minitest (5.16.3)
14
- prettier_print (0.1.0)
13
+ minitest (5.18.0)
14
+ prettier_print (1.2.0)
15
15
  rake (13.0.6)
16
- rbs (2.6.0)
17
- simplecov (0.21.2)
16
+ rbs (3.0.3)
17
+ simplecov (0.22.0)
18
18
  docile (~> 1.1)
19
19
  simplecov-html (~> 0.11)
20
20
  simplecov_json_formatter (~> 0.1)
21
21
  simplecov-html (0.12.3)
22
22
  simplecov_json_formatter (0.1.4)
23
- syntax_tree (3.6.0)
24
- prettier_print
23
+ syntax_tree (6.0.2)
24
+ prettier_print (>= 1.2.0)
25
25
 
26
26
  PLATFORMS
27
27
  arm64-darwin-21
28
- x86_64-darwin-19
29
- x86_64-darwin-21
30
- x86_64-linux
31
28
 
32
29
  DEPENDENCIES
33
30
  bundler
@@ -37,4 +34,4 @@ DEPENDENCIES
37
34
  syntax_tree-rbs!
38
35
 
39
36
  BUNDLED WITH
40
- 2.3.6
37
+ 2.3.24
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gemspec path: ".."
6
+
7
+ gem "rbs", "~> 3"
@@ -48,13 +48,6 @@ module RBS
48
48
  include SyntaxTree::RBS::Entrypoints
49
49
  end
50
50
 
51
- # type foo = String
52
- class Alias
53
- def accept(visitor)
54
- visitor.visit_alias_declaration(self)
55
- end
56
- end
57
-
58
51
  # class Foo end
59
52
  class Class
60
53
  def accept(visitor)
@@ -89,6 +82,13 @@ module RBS
89
82
  visitor.visit_module_declaration(self)
90
83
  end
91
84
  end
85
+
86
+ # type foo = String
87
+ class TypeAlias
88
+ def accept(visitor)
89
+ visitor.visit_type_alias(self)
90
+ end
91
+ end
92
92
  end
93
93
 
94
94
  module Members
@@ -100,7 +100,7 @@ module RBS
100
100
  # alias self.foo self.bar
101
101
  class Alias
102
102
  def accept(visitor)
103
- visitor.visit_alias_member(self)
103
+ visitor.visit_alias(self)
104
104
  end
105
105
  end
106
106
 
@@ -13,26 +13,8 @@ module SyntaxTree
13
13
  q.text(node.to_s)
14
14
  end
15
15
 
16
- # Visit a RBS::AST::Declarations::Alias node.
17
- def visit_alias_declaration(node)
18
- print_comment(node)
19
- print_annotations(node)
20
-
21
- q.group do
22
- q.text("type ")
23
- visit(node.name)
24
- q.text(" =")
25
- q.group do
26
- q.indent do
27
- q.breakable
28
- visit(node.type)
29
- end
30
- end
31
- end
32
- end
33
-
34
16
  # Visit a RBS::AST::Members::Alias node.
35
- def visit_alias_member(node)
17
+ def visit_alias(node)
36
18
  print_comment(node)
37
19
  print_annotations(node)
38
20
 
@@ -299,9 +281,9 @@ module SyntaxTree
299
281
  )
300
282
  q.text(":")
301
283
 
302
- if node.types.length == 1 && !node.overload?
284
+ if node.overloads.length == 1 && !node.overloading?
303
285
  q.text(" ")
304
- print_method_signature(node.types.first)
286
+ print_method_overload(node.overloads.first)
305
287
  else
306
288
  separator =
307
289
  lambda do
@@ -312,11 +294,11 @@ module SyntaxTree
312
294
  q.group do
313
295
  q.indent do
314
296
  q.breakable
315
- q.seplist(node.types, separator) do |type|
316
- print_method_signature(type)
297
+ q.seplist(node.overloads, separator) do |overload|
298
+ print_method_overload(overload)
317
299
  end
318
300
 
319
- if node.overload?
301
+ if node.overloading?
320
302
  separator.call
321
303
  q.text("...")
322
304
  end
@@ -452,6 +434,24 @@ module SyntaxTree
452
434
  end
453
435
  end
454
436
 
437
+ # Visit a RBS::AST::Declarations::TypeAlias node.
438
+ def visit_type_alias(node)
439
+ print_comment(node)
440
+ print_annotations(node)
441
+
442
+ q.group do
443
+ q.text("type ")
444
+ visit(node.name)
445
+ q.text(" =")
446
+ q.group do
447
+ q.indent do
448
+ q.breakable
449
+ visit(node.type)
450
+ end
451
+ end
452
+ end
453
+ end
454
+
455
455
  # Visit a RBS::TypeName node.
456
456
  def visit_type_name(node)
457
457
  q.text(node.to_s)
@@ -550,6 +550,11 @@ module SyntaxTree
550
550
  end
551
551
  end
552
552
 
553
+ # (T t) -> void
554
+ def print_method_overload(node)
555
+ print_method_signature(node.method_type)
556
+ end
557
+
553
558
  # (T t) -> void
554
559
  def print_method_signature(node)
555
560
  q.group do
@@ -13,18 +13,8 @@ module SyntaxTree
13
13
  q.text("(#{node.class.name.downcase})")
14
14
  end
15
15
 
16
- # Visit a RBS::AST::Declarations::Alias node.
17
- def visit_alias_declaration(node)
18
- group("constant") do
19
- print_comment(node)
20
- print_annotations(node)
21
- visit_field("name", node.name)
22
- visit_field("type", node.type)
23
- end
24
- end
25
-
26
16
  # Visit a RBS::AST::Members::Alias node.
27
- def visit_alias_member(node)
17
+ def visit_alias(node)
28
18
  group("alias") do
29
19
  print_comment(node)
30
20
  print_annotations(node)
@@ -209,12 +199,14 @@ module SyntaxTree
209
199
  pp_field("kind", node.kind)
210
200
  pp_field("name", node.name)
211
201
  pp_field("visibility", node.visibility) if node.visibility
212
- bool_field("overload") if node.overload?
202
+ bool_field("overload") if node.overloading?
213
203
 
214
204
  q.breakable
215
- q.text("types=")
205
+ q.text("overloads=")
216
206
  q.group(2, "[", "]") do
217
- q.seplist(node.types) { |type| print_method_signature(type) }
207
+ q.seplist(node.overloads) do |overload|
208
+ print_method_overload(overload)
209
+ end
218
210
  end
219
211
  end
220
212
  end
@@ -293,6 +285,16 @@ module SyntaxTree
293
285
  group("tuple") { pp_field("types", node.types) }
294
286
  end
295
287
 
288
+ # Visit a RBS::AST::Declarations::TypeAlias node.
289
+ def visit_type_alias(node)
290
+ group("constant") do
291
+ print_comment(node)
292
+ print_annotations(node)
293
+ visit_field("name", node.name)
294
+ visit_field("type", node.type)
295
+ end
296
+ end
297
+
296
298
  # Visit a RBS::TypeName node.
297
299
  def visit_type_name(node)
298
300
  group("type-name") do
@@ -404,6 +406,10 @@ module SyntaxTree
404
406
  end
405
407
  end
406
408
 
409
+ def print_method_overload(node)
410
+ print_method_signature(node.method_type)
411
+ end
412
+
407
413
  def print_method_signature(node)
408
414
  if node.respond_to?(:type_params) && node.type_params.any?
409
415
  q.breakable
@@ -1,12 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if defined?(RBS::AST::Declarations::ModuleTypeParams)
3
+ # If we're using RBS 1, then we need to include these monkey-patches to have a
4
+ # consistent interface in RBS 2+.
5
+ if RBS::VERSION < "2.0.0"
4
6
  require "delegate"
5
7
 
6
- # Previously there were specialized types that didn't include some additional
7
- # information for type params. So here we wrap them up in order to maintain the
8
- # same API.
9
- module ShimTypeParams
8
+ module RBS::AST::Declarations
10
9
  class ShimTypeParam < SimpleDelegator
11
10
  def unchecked?
12
11
  false
@@ -17,29 +16,63 @@ if defined?(RBS::AST::Declarations::ModuleTypeParams)
17
16
  end
18
17
  end
19
18
 
20
- # Overriding the type params method to return an array of wrapped objects.
21
- def type_params
22
- super.params.map { |param| ShimTypeParam.new(param) }
19
+ # Previously there were specialized types that didn't include some
20
+ # additional information for type params. So here we wrap them up in order
21
+ # to maintain the same API.
22
+ module ShimTypeParams
23
+ def type_params
24
+ super.params.map { |param| ShimTypeParam.new(param) }
25
+ end
23
26
  end
24
- end
25
27
 
26
- module RBS::AST::Declarations
27
28
  Alias.prepend(ShimTypeParams)
28
29
  Class.prepend(ShimTypeParams)
29
30
  Interface.prepend(ShimTypeParams)
30
31
  Module.prepend(ShimTypeParams)
31
32
  end
32
- end
33
33
 
34
- # Previously this attribute didn't exist on some nodes. So if they don't have
35
- # it, we're just going to apply it and have it return nil.
36
- module ShimVisibility
37
- def visibility
34
+ module RBS::AST::Members::Attribute
35
+ def visibility
36
+ end
37
+ end
38
+
39
+ class RBS::AST::Members::MethodDefinition
40
+ def visibility
41
+ end
38
42
  end
39
43
  end
40
44
 
41
- module RBS::AST::Members
42
- [AttrAccessor, AttrReader, AttrWriter, MethodDefinition].each do |klass|
43
- klass.include(ShimVisibility) unless klass.method_defined?(:visibility)
45
+ # If we're using RBS 2, then we need to include these monkey-patches to have a
46
+ # consistent interface in RBS 3+.
47
+ if RBS::VERSION < "3.0.0"
48
+ class RBS::AST::Declarations::Alias
49
+ def accept(visitor)
50
+ visitor.visit_type_alias(self)
51
+ end
52
+ end
53
+
54
+ class RBS::AST::Members::MethodDefinition
55
+ class MethodOverloadShim
56
+ attr_reader :method_type
57
+
58
+ def initialize(method_type)
59
+ @method_type = method_type
60
+ end
61
+ end
62
+
63
+ alias overloading? overload?
64
+
65
+ def overloads
66
+ types.map { |method_type| MethodOverloadShim.new(method_type) }
67
+ end
68
+ end
69
+
70
+ module SyntaxTree::RBS
71
+ class << self
72
+ undef parse
73
+ def parse(source)
74
+ Root.new(::RBS::Parser.parse_signature(source))
75
+ end
76
+ end
44
77
  end
45
78
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SyntaxTree
4
4
  module RBS
5
- VERSION = "0.5.1"
5
+ VERSION = "1.0.0"
6
6
  end
7
7
  end
@@ -4,9 +4,6 @@ require "prettier_print"
4
4
  require "rbs"
5
5
  require "syntax_tree"
6
6
 
7
- require_relative "rbs/shims"
8
- require_relative "rbs/version"
9
-
10
7
  module SyntaxTree
11
8
  module RBS
12
9
  # This is the parent class of any of the visitors that we define in this
@@ -53,7 +50,8 @@ module SyntaxTree
53
50
  end
54
51
 
55
52
  def parse(source)
56
- Root.new(::RBS::Parser.parse_signature(source))
53
+ _, _, declarations = ::RBS::Parser.parse_signature(source)
54
+ Root.new(declarations)
57
55
  end
58
56
 
59
57
  def read(filepath)
@@ -65,6 +63,8 @@ module SyntaxTree
65
63
  register_handler(".rbs", RBS)
66
64
  end
67
65
 
66
+ require_relative "rbs/shims"
68
67
  require_relative "rbs/entrypoints"
69
68
  require_relative "rbs/format"
70
69
  require_relative "rbs/pretty_print"
70
+ require_relative "rbs/version"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntax_tree-rbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Newton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-19 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prettier_print
@@ -116,6 +116,7 @@ extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
118
  - ".github/dependabot.yml"
119
+ - ".github/workflows/auto-merge.yml"
119
120
  - ".github/workflows/main.yml"
120
121
  - ".gitignore"
121
122
  - CHANGELOG.md
@@ -130,6 +131,7 @@ files:
130
131
  - bin/setup
131
132
  - gemfiles/rbs1.gemfile
132
133
  - gemfiles/rbs2.gemfile
134
+ - gemfiles/rbs3.gemfile
133
135
  - lib/syntax_tree/rbs.rb
134
136
  - lib/syntax_tree/rbs/entrypoints.rb
135
137
  - lib/syntax_tree/rbs/format.rb