summaryrefslogtreecommitdiff
path: root/lib/prism/translation/ripper.rb
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-03-05 07:15:06 -0500
committergit <svn-admin@ruby-lang.org>2024-03-06 16:42:40 +0000
commit70764bd0bef3cb95f12779e0237a45751d9f57ee (patch)
treee1a498345d8d6d1d3c368223fca1f4b5e76e8acf /lib/prism/translation/ripper.rb
parentc947852fa884bbbe26a50b50aa36a4342261fbb2 (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.rb20
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__