Improve M_OPLIST_P computation.

This commit is contained in:
Patrick Pelissier committed 2017-09-09 23:36:01 +02:00
1 parent 4eda4a19fa
commit 4d9405d564
2 files changed
+8 -3

No files matched your search

+6 -3
View File
@@ -393,6 +393,9 @@
/* Return the input (delay evaluation) */
#define M_ID(...) __VA_ARGS__
/* Globber the input */
#define M_EAT(...)
/* M_NARGS: Return number of argument.
(don't work for empty arg) */
#define M_NARGS(...) \
@@ -1044,9 +1047,9 @@ m_core_hash (const void *str, size_t length)
/* Test if the argument is a valid oplist.
NOTE: Incomplete test.
*/
#define M_OPLIST_P(a) \
M_AND(M_PARENTHESIS_P(a), M_INV(M_PARENTHESIS_P (M_OPFLAT a)))
#define M_OPLIST_P(a) \
M_AND(M_AND(M_PARENTHESIS_P(a), M_INV(M_PARENTHESIS_P (M_OPFLAT a))), \
M_EMPTY_P(M_EAT a))
/************************************************************/
+2
View File
@@ -233,6 +233,8 @@ static void test_oplist(void)
assert (!M_OPLIST_P());
assert (!M_OPLIST_P((())));
assert (!M_OPLIST_P(INIT(init)));
assert (!M_OPLIST_P((INIT(init)) a));
assert (!M_OPLIST_P(f(INIT(init)) a));
#define a (INIT(0), CLEAR(clear))
assert (M_TEST_DISABLED_METHOD_P(INIT, a));