From 6dc09317fb6185de7d48fdcb395f99350babcc33 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sat, 30 Jan 2021 17:17:18 +0100 Subject: [PATCH] m4: provide macros for api.value.type=union * data/skeletons/bison.m4 (b4_union_if): New. Remove support for "%define variant", which was deprecated long ago. * tests/local.at (AT_UNION_IF): New. --- data/skeletons/bison.m4 | 10 +++++++--- tests/local.at | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4 index a7fba957..0375c755 100644 --- a/data/skeletons/bison.m4 +++ b/data/skeletons/bison.m4 @@ -1132,14 +1132,18 @@ m4_define([b4_parse_error_bmatch], +# b4_union_if([IF-UNION-ARE-USED], [IF-NOT]) # b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT]) # ---------------------------------------------- -b4_percent_define_if_define([variant]) +# Depend on whether api.value.type is union, or variant. +m4_define([b4_union_flag], [[0]]) m4_define([b4_variant_flag], [[0]]) b4_percent_define_ifdef([[api.value.type]], [m4_case(b4_percent_define_get_kind([[api.value.type]]), [keyword], - [m4_case(b4_percent_define_get([[api.value.type]]), [variant], - [m4_define([b4_variant_flag], [[1]])])])]) + [m4_case(b4_percent_define_get([[api.value.type]]), + [union], [m4_define([b4_union_flag], [[1]])], + [variant], [m4_define([b4_variant_flag], [[1]])])])]) +b4_define_flag_if([union]) b4_define_flag_if([variant]) diff --git a/tests/local.at b/tests/local.at index 238a3657..8411bfa3 100644 --- a/tests/local.at +++ b/tests/local.at @@ -315,6 +315,8 @@ m4_pushdef([AT_TOKEN_PREFIX], [m4_bregexp([$3], [%define api\.token\.prefix {\(.*\)}], [\1])])]) m4_pushdef([AT_TOKEN_RAW_IF], [m4_bmatch([$3], [%define api\.token\.raw], [$1], [$2])]) +m4_pushdef([AT_UNION_IF], +[m4_bmatch([$3], [%define api\.value\.type union], [$1], [$2])]) m4_pushdef([AT_VARIANT_IF], [m4_bmatch([$3], [%define api\.value\.type variant], [$1], [$2])]) m4_pushdef([AT_API_prefix], @@ -440,6 +442,7 @@ m4_popdef([AT_YYERROR_ARG_LOC_IF]) m4_popdef([AT_API_PREFIX]) m4_popdef([AT_API_prefix]) m4_popdef([AT_VARIANT_IF]) +m4_popdef([AT_UNION_IF]) m4_popdef([AT_TOKEN_RAW_IF]) m4_popdef([AT_TOKEN_PREFIX]) m4_popdef([AT_TOKEN_CTOR_IF])