shopify / rbi Goto Github PK
View Code? Open in Web Editor NEWRBI generation framework
License: MIT License
RBI generation framework
License: MIT License
When updating Tapioca to 0.5.0, I noticed this new gem pulls in a Rake dependency. Is this a necessary runtime dependency or can it be add_development_dependency
? It doesn't appear to be used here outside of tests (similar to Tapioca, which didn't have the dependency at all before).
Currently I get:
$ ruby -rrbi -e 'puts RBI::Comment.new("Foo\nBar").string'
# Foo
Bar
when I would have expected the output to be:
# Foo
# Bar
On a Rails 6.1.7 codebase, with the following Sorbet gems:
sorbet (0.5.10201)
sorbet-static (= 0.5.10201)
sorbet-runtime (0.5.10201)
sorbet-static (0.5.10201-universal-darwin-14)
sorbet-static (0.5.10201-universal-darwin-15)
sorbet-static (0.5.10201-universal-darwin-16)
sorbet-static (0.5.10201-universal-darwin-17)
sorbet-static (0.5.10201-universal-darwin-18)
sorbet-static (0.5.10201-universal-darwin-19)
sorbet-static (0.5.10201-universal-darwin-20)
sorbet-static (0.5.10201-universal-darwin-21)
sorbet-static (0.5.10201-universal-darwin-22)
sorbet-static (0.5.10201-x86_64-linux)
sorbet-struct-comparable (1.2.0)
sorbet-runtime (>= 0.5)
ast (2.4.2)
parser (3.2.2.1)
ast (~> 2.4.1)
Trying to install tapioca v0.11.6 and then running tapioca init
results in:
/usr/local/rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/source/buffer.rb:146:in `source': Cannot extract source from uninitialized Source::Buffer (RBI::UnexpectedParserError)
It appears that this was due to tapioca expecting a newer version of parser
, because running bundle update parser
, led to the following versions:
parser (3.2.2.1)
ast (~> 2.4.1)
Which then led me to #139, and following the steps in there to bump unparser
has allowed tapioca init
to work correctly.
bundle exec tapioca init
skip sorbet/config
create sorbet/tapioca/config.yml
create sorbet/tapioca/require.rb
create bin/tapioca
Retrieving index from central repository... Done
Listing gems from Gemfile.lock... Done
Removing annotations for gems that have been removed... Nothing to do
Fetching gem annotations from central repository...
##################################
### RBI::Parser internal error ###
##################################
There was an internal parser error while processing this source.
Error: Cannot extract source from uninitialized Source::Buffer while parsing -::-::
<no source>
Please open an issue at https://github.com/Shopify/rbi/issues/new.
##################################
Traceback (most recent call last):
54: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `<main>'
53: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `eval'
52: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/tapioca:23:in `<main>'
51: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/tapioca:23:in `load'
50: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/exe/tapioca:25:in `<top (required)>'
49: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
48: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
47: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
46: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
45: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:29:in `init'
44: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
43: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
42: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/runtime/trackers.rb:26:in `with_trackers_enabled'
41: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:31:in `block in init'
40: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
39: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
38: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
37: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
36: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:328:in `annotations'
35: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
34: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
33: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca.rb:22:in `silence_warnings'
32: from /Users/jamietanna/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/user_interaction.rb:47:in `use_ui'
31: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca.rb:23:in `block in silence_warnings'
30: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:329:in `block in annotations'
29: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
28: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
27: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:40:in `execute'
26: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
25: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
24: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `fetch_annotations'
23: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `select'
22: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `block in fetch_annotations'
21: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
20: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
19: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:137:in `fetch_annotation'
18: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
17: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
16: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:228:in `merge_files'
15: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:228:in `each'
14: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:229:in `block in merge_files'
13: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
12: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
11: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:71:in `parse_string'
10: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
9: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
8: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:87:in `parse_string'
7: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
6: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
5: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:105:in `parse'
4: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/unparser-0.5.5/lib/unparser.rb:108:in `parse_with_comments'
3: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/base.rb:206:in `parse_with_comments'
2: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/base.rb:186:in `parse'
1: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/lexer.rb:10890:in `source_buffer='
/Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/source/buffer.rb:146:in `source': Cannot extract source from uninitialized Source::Buffer (RuntimeError)
54: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `<main>'
53: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/ruby_executable_hooks:22:in `eval'
52: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/tapioca:23:in `<main>'
51: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/bin/tapioca:23:in `load'
50: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/exe/tapioca:25:in `<top (required)>'
49: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
48: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
47: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
46: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
45: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:29:in `init'
44: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
43: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
42: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/runtime/trackers.rb:26:in `with_trackers_enabled'
41: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:31:in `block in init'
40: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
39: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
38: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
37: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
36: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:328:in `annotations'
35: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
34: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
33: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca.rb:22:in `silence_warnings'
32: from /Users/jamietanna/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/user_interaction.rb:47:in `use_ui'
31: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca.rb:23:in `block in silence_warnings'
30: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/cli.rb:329:in `block in annotations'
29: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
28: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
27: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:40:in `execute'
26: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
25: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
24: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `fetch_annotations'
23: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `select'
22: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:126:in `block in fetch_annotations'
21: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
20: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
19: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:137:in `fetch_annotation'
18: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
17: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
16: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:228:in `merge_files'
15: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:228:in `each'
14: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/tapioca-0.11.6/lib/tapioca/commands/annotations.rb:229:in `block in merge_files'
13: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
12: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
11: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:71:in `parse_string'
10: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
9: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
8: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:87:in `parse_string'
7: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
6: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/sorbet-runtime-0.5.10201/lib/types/private/methods/_methods.rb:272:in `bind_call'
5: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/rbi-0.0.16/lib/rbi/parser.rb:105:in `parse'
4: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/unparser-0.5.5/lib/unparser.rb:108:in `parse_with_comments'
3: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/base.rb:206:in `parse_with_comments'
2: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/base.rb:186:in `parse'
1: from /Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/lexer.rb:10890:in `source_buffer='
/Users/jamietanna/.rvm/gems/ruby-2.7.5/gems/parser-2.7.1.2/lib/parser/source/buffer.rb:146:in `source': Cannot extract source from uninitialized Source::Buffer (RBI::UnexpectedParserError)
Set a description for your service in Slack with spy: spy github set description :repo *description
A repo description makes your service more discoverable in Services DB, especially when it comes to differing internal and external project names.
This is mandatory. If this is not done your service will not be easily discoverable in Services DB.
First, leave a comment explaining why it doesn't apply. Then, leave another comment as /not_applicable
, and close the issue.
If you change your mind, make sure to comment any reason and reopen the issue. Once you've fixed it, services-db will close the issue for you next day.
Please contact the Production Excellence team using Slack at #production-excellence-team.
Your service: rbi/production
I think that the SortNodes
rewriter doesn't preserve the position of private
and protected
, causing it to change the privacy of methods. For example, I would expect this input:
rbi = RBI::Tree.new
rbi << RBI::Method.new("c")
rbi << RBI::Private.new
rbi << RBI::Method.new("a")
rbi << RBI::Protected.new
rbi << RBI::Method.new("b")
rbi.sort_nodes!
puts rbi.string
to produce
def c; end
private
def a; end
protected
def b; end
but it sorts everything and produces
def a; end
def b; end
def c; end
private
protected
So that method b
which should be private has become public, and c
which should be protected is also public.
If my understanding is correct, the problem is in the node.nodes.sort!
call in the SortNodes
visitor, which currently sorts all the nodes. I think it needs to first segment the nodes into public, private, and protected ranges and sort those ranges individually. Would a PR to fix this be helpful?
Users can not easily discover what changes were made in Rbi, because this project does not have a CHANGELOG.md file.
Add a CHANGELOG.md file that lists each released version and details the changes that were made.
This is a standard in Ruby Gems, and will automatically be picked up by rubygems.org and other sites
#142 showed that parsing visibility modifiers as simple nodes causes problems when sorting.
Instead we should parse the visibility modifiers as a composite node of nodes so we can maintain their content when sorting.
To do this we could change Visibility
to inherit Tree
then open the tree when we find the visibility modifier and finally close the tree when we encounter another visibility modifier or the end of the current scope.
The trees would look like this:
class Foo
public # start of the public tree: because we encountered a visibility modifier: `public`
def foo; end
def bar; end
# end of the public tree: because we encountered a visibility modifier: `private`
private # start of the private tree: because we encountered a visibility modifier: `private`
def baz; end
# end of the private tree: because we encountered the end of the current scope
end
This would simplify the sorting mechanism since sorting the properties inside of a visibility tree would just be a recursive call to sort!
on the visibility tree.
After upgrading to the recently-released v0.0.7, srb tc
fails with the following:
sorbet/rbi/gems/[email protected]:159: Method RBI::Tree#merge redefined without matching argument count. Expected: 4, got: 1 https://srb.help/4010
159 | def merge(other); end
^^^^^^^^^^^^^^^^
sorbet/rbi/gems/[email protected]:1308: Previous definition
1308 | def merge(other, left_name: T.unsafe(nil), right_name: T.unsafe(nil), keep: T.unsafe(nil)); end
As there is no changelog and no migration steps posted for this gem, I assume there aren't any steps I'm supposed to take to resolve this issue myself.
We are using rails :
gem 'rails', '6.1.4.7'
ruby : ruby "2.7.6"
bundler : bundler 2.1.4
We do use rails engine extensively and were trying to add type check to one of the engines to start with.
Using yard-sorbet 0.6.1
Using tapioca 0.9.4
Using sorbet 0.5.10323
Using sorbet-static-and-runtime 0.5.10323
Using sorbet-runtime 0.5.10323
Using tapioca 0.9.4
Using rbi 0.0.15
Using unparser 0.4.7
$ bundle exec tapioca init
create sorbet/config
create sorbet/tapioca/config.yml
create sorbet/tapioca/require.rb
create bin/tapioca
Retrieving index from central repository... /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/json-1.8.6/lib/json/common.rb:155: warning: Using the last argument as keyword parameters is deprecated
Done
Listing gems from Gemfile.lock... Done
Removing annotations for gems that have been removed... Nothing to do
Fetching gem annotations from central repository...
warning: parser/current is loading parser/ruby27, which recognizes2.7.5-compliant syntax, but you are running 2.7.6.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
Fetched aasm
create sorbet/rbi/annotations/aasm.rbi
Fetched actionmailer
create sorbet/rbi/annotations/actionmailer.rbi
##################################
### RBI::Parser internal error ###
##################################
There was an internal parser error while processing this source.
Error: No emitter for node: :kwargs while parsing -:45:2-50:5:
<no source>
Please open an issue at https://github.com/Shopify/rbi/issues/new.
##################################
bundler: failed to load command: tapioca (/Users/xx/.rbenv/versions/2.7.6/bin/tapioca)
Traceback (most recent call last):
163: from /Users/xx/.rbenv/versions/2.7.6/bin/bundle:23:in `<main>'
162: from /Users/xx/.rbenv/versions/2.7.6/bin/bundle:23:in `load'
161: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:37:in `<top (required)>'
160: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
159: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:49:in `block in <top (required)>'
158: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:24:in `start'
157: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
156: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:30:in `dispatch'
155: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
154: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
153: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
152: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:494:in `exec'
151: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:28:in `run'
150: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:63:in `kernel_load'
149: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:63:in `load'
148: from /Users/xx/.rbenv/versions/2.7.6/bin/tapioca:23:in `<top (required)>'
147: from /Users/xx/.rbenv/versions/2.7.6/bin/tapioca:23:in `load'
146: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/exe/tapioca:23:in `<top (required)>'
145: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
144: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
143: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
142: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
141: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/cli.rb:27:in `init'
140: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
139: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
138: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
137: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
136: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/cli.rb:317:in `annotations'
135: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
134: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `bind_call'
133: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:40:in `execute'
132: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
131: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `bind_call'
130: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `fetch_annotations'
129: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `select'
128: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `block in fetch_annotations'
127: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:137:in `fetch_annotation'
126: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:226:in `merge_files'
125: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:226:in `each'
124: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:227:in `block in merge_files'
123: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:71:in `parse_string'
122: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:87:in `parse_string'
121: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:108:in `parse'
120: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:220:in `visit'
119: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
118: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
117: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
116: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:202:in `visit'
115: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
114: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
113: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
112: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:220:in `visit'
111: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
110: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
109: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
108: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:212:in `visit'
107: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:407:in `parse_block'
106: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:480:in `parse_sig'
105: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:641:in `build'
104: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
103: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
102: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
101: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:659:in `visit'
100: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:665:in `visit_send'
99: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:659:in `visit'
98: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:687:in `visit_send'
97: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:687:in `each'
96: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:689:in `block in visit_send'
95: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:152:in `parse_expr'
94: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser.rb:35:in `unparse'
93: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
92: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
91: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
90: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
89: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
88: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
87: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
86: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
85: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
84: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
83: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
82: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
81: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
80: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
79: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
78: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
77: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
76: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
75: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
74: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
73: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
72: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
71: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
70: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:21:in `dispatch'
69: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:165:in `emit_arguments'
68: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:176:in `normal_arguments'
67: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:174:in `parentheses'
66: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:177:in `block in normal_arguments'
65: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:258:in `delimited_plain'
64: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:274:in `delimited'
63: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:188:in `visit_plain'
62: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
61: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
60: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
59: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
58: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
57: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
56: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
55: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
54: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
53: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
52: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
51: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
50: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
49: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
48: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
47: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
46: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
45: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
44: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
43: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
42: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
41: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
40: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
39: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:19:in `dispatch'
38: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:33:in `emit_receiver'
37: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:201:in `visit'
36: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:233:in `conditional_parentheses'
35: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:202:in `block in visit'
34: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
33: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
32: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
31: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
30: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
29: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
28: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
27: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
26: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
25: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
24: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
23: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
22: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
21: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
20: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
19: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
18: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
17: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
16: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
15: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
14: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
13: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
12: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
11: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:21:in `dispatch'
10: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:165:in `emit_arguments'
9: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:176:in `normal_arguments'
8: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:174:in `parentheses'
7: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:177:in `block in normal_arguments'
6: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:258:in `delimited_plain'
5: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:274:in `delimited'
4: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:187:in `visit_plain'
3: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:246:in `emitter'
2: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:118:in `emitter'
1: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:118:in `fetch'
/Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:119:in `block in emitter': No emitter for node: :kwargs (ArgumentError)
163: from /Users/xx/.rbenv/versions/2.7.6/bin/bundle:23:in `<main>'
162: from /Users/xx/.rbenv/versions/2.7.6/bin/bundle:23:in `load'
161: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:37:in `<top (required)>'
160: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
159: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/exe/bundle:49:in `block in <top (required)>'
158: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:24:in `start'
157: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
156: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:30:in `dispatch'
155: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
154: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
153: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
152: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli.rb:494:in `exec'
151: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:28:in `run'
150: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:63:in `kernel_load'
149: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/bundler-2.2.15/lib/bundler/cli/exec.rb:63:in `load'
148: from /Users/xx/.rbenv/versions/2.7.6/bin/tapioca:23:in `<top (required)>'
147: from /Users/xx/.rbenv/versions/2.7.6/bin/tapioca:23:in `load'
146: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/exe/tapioca:23:in `<top (required)>'
145: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
144: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
143: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
142: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
141: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/cli.rb:27:in `init'
140: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:116:in `invoke'
139: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
138: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
137: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
136: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/cli.rb:317:in `annotations'
135: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
134: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `bind_call'
133: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:40:in `execute'
132: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `block in _on_method_added'
131: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/sorbet-runtime-0.5.10323/lib/types/private/methods/_methods.rb:272:in `bind_call'
130: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `fetch_annotations'
129: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `select'
128: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:126:in `block in fetch_annotations'
127: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:137:in `fetch_annotation'
126: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:226:in `merge_files'
125: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:226:in `each'
124: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/tapioca-0.9.4/lib/tapioca/commands/annotations.rb:227:in `block in merge_files'
123: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:71:in `parse_string'
122: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:87:in `parse_string'
121: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:108:in `parse'
120: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:220:in `visit'
119: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
118: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
117: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
116: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:202:in `visit'
115: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
114: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
113: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
112: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:220:in `visit'
111: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
110: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
109: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
108: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:212:in `visit'
107: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:407:in `parse_block'
106: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:480:in `parse_sig'
105: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:641:in `build'
104: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `visit_all'
103: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `each'
102: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:137:in `block in visit_all'
101: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:659:in `visit'
100: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:665:in `visit_send'
99: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:659:in `visit'
98: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:687:in `visit_send'
97: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:687:in `each'
96: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:689:in `block in visit_send'
95: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/rbi-0.0.15/lib/rbi/parser.rb:152:in `parse_expr'
94: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser.rb:35:in `unparse'
93: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
92: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
91: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
90: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
89: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
88: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
87: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
86: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
85: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
84: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
83: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
82: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
81: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
80: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
79: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
78: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
77: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
76: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
75: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
74: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
73: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
72: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
71: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
70: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:21:in `dispatch'
69: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:165:in `emit_arguments'
68: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:176:in `normal_arguments'
67: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:174:in `parentheses'
66: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:177:in `block in normal_arguments'
65: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:258:in `delimited_plain'
64: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:274:in `delimited'
63: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:188:in `visit_plain'
62: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
61: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
60: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
59: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
58: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
57: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
56: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
55: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
54: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
53: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
52: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
51: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
50: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
49: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
48: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
47: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
46: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
45: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
44: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
43: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
42: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
41: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
40: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
39: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:19:in `dispatch'
38: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:33:in `emit_receiver'
37: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:201:in `visit'
36: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:233:in `conditional_parentheses'
35: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:202:in `block in visit'
34: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
33: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
32: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
31: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
30: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
29: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
28: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
27: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
26: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
25: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
24: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
23: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:31:in `dispatch'
22: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method'
21: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch'
20: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
19: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch'
18: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `synchronize'
17: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch'
16: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/thread_safe-0.3.6/lib/thread_safe/cache.rb:56:in `fetch'
15: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch'
14: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method'
13: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `call'
12: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:103:in `write_to_buffer'
11: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send/regular.rb:21:in `dispatch'
10: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:165:in `emit_arguments'
9: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:176:in `normal_arguments'
8: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:174:in `parentheses'
7: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter/send.rb:177:in `block in normal_arguments'
6: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:258:in `delimited_plain'
5: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:274:in `delimited'
4: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:187:in `visit_plain'
3: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:246:in `emitter'
2: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:118:in `emitter'
1: from /Users/xx/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/unparser-0.4.7/lib/unparser/emitter.rb:118:in `fetch'
Make sure you have at least one owner listed in your service.yml and that every owner points to a valid GitHub team slug or user login.
As we work toward revamping the way ownership works here, we need to ensure we have a good picture of the current state of affairs. For most services this is obvious (ServicesDB is owned by Shopify/production-excellence, which maps to a Production Excellence team in Vault). For some services however, it is very much not obvious, as they have no entries or invalid entries in their service.yml, making it difficult to determine the best path forward.
As we attempt to infer the correct owner, we may end up misclassifying things by putting ownership of a service onto the wrong team. It would be easily remedied, but still wouldn't be the optimal experience.
First, leave a comment explaining why it doesn't apply. Then, leave another comment as /not_applicable
, and close the issue.
If you change your mind, make sure to comment any reason and reopen the issue. Once you've fixed it, services-db will close the issue for you next day.
For more information about why we're making this change, please see this project brief here: https://docs.google.com/document/d/1KKosigiJhy2DGmc22jJ8l3-Tumkl53dzvgt1Tuw1TRw/edit.
Please contact the Production Excellence team using #core-build-manage.
Your service: rbi/production
Right now, we have an upper-bound version constraint on Prism here:
Line 27 in 15448ad
It looks like the original reason for this was to prevent a breaking change from affecting RBI in 2abfa69. In practice, this works well in the moment, but when applications need to specify a new version of Prism, they can't (because RBI is being strict for seemingly no reason).
This seems to have caused more strain on maintainers of RBI to release a new version for every version bump of a dependency, and that doesn't make sense. Can we relax this dependency to either:
I'm asking because I got bit by this while testing a patch on Packwerk that's attempting to use Prism.
(Moving from Shopify/rbs_parser#19)
It would be nice for a tool to exist that could translate Sorbet's .rbi
files into best-effort .rbs
files.
An example use-case is a gem author who wishes to develop with Sorbet and expose .rbs
files as well as .rbi
to their users.
In general, this could be quite useful in moving the Ruby community forward together around types, by leveraging existing production-grade tools (Sorbet) to support the long-term health of the ecosystem.
According to @Morriar , an easy way to do this might be write a new printer that would output RBS rather than RBI.
Is this a tool you might be willing to build, or to build the underlying API for?
(I might be willing to produce an rbs2rbi
CLI package on top of the the API if you like, but I don't think I'd be able to maintain the printer).
Thanks!
See https://github.com/kddnewton/syntax_tree.
Beside the advertised speed-up, it provides real classes for nodes such as Block
, Class
etc. which might play well with Sorbet.
Current behaviour:
rbi = RBI::File.new(strictness: "true")
rbi.root.comments << RBI::Comment.new("foo")
rbi.string
# "# typed: true\n"
Expected behaviour:
rbi = RBI::File.new(strictness: "true")
rbi.root.comments << RBI::Comment.new("foo")
rbi.string
# "# typed: true\n\n# foo\n"
Associating a team's Slack channel(s) to their services and components makes it easier to find the right people to answer questions about those services. Please add your team's Slack channel(s) to your service.yml
file, old/archived channel names must be updated.
Define your team's Slack channel(s) in your service.yml
file as follows:
slack_channels:
- your-slack-channel
The first value is also used by spy and other services to announce maintenance periods or incidents to service and component owners.
This is mandatory. If this is not done you won't be able to promote this service to the next tier, and it might be reverted to Tier 4 otherwise.
First, leave a comment explaining why it doesn't apply. Then, leave another comment as /not_applicable
, and close the issue.
If you change your mind, make sure to comment any reason and reopen the issue. Once you've fixed it, services-db will close the issue for you next day.
Please contact the Production Excellence team using Slack at #production-excellence-team.
Your service: rbi/production
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.