summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-03-05 20:43:23 -0500
committergit <svn-admin@ruby-lang.org>2024-03-06 16:42:48 +0000
commitdb53705acda9b733be7fdf71996143caf7c8ae7a (patch)
tree69dc4961c97d5ea3eec293ea8f491c242d7a8626 /lib
parent3a7beffd1bcf2262d6a6db7356ad0f249a33e4d9 (diff)
[ruby/prism] Implement singleton methods for ripper translation
https://github.com/ruby/prism/commit/b7cd5c8e74
Diffstat (limited to 'lib')
-rw-r--r--lib/prism/translation/ripper.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/prism/translation/ripper.rb b/lib/prism/translation/ripper.rb
index 0c2496fe80..a08f39afba 100644
--- a/lib/prism/translation/ripper.rb
+++ b/lib/prism/translation/ripper.rb
@@ -1044,6 +1044,13 @@ module Prism
# def self.foo; end
# ^^^^^^^^^^^^^^^^^
def visit_def_node(node)
+ receiver = visit(node.receiver)
+ operator =
+ if !node.operator_loc.nil?
+ bounds(node.operator_loc)
+ visit_token(node.operator)
+ end
+
bounds(node.name_loc)
name = visit_token(node.name_loc.slice)
@@ -1070,7 +1077,12 @@ module Prism
on_bodystmt(body, nil, nil, nil)
end
- on_def(name, parameters, bodystmt)
+ bounds(node.location)
+ if receiver.nil?
+ on_def(name, parameters, bodystmt)
+ else
+ on_defs(receiver, operator, name, parameters, bodystmt)
+ end
end
# defined? a