diff options
Diffstat (limited to 'include/ruby')
| -rw-r--r-- | include/ruby/assert.h | 10 | ||||
| -rw-r--r-- | include/ruby/internal/value_type.h | 7 |
2 files changed, 12 insertions, 5 deletions
diff --git a/include/ruby/assert.h b/include/ruby/assert.h index 0342d554e7..acc5e5bbfc 100644 --- a/include/ruby/assert.h +++ b/include/ruby/assert.h @@ -299,16 +299,18 @@ RBIMPL_WARNING_IGNORED(-Wgnu-zero-variadic-macro-arguments) */ #if RUBY_DEBUG # define RBIMPL_ASSERT_OR_ASSUME RUBY_ASSERT_ALWAYS +#elif ! defined(RBIMPL_VA_OPT_ARGS) +# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr) #elif RBIMPL_COMPILER_BEFORE(Clang, 7, 0, 0) # /* See commit 67d259c5dccd31fe49d417fec169977712ffdf10 */ -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING +# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING #elif defined(RUBY_ASSERT_NOASSUME) # /* See commit d300a734414ef6de7e8eb563b7cc4389c455ed08 */ -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING +# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING #elif ! defined(RBIMPL_HAVE___ASSUME) -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING +# define RBIMPL_ASSERT_OR_ASSUME(...) RBIMPL_ASSERT_NOTHING #else -# define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSUME(expr) +# define RBIMPL_ASSERT_OR_ASSUME(expr, ...) RBIMPL_ASSUME(expr) #endif #endif /* RUBY_ASSERT_H */ diff --git a/include/ruby/internal/value_type.h b/include/ruby/internal/value_type.h index 6adbd35c44..aedd0abe4b 100644 --- a/include/ruby/internal/value_type.h +++ b/include/ruby/internal/value_type.h @@ -96,7 +96,12 @@ #define RB_TYPE_P RB_TYPE_P #define Check_Type Check_Type -#define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t))) +#ifdef RBIMPL_VA_OPT_ARGS +# define RBIMPL_ASSERT_TYPE(v, t) \ + RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t), "actual type: %d", rb_type(v)) +#else +# define RBIMPL_ASSERT_TYPE(v, t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P(v, t)) +#endif /** @endcond */ /** @old{rb_type} */ |
