bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

m4: provide macros for api.value.type=union


From: Akim Demaille
Subject: m4: provide macros for api.value.type=union
Date: Sun, 31 Jan 2021 07:55:20 +0100

Adela,

I'm pushing this (I need it for ongoing work), you should
remove the corresponding definition from your wip about
"union" in D.

Cheers!

commit 6dc09317fb6185de7d48fdcb395f99350babcc33
Author: Akim Demaille <akim.demaille@gmail.com>
Date:   Sat Jan 30 17:17:18 2021 +0100

    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.

diff --git a/data/skeletons/bison.m4 b/data/skeletons/bison.m4
index a7fba9578..0375c755a 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 238a3657e..8411bfa36 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])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]