diff options
author | Kevin Newton <kddnewton@gmail.com> | 2024-03-05 07:15:06 -0500 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2024-03-06 16:42:40 +0000 |
commit | 70764bd0bef3cb95f12779e0237a45751d9f57ee (patch) | |
tree | e1a498345d8d6d1d3c368223fca1f4b5e76e8acf /lib/prism/translation/ripper.rb | |
parent | c947852fa884bbbe26a50b50aa36a4342261fbb2 (diff) |
[ruby/prism] Implement sclass for ripper translation
https://github.com/ruby/prism/commit/e6e17778f8
Diffstat (limited to 'lib/prism/translation/ripper.rb')
-rw-r--r-- | lib/prism/translation/ripper.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb index 4083f57b4b..fbd90f8690 100644 --- a/lib/prism/translation/ripper.rb +++ b/lib/prism/translation/ripper.rb @@ -1678,7 +1678,25 @@ module Prism # class << self; end # ^^^^^^^^^^^^^^^^^^ def visit_singleton_class_node(node) - raise NoMethodError, __method__ + expression = visit(node.expression) + bodystmt = + case node.body + when nil + bounds(node.location) + on_bodystmt(visit_statements_node_body([nil]), nil, nil, nil) + when StatementsNode + body = visit(node.body) + + bounds(node.body.location) + on_bodystmt(body, nil, nil, nil) + when BeginNode + visit_begin_node_clauses(node.body) + else + raise + end + + bounds(node.location) + on_sclass(expression, bodystmt) end # __ENCODING__ |