summaryrefslogtreecommitdiff
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
parent3a7beffd1bcf2262d6a6db7356ad0f249a33e4d9 (diff)
[ruby/prism] Implement singleton methods for ripper translation
https://github.com/ruby/prism/commit/b7cd5c8e74
-rw-r--r--lib/prism/translation/ripper.rb14
-rw-r--r--test/prism/ripper_test.rb15
2 files changed, 13 insertions, 16 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
diff --git a/test/prism/ripper_test.rb b/test/prism/ripper_test.rb
index 5616575dee..1e90681a55 100644
--- a/test/prism/ripper_test.rb
+++ b/test/prism/ripper_test.rb
@@ -30,7 +30,6 @@ module Prism
heredocs_nested.txt
heredocs_with_ignored_newlines.txt
if.txt
- keyword_method_names.txt
lambda.txt
method_calls.txt
methods.txt
@@ -93,13 +92,6 @@ module Prism
seattlerb/defn_kwarg_lvar.txt
seattlerb/defn_oneliner_eq2.txt
seattlerb/defn_oneliner_rescue.txt
- seattlerb/defns_reserved.txt
- seattlerb/defs_as_arg_with_do_block_inside.txt
- seattlerb/defs_comments.txt
- seattlerb/defs_endless_command.txt
- seattlerb/defs_endless_command_rescue.txt
- seattlerb/defs_kwarg.txt
- seattlerb/defs_oneliner.txt
seattlerb/defs_oneliner_eq2.txt
seattlerb/defs_oneliner_rescue.txt
seattlerb/difficult2_.txt
@@ -241,7 +233,6 @@ module Prism
unparser/corpus/literal/control.txt
unparser/corpus/literal/def.txt
unparser/corpus/literal/defined.txt
- unparser/corpus/literal/defs.txt
unparser/corpus/literal/dstr.txt
unparser/corpus/literal/empty.txt
unparser/corpus/literal/for.txt
@@ -303,12 +294,7 @@ module Prism
whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
whitequark/def.txt
- whitequark/defs.txt
whitequark/empty_stmt.txt
- whitequark/endless_method.txt
- whitequark/endless_method_command_syntax.txt
- whitequark/endless_method_with_rescue_mod.txt
- whitequark/endless_method_without_args.txt
whitequark/forward_arg.txt
whitequark/forward_args_legacy.txt
whitequark/forwarded_argument_with_kwrestarg.txt
@@ -329,7 +315,6 @@ module Prism
whitequark/masgn_attr.txt
whitequark/masgn_nested.txt
whitequark/masgn_splat.txt
- whitequark/method_definition_in_while_cond.txt
whitequark/newline_in_hash_argument.txt
whitequark/next_block.txt
whitequark/numbered_args_after_27.txt