Skip to content

Commit 1ce2ccc

Browse files
committed
rdoc/parser/c.rb: ignore dynamically added methods
* lib/rdoc/parser/c.rb (RDoc::Parser::C#deduplicate_call_seq): skip dynamically added methods at runtime, because the class name is unknown and the defined methods are not accessible from that class.
1 parent 3f1cd4d commit 1ce2ccc

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/rdoc/parser/c.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ def @enclosure_dependencies.tsort_each_child node, &block
217217
def deduplicate_call_seq
218218
@methods.each do |var_name, functions|
219219
class_name = @known_classes[var_name]
220+
next unless class_name
220221
class_obj = find_class var_name, class_name
221222

222223
functions.each_value do |method_names|

test/test_rdoc_parser_c.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,6 +1630,19 @@ def test_define_method
16301630
assert read_method.singleton
16311631
end
16321632

1633+
def test_define_method_dynamically
1634+
content = <<-EOF
1635+
void
1636+
Init_foo(void)
1637+
{
1638+
rb_define_singleton_method(obj, "foo", foo, -1);
1639+
}
1640+
EOF
1641+
1642+
klass = util_get_class content, 'obj'
1643+
assert_nil klass
1644+
end
1645+
16331646
def test_define_method_with_prototype
16341647
content = <<-EOF
16351648
static VALUE rb_io_s_read(int, VALUE*, VALUE);

0 commit comments

Comments
 (0)