From b1e5676a0b41e67990dc949923aa4d5bdb3f1a73 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Sat, 13 Jan 2024 03:09:48 -0500 Subject: [PATCH] tests: Fix overquoting of SIMPLE_DECLS group names. The m4_car macro expands to a quoted string, so we need to use it unquoted in order to maintain a consistent amount of m4 quoting for the arguments expanded in both the test group name and in the test data. A bunch of group names had extra brackets which are now gone. Adjust all the test cases to consistently use extra quotes rather than quadrigraphs for array syntax. --- tests/decl-good.at | 126 +++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 62 deletions(-) diff --git a/tests/decl-good.at b/tests/decl-good.at index f352255..d22675c 100644 --- a/tests/decl-good.at +++ b/tests/decl-good.at @@ -15,31 +15,33 @@ AT_BANNER([C declarations]) -dnl _SIMPLE_DECL_ARG([n1 n2], [arg1], ..., [argn]) -dnl -dnl Similar to m4_argn, except the first argument has (up to) two argument -dnl numbers, and the first nonempty matching argument is selected. -dnl -dnl The expansion is followed by a newline. +# _SIMPLE_DECL_ARG([n], [list]) +# _SIMPLE_DECL_ARG([n1 n2], [list]) +# +# Select one element (indexed from 1) from the given quoted list of quoted +# elements, either one or two elements may be indicated; in the two index form, +# element n1 is selected unless it is blank, in which case element n2 is used. +# +# The expansion of this macro is followed by a newline. m4_define([_SIMPLE_DECL_ARG], [m4_default(m4_map_args_w([$1], [m4_argn(], [, $2)], [,])) ]) -dnl SIMPLE_DECLS_EXPLAIN([arg], [arg...]) -dnl -dnl Generate tests to validate correct parsing and output of each specification -dnl argument. The arguments are quoted list of quoted items, with the first -dnl item of each list being the C declaration or type name to be explained. -dnl -dnl The expected output is the fourth item of the list, or, if that is empty, -dnl the second item in the list (this allows the same lists to be used for -dnl both SIMPLE_DECLS_DECLARE and SIMPLE_DECLS_EXPLAIN even in case of -dnl various equivalent syntactic forms) -dnl -dnl The items should be related to each other as the user-visible test group -dnl name is determined only by the first argument. +# SIMPLE_DECLS_EXPLAIN([arg], [arg...]) +# +# Generate tests to validate correct parsing and output of each specification +# argument. The arguments are quoted list of quoted items, with the first +# item of each list being the C declaration or type name to be explained. +# +# The expected output is the fourth item of the list, or, if that is empty, +# the second item in the list (this allows the same lists to be used for +# both SIMPLE_DECLS_DECLARE and SIMPLE_DECLS_EXPLAIN even in case of +# various equivalent syntactic forms) +# +# The items should be related to each other as the user-visible test group +# name is determined only by the first argument. m4_define([SIMPLE_DECLS_EXPLAIN], -[AT_SETUP([Explain "m4_car($1)"m4_ifnblank([$2], [ etc.])]) +[AT_SETUP([Explain "]m4_car($1)["m4_ifnblank([$2], [ etc.])]) AT_DATA([test.dat], [m4_map_args([explain m4_curry([_SIMPLE_DECL_ARG], [1])], $@)]) AT_DATA([expout], @@ -47,21 +49,21 @@ AT_DATA([expout], AT_CHECK([cdecl99 -f test.dat], [0], [expout]) AT_CLEANUP]) -dnl SIMPLE_DECLS_DECLARE([arg], [arg ...]) -dnl -dnl Similar to SIMPLE_DECLS_EXPLAIN, except in the opposite direction. The -dnl arguments are quoted lists of quoted items, with the second item of each -dnl list being the input query. -dnl -dnl The expected output is the third item of the list, or, if that is empty, -dnl the first item in the list (this allows the same lists to be used for -dnl both SIMPLE_DECLS_DECLARE and SIMPLE_DECLS_EXPLAIN even in the case -dnl of various equivalent syntactic forsm) -dnl -dnl The items should be related to each other as the user-visible test group -dnl name is determined only by the first argument. +# SIMPLE_DECLS_DECLARE([arg], [arg ...]) +# +# Similar to SIMPLE_DECLS_EXPLAIN, except in the opposite direction. The +# arguments are quoted lists of quoted items, with the second item of each +# list being the input query. +# +# The expected output is the third item of the list, or, if that is empty, +# the first item in the list (this allows the same lists to be used for +# both SIMPLE_DECLS_DECLARE and SIMPLE_DECLS_EXPLAIN even in the case +# of various equivalent syntactic forsm) +# +# The items should be related to each other as the user-visible test group +# name is determined only by the first argument. m4_define([SIMPLE_DECLS_DECLARE], -[AT_SETUP([Declare "m4_car($1)"m4_ifnblank([$2], [ etc.])]) +[AT_SETUP([Declare "]m4_car($1)["m4_ifnblank([$2], [ etc.])]) AT_DATA([test.dat], [m4_map_args([m4_curry([_SIMPLE_DECL_ARG], [2])], $@)]) AT_DATA([expout], @@ -69,17 +71,17 @@ AT_DATA([expout], AT_CHECK([cdecl99 -f test.dat], [0], [expout]) AT_CLEANUP]) -dnl SIMPLE_DECLS_SIMPLIFY([arg], [arg ...]) -dnl -dnl Generate tests to validate the expected operation of the "simplify" -dnl command. The arguments are a quoted list of quoted items, with the -dnl first item of each list being the input declaration and the second -dnl item being the expected simplified output. -dnl -dnl The items should be related to each other as the user-visible test -dnl group name is determined only by the first argument. +# SIMPLE_DECLS_SIMPLIFY([arg], [arg ...]) +# +# Generate tests to validate the expected operation of the "simplify" +# command. The arguments are a quoted list of quoted items, with the +# first item of each list being the input declaration and the second +# item being the expected simplified output. +# +# The items should be related to each other as the user-visible test +# group name is determined only by the first argument. m4_define([SIMPLE_DECLS_SIMPLIFY], -[AT_SETUP([Simplify "m4_car($1)"m4_ifnblank([$2], [ etc.])]) +[AT_SETUP([Simplify "]m4_car($1)["m4_ifnblank([$2], [ etc.])]) AT_DATA([test.dat], [m4_map_args([simplify m4_curry([_SIMPLE_DECL_ARG], [1])], $@)]) AT_DATA([expout], @@ -87,7 +89,7 @@ AT_DATA([expout], AT_CHECK([cdecl99 -f test.dat], [0], [expout]) AT_CLEANUP]) -dnl SIMPLE_DECLS(arg, [arg ...]) +# SIMPLE_DECLS(arg, [arg ...]) m4_define([SIMPLE_DECLS], [SIMPLE_DECLS_EXPLAIN($@) SIMPLE_DECLS_DECLARE($@)]) @@ -106,19 +108,19 @@ SIMPLE_DECLS( SIMPLE_DECLS( [[int (x)()], [declare x as function returning int], [int x()]]) -dnl Check that function reduction does not occur in english parses +# Check that function reduction does not occur in english parses SIMPLE_DECLS( [[int (x)], [type function (x) returning int], [], [declare x as int]]) SIMPLE_DECLS( - [[int x@<:@@:>@], [declare x as array of int]], - [[int @<:@@:>@], [type array of int]]) + [[[int x[]]], [declare x as array of int]], + [[[int []]], [type array of int]]) SIMPLE_DECLS( - [[int x@<:@n@:>@], [declare x as variable-length array n of int]], - [[int x@<:@*@:>@], [declare x as variable-length array of int]], - [[int @<:@n@:>@], [type variable-length array n of int]], - [[int @<:@*@:>@], [type variable-length array of int]]) + [[[int x[n]]], [declare x as variable-length array n of int]], + [[[int x[*]]], [declare x as variable-length array of int]], + [[[int [n]]], [type variable-length array n of int]], + [[[int [*]]], [type variable-length array of int]]) SIMPLE_DECLS( [[int f(a, b)], [declare f as function (a, b) returning int]], @@ -197,22 +199,22 @@ SIMPLE_DECLS_EXPLAIN( [[int (x())], [declare x as function returning int], [int x()]], [[int ((x)())], [declare x as function returning int], [int x()]]) -dnl Test that english-only keywords are not rejected as idenfitiers in C mode. +# Test that english-only keywords are not rejected as idenfitiers in C mode. SIMPLE_DECLS_EXPLAIN( - [[of array@<:@@:>@], [declare array as array of of]], - [[returning as(function)], + [[[of array[]]], [declare array as array of of]], + [[[returning as(function)]], [declare as as function (function) returning returning]], - [[pointer *declare], [declare declare as pointer to pointer]], - [[type to], [declare to as type]]) + [[[pointer *declare]], [declare declare as pointer to pointer]], + [[[type to]], [declare to as type]]) -dnl Test the explain command with multiple declarators, which produces -dnl multiple lines of English output. +# Test the explain command with multiple declarators, which produces +# multiple lines of English output. SIMPLE_DECLS_EXPLAIN( [[int x, y], [m4_n([declare x as int])declare y as int]]) -dnl Test the simplify command with multiple declarators. This is the only -dnl command in cdecl99 which will print a single C declaration with more than -dnl one full declarator. +# Test the simplify command with multiple declarators. This is the only +# command in cdecl99 which will print a single C declaration with more than +# one full declarator. SIMPLE_DECLS_SIMPLIFY( [[int x, y], [int x, y]], [[int (x), ((y))], [int x, y]]) -- 2.43.2