X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/198b77a35965824ae4115a3488d3ecb72431c5f6..a49a9f1f9f8c50a7f749a7e3b9ca69e1ccb6bcb1:/t/gen-typegen.awk diff --git a/t/gen-typegen.awk b/t/gen-typegen.awk index a3a1527..ee94b0e 100755 --- a/t/gen-typegen.awk +++ b/t/gen-typegen.awk @@ -1,6 +1,6 @@ #!/bin/awk -f # -# Copyright © 2021-2022 Nick Bowler +# Copyright © 2021-2022, 2024 Nick Bowler # # Generate a mapping from a (random) integer to a list of type specifiers # represented by struct cdecl_declspec. Used internally by declgen to @@ -45,15 +45,15 @@ END { print "\tswitch (rngval) {" for (i = 0; i < count; i++) { - print "\tcase " i ":" - $0 = specs[i] + print "\tcase " i ":"; - for (j = 1; j <= NF; j++) { + n = split(specs[i], parts); + for (j = 1; j <= n; j++) { prefix = j == 1 ? "return" : ""; - printf "\t\t%6s gen_raw_typespec_(%s,\n", prefix, $j + printf "\t\t%6s gen_raw_typespec_(%s,\n", prefix, parts[j]; } - printf "\t\t%25sNULL%s;\n", "", substr("))))))))", 1, NF); + printf "\t\t%25sNULL%s;\n", "", substr("))))))))", 1, n); } print "\tdefault:\n\t\tassert(0);\n\t}" print "}\n"