summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-19 20:07:24 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-19 20:57:58 +0900
commita3daf8e49a36dc5501b020a882d611676a6ad264 (patch)
treefbe3cf14a20c06cdea881c291a0388a6f613f013
parentb3ddeac33e299f36084339aceaaa0a29cf8b7498 (diff)
Ensure that unmatched arity fails in C++
-rw-r--r--ext/-test-/cxxanyargs/extconf.rb15
-rw-r--r--ext/-test-/cxxanyargs/failure.cpp13
2 files changed, 27 insertions, 1 deletions
diff --git a/ext/-test-/cxxanyargs/extconf.rb b/ext/-test-/cxxanyargs/extconf.rb
index 7e2449a457..90ab85608a 100644
--- a/ext/-test-/cxxanyargs/extconf.rb
+++ b/ext/-test-/cxxanyargs/extconf.rb
@@ -22,5 +22,18 @@ begin
end
if ok
- create_makefile("-test-/cxxanyargs")
+ $srcs = %w[cxxanyargs.cpp]
+ $cleanfiles << "failure.failed"
+ create_makefile("-test-/cxxanyargs") do |mk|
+ mk << <<MK
+
+cxxanyargs.#$OBJEXT: failure.failed
+
+failure.failed: failure.cpp
+\t$(Q)$(RUBY) -rfileutils \\
+\t -e "err = IO.popen(%[$(MAKE) failure.#$OBJEXT], err:[:child, :out], &:read)" \\
+\t -e "abort err unless /rb_define_method/ =~ err" \\
+\t -e "FileUtils.touch(*ARGV)" $@
+MK
+ end
end
diff --git a/ext/-test-/cxxanyargs/failure.cpp b/ext/-test-/cxxanyargs/failure.cpp
new file mode 100644
index 0000000000..039beb1633
--- /dev/null
+++ b/ext/-test-/cxxanyargs/failure.cpp
@@ -0,0 +1,13 @@
+#include <ruby/ruby.h>
+
+static VALUE
+func_arg1(VALUE self, VALUE arg1)
+{
+ return arg1;
+}
+
+extern "C" void
+Init_failure(void)
+{
+ rb_define_method(rb_cObject, "arg1", func_arg1, 0);
+}