syntax_tree-rbs 0.5.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22d2b985f00c4722c74fad681a8ee586a6bebbf3fbc2aa0a6476fce331379bed
4
- data.tar.gz: 9d077e966f23b4777f0d4a8d41ff4a6cde08493c8759f8b399d2f494cc3abc2f
3
+ metadata.gz: 7b66221375118043b0ba6f425de966904df6a558be4e2d07f67455947de1cc55
4
+ data.tar.gz: e6e0e6df40192b49c6e1dc073a55803bcdebb2523024bdf7f6a71ebe6736f93f
5
5
  SHA512:
6
- metadata.gz: fc9cc4ff0703d4ade8295ff7784082f1d4372340ba2bb5094c9f928d5c11726c08437669a8a3b9fb001715b859f2085ce2ca543176541fbebf9ad61ee3fd249b
7
- data.tar.gz: ad7b5984c280199385c501a743587c06455db0a0d86ffc7072971597113bf3aad4b9a6de794d5d3f2577fba26a95d682a53ccb40d4facbafc767d9f45834e59c
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,24 +1,27 @@
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:
8
10
  fail-fast: false
9
11
  matrix:
10
12
  ruby:
11
- - '2.7.5'
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,6 +6,23 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.0] - 2023-03-07
10
+
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
23
+
24
+ - Ruby 2.7.0 is now supported, not just 2.7.3 and above. This allows usage on Ubuntu 20.04 by default.
25
+
9
26
  ## [0.5.0] - 2022-07-07
10
27
 
11
28
  ### Added
@@ -42,7 +59,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
42
59
 
43
60
  - 🎉 Initial release! 🎉
44
61
 
45
- [unreleased]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.5.0...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
64
+ [0.5.1]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.5.0...v0.5.1
46
65
  [0.5.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.4.0...v0.5.0
47
66
  [0.4.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.3.0...v0.4.0
48
67
  [0.3.0]: https://github.com/ruby-syntax-tree/syntax_tree-rbs/compare/v0.2.0...v0.3.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree-rbs (0.5.0)
4
+ syntax_tree-rbs (1.0.0)
5
5
  prettier_print
6
6
  rbs
7
7
  syntax_tree (>= 2.0.1)
@@ -10,23 +10,21 @@ GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
12
  docile (1.4.0)
13
- minitest (5.16.2)
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.0.0)
24
- prettier_print
23
+ syntax_tree (6.0.2)
24
+ prettier_print (>= 1.2.0)
25
25
 
26
26
  PLATFORMS
27
- x86_64-darwin-19
28
- x86_64-darwin-21
29
- x86_64-linux
27
+ arm64-darwin-21
30
28
 
31
29
  DEPENDENCIES
32
30
  bundler
@@ -36,4 +34,4 @@ DEPENDENCIES
36
34
  syntax_tree-rbs!
37
35
 
38
36
  BUNDLED WITH
39
- 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.0"
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
@@ -24,8 +21,8 @@ module SyntaxTree
24
21
  class Formatter < PrettierPrint
25
22
  attr_reader :source
26
23
 
27
- def initialize(source, ...)
28
- super(...)
24
+ def initialize(source, *rest)
25
+ super(*rest)
29
26
  @source = source
30
27
  @force_parens = false
31
28
  end
@@ -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.0
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-07-07 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
@@ -157,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
159
  - !ruby/object:Gem::Version
158
160
  version: '0'
159
161
  requirements: []
160
- rubygems_version: 3.3.3
162
+ rubygems_version: 3.3.21
161
163
  signing_key:
162
164
  specification_version: 4
163
165
  summary: Syntax Tree support for RBS