Ruby
2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)
include
ruby
assert.h
Go to the documentation of this file.
1
#ifndef RUBY_ASSERT_H
2
#define RUBY_ASSERT_H
3
4
#if defined(__cplusplus)
5
extern
"C"
{
6
#if 0
7
}
/* satisfy cc-mode */
8
#endif
9
#endif
10
11
NORETURN
(
void
rb_assert_failure
(
const
char
*,
int
,
const
char
*,
const
char
*));
12
#ifdef RUBY_FUNCTION_NAME_STRING
13
# define RUBY_ASSERT_FAIL(expr) \
14
rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
15
#else
16
# define RUBY_ASSERT_FAIL(expr) \
17
rb_assert_failure(__FILE__, __LINE__, NULL, expr)
18
#endif
19
#define RUBY_ASSERT_MESG(expr, mesg) \
20
((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
21
#ifdef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P
22
# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
23
((RUBY_DEBUG+0) ? RUBY_ASSERT_MESG((expr), mesg) : \
24
__builtin_choose_expr( \
25
__builtin_constant_p(cond), \
26
__builtin_choose_expr(cond, RUBY_ASSERT_MESG(expr, mesg), (void)0), \
27
RUBY_ASSERT_MESG(!(cond) || (expr), mesg)))
28
#else
29
# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \
30
RUBY_ASSERT_MESG(!((RUBY_DEBUG+0) || (cond)) || (expr), mesg)
31
#endif
32
#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
33
#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
34
#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
35
36
#ifndef RUBY_DEBUG
37
# define RUBY_DEBUG 0
38
#endif
39
#ifndef RUBY_NDEBUG
40
# ifdef NDEBUG
41
# define RUBY_NDEBUG 1
42
# else
43
# define RUBY_NDEBUG 0
44
# endif
45
#endif
46
47
#if defined(__cplusplus)
48
#if 0
49
{
/* satisfy cc-mode */
50
#endif
51
}
/* extern "C" { */
52
#endif
53
54
#endif
rb_assert_failure
MJIT_FUNC_EXPORTED void rb_assert_failure(const char *file, int line, const char *name, const char *expr)
Definition:
error.c:716
NORETURN
NORETURN(void rb_assert_failure(const char *, int, const char *, const char *))
Generated by
1.8.17