Workaround VA macro expansion difference with VC++

This commit is contained in:
Anatol Belski 2018-03-15 21:17:40 +01:00
parent 4bbf200b4e
commit e659fcd89e

View file

@ -204,12 +204,27 @@ ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_zval_from_long(zend_long lval)
ZEND_API zend_ast * ZEND_FASTCALL zend_ast_create_constant(zend_string *name, zend_ast_attr attr);
#if ZEND_AST_SPEC
# define ZEND_AST_SPEC_CALL(name, ...) \
# ifdef ZEND_WIN32
# define ZEND_AST_EXPAND_VA(a) a
# endif
# ifdef ZEND_WIN32
# define ZEND_AST_SPEC_CALL(name, ...) \
ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__))
# else
# define ZEND_AST_SPEC_CALL(name, ...) \
ZEND_AST_SPEC_CALL_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)
# endif
# define ZEND_AST_SPEC_CALL_(name, _, _4, _3, _2, _1, suffix, ...) \
name ## suffix
# define ZEND_AST_SPEC_CALL_EX(name, ...) \
# ifdef ZEND_WIN32
# define ZEND_AST_SPEC_CALL_EX(name, ...) \
ZEND_AST_EXPAND_VA(ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__))
# else
# define ZEND_AST_SPEC_CALL_EX(name, ...) \
ZEND_AST_SPEC_CALL_EX_(name, __VA_ARGS__, _4, _3, _2, _1, _0)(__VA_ARGS__)
# endif
# define ZEND_AST_SPEC_CALL_EX_(name, _, _5, _4, _3, _2, _1, suffix, ...) \
name ## suffix