summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/ext
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 12:30:05 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 12:30:05 +0000
commit9dc121cc577ae7a010bca7efedb79088e3cf7331 (patch)
treec11a153c7eac91a1e19ed058d5c28f0f7d583622 /spec/ruby/optional/capi/ext
parentfc1f3f14d386b557281ff9a8f19da060befe182e (diff)
Update to ruby/spec@a454137
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/optional/capi/ext')
-rw-r--r--spec/ruby/optional/capi/ext/enumerator_spec.c15
-rw-r--r--spec/ruby/optional/capi/ext/kernel_spec.c11
-rw-r--r--spec/ruby/optional/capi/ext/rubyspec.h3
-rw-r--r--spec/ruby/optional/capi/ext/string_spec.c12
4 files changed, 40 insertions, 1 deletions
diff --git a/spec/ruby/optional/capi/ext/enumerator_spec.c b/spec/ruby/optional/capi/ext/enumerator_spec.c
index 6b08feab52..d9e34afd96 100644
--- a/spec/ruby/optional/capi/ext/enumerator_spec.c
+++ b/spec/ruby/optional/capi/ext/enumerator_spec.c
@@ -13,6 +13,18 @@ VALUE enumerator_spec_rb_enumeratorize(int argc, VALUE *argv, VALUE self) {
}
#endif
+#ifdef HAVE_RB_ENUMERATORIZE_WITH_SIZE
+VALUE enumerator_spec_size_fn(VALUE obj, VALUE args, VALUE anEnum) {
+ return INT2NUM(7);
+}
+
+VALUE enumerator_spec_rb_enumeratorize_with_size(int argc, VALUE *argv, VALUE self) {
+ VALUE obj, meth, args;
+ rb_scan_args(argc, argv, "2*", &obj, &meth, &args);
+ return rb_enumeratorize_with_size(obj, meth, (int)RARRAY_LEN(args), RARRAY_PTR(args), enumerator_spec_size_fn);
+}
+#endif
+
void Init_enumerator_spec(void) {
VALUE cls;
cls = rb_define_class("CApiEnumeratorSpecs", rb_cObject);
@@ -20,6 +32,9 @@ void Init_enumerator_spec(void) {
#ifdef HAVE_RB_ENUMERATORIZE
rb_define_method(cls, "rb_enumeratorize", enumerator_spec_rb_enumeratorize, -1);
#endif
+#ifdef HAVE_RB_ENUMERATORIZE_WITH_SIZE
+ rb_define_method(cls, "rb_enumeratorize_with_size", enumerator_spec_rb_enumeratorize_with_size, -1);
+#endif
}
#ifdef __cplusplus
diff --git a/spec/ruby/optional/capi/ext/kernel_spec.c b/spec/ruby/optional/capi/ext/kernel_spec.c
index 226354e18a..c87ed5e8f2 100644
--- a/spec/ruby/optional/capi/ext/kernel_spec.c
+++ b/spec/ruby/optional/capi/ext/kernel_spec.c
@@ -65,6 +65,12 @@ VALUE kernel_spec_rb_block_call_no_func(VALUE self, VALUE ary) {
#endif
+#ifdef HAVE_RB_FRAME_THIS_FUNC
+VALUE kernel_spec_rb_frame_this_func(VALUE self) {
+ return ID2SYM(rb_frame_this_func());
+}
+#endif
+
#ifdef HAVE_RB_ENSURE
VALUE kernel_spec_rb_ensure(VALUE self, VALUE main_proc, VALUE arg,
VALUE ensure_proc, VALUE arg2) {
@@ -350,6 +356,11 @@ void Init_kernel_spec(void) {
rb_define_method(cls, "rb_block_proc", kernel_spec_rb_block_proc, 0);
#endif
+#ifdef HAVE_RB_FRAME_THIS_FUNC
+ rb_define_method(cls, "rb_frame_this_func_test", kernel_spec_rb_frame_this_func, 0);
+ rb_define_method(cls, "rb_frame_this_func_test_again", kernel_spec_rb_frame_this_func, 0);
+#endif
+
#ifdef HAVE_RB_ENSURE
rb_define_method(cls, "rb_ensure", kernel_spec_rb_ensure, 4);
#endif
diff --git a/spec/ruby/optional/capi/ext/rubyspec.h b/spec/ruby/optional/capi/ext/rubyspec.h
index 780c2ab20f..4f50450dfb 100644
--- a/spec/ruby/optional/capi/ext/rubyspec.h
+++ b/spec/ruby/optional/capi/ext/rubyspec.h
@@ -252,6 +252,7 @@
/* Enumerable */
#define HAVE_RB_ENUMERATORIZE 1
+#define HAVE_RB_ENUMERATORIZE_WITH_SIZE 1
/* Exception */
#define HAVE_RB_EXC_NEW 1
@@ -348,6 +349,7 @@
#define HAVE_RB_ENSURE 1
#define HAVE_RB_EVAL_STRING 1
#define HAVE_RB_EXEC_RECURSIVE 1
+#define HAVE_RB_FRAME_THIS_FUNC 1
#define HAVE_RB_F_SPRINTF 1
#define HAVE_RB_NEED_BLOCK 1
#define HAVE_RB_RAISE 1
@@ -563,6 +565,7 @@
#define HAVE_RB_VSPRINTF 1
#define HAVE_RB_STRING 1
#define HAVE_SAFE_STRING_VALUE 1
+#define HAVE_RB_STRING_VALUE_CSTR 1
/* Struct */
#define HAVE_RB_STRUCT_AREF 1
diff --git a/spec/ruby/optional/capi/ext/string_spec.c b/spec/ruby/optional/capi/ext/string_spec.c
index 1b9c11a149..a6ce02b25c 100644
--- a/spec/ruby/optional/capi/ext/string_spec.c
+++ b/spec/ruby/optional/capi/ext/string_spec.c
@@ -497,6 +497,13 @@ static VALUE string_spec_rb_String(VALUE self, VALUE val) {
}
#endif
+#ifdef HAVE_RB_STRING_VALUE_CSTR
+static VALUE string_spec_rb_string_value_cstr(VALUE self, VALUE str) {
+ char *c_str = rb_string_value_cstr(&str);
+ return c_str ? Qtrue : Qfalse;
+}
+#endif
+
void Init_string_spec(void) {
VALUE cls;
cls = rb_define_class("CApiStringSpecs", rb_cObject);
@@ -733,8 +740,11 @@ void Init_string_spec(void) {
#ifdef HAVE_RB_STRING
rb_define_method(cls, "rb_String", string_spec_rb_String, 1);
#endif
-}
+#ifdef HAVE_RB_STRING_VALUE_CSTR
+ rb_define_method(cls, "rb_string_value_cstr", string_spec_rb_string_value_cstr, 1);
+#endif
+}
#ifdef __cplusplus
}
#endif