summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2021-09-18 21:52:18 +0900
committerYusuke Endoh <mame@ruby-lang.org>2021-09-18 21:52:18 +0900
commit1b300789ffc5fda1fcb534d0611ffdb7731e5b9d (patch)
treea47b221d23442559a811ba40a997b82ce3b26301
parented9d9cee76ee941c504ccea33c70c0eb5d825813 (diff)
ast.c: AST.of against C method should return nil (as Ruby 2.6--3.0)
-rw-r--r--ast.c2
-rw-r--r--test/ruby/test_ast.rb2
2 files changed, 2 insertions, 2 deletions
diff --git a/ast.c b/ast.c
index e1c044e24c..84e5fdcecc 100644
--- a/ast.c
+++ b/ast.c
@@ -214,7 +214,7 @@ ast_s_of(rb_execution_context_t *ec, VALUE module, VALUE body, VALUE keep_script
iseq = rb_method_iseq(body);
}
if (!iseq) {
- rb_raise(rb_eArgError, "cannot get AST for method that is not defined in Ruby");
+ return Qnil;
}
if (rb_iseq_from_eval_p(iseq)) {
rb_raise(rb_eArgError, "cannot get AST for method defined in eval");
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index 0b5c41058c..953c8435c3 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -233,7 +233,7 @@ class TestAst < Test::Unit::TestCase
def test_of_c_method
c = Class.new { attr_reader :foo }
- assert_raise(ArgumentError) { RubyVM::AbstractSyntaxTree.of(c.instance_method(:foo)) }
+ assert_nil(RubyVM::AbstractSyntaxTree.of(c.instance_method(:foo)))
end
def test_scope_local_variables