From 0e54ab845160a222556047482ea02f7221f34e59 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sat, 26 Sep 2015 23:20:53 +0300 Subject: Fatal with --posix on multidimensional arrays. --- ChangeLog | 6 ++++++ awkgram.c | 4 ++++ awkgram.y | 4 ++++ test/ChangeLog | 5 +++++ test/Makefile.am | 8 ++++++++ test/Makefile.in | 8 ++++++++ test/muldimposix.awk | 1 + test/muldimposix.ok | 2 ++ 8 files changed, 38 insertions(+) create mode 100644 test/muldimposix.awk create mode 100644 test/muldimposix.ok diff --git a/ChangeLog b/ChangeLog index caccdefe..ac4f78df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-09-26 Arnold D. Robbins + + * awkgram.y (yylex): Diagnose multidimensional arrays for + traditional/posix (fatal) or lint. Thanks to Ed Morton + for the bug report. + 2015-09-25 Arnold D. Robbins * config.guess, config.sub, config.rpath: Updated. diff --git a/awkgram.c b/awkgram.c index fa88a507..728bc29d 100644 --- a/awkgram.c +++ b/awkgram.c @@ -5563,6 +5563,10 @@ retry: c = nextc(true); pushback(); if (c == '[') { + if (do_traditional) + fatal(_("multidimensional arrays are a gawk extension")); + if (do_lint) + lintwarn(_("multidimensional arrays are a gawk extension")); yylval = GET_INSTRUCTION(Op_sub_array); lasttok = ']'; } else { diff --git a/awkgram.y b/awkgram.y index f311f29a..0da7fbe1 100644 --- a/awkgram.y +++ b/awkgram.y @@ -3224,6 +3224,10 @@ retry: c = nextc(true); pushback(); if (c == '[') { + if (do_traditional) + fatal(_("multidimensional arrays are a gawk extension")); + if (do_lint) + lintwarn(_("multidimensional arrays are a gawk extension")); yylval = GET_INSTRUCTION(Op_sub_array); lasttok = ']'; } else { diff --git a/test/ChangeLog b/test/ChangeLog index 10bccd5a..8a227232 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2015-09-26 Arnold D. Robbins + + * Makefile.am (muldimposix): New test. + * muldimposix.awk, muldimposix.ok: New files. + 2015-09-18 Arnold D. Robbins * Makefile.am (fpat5): New test. diff --git a/test/Makefile.am b/test/Makefile.am index 6996b1c7..27ccb76a 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -509,6 +509,8 @@ EXTRA_DIST = \ manglprm.ok \ manyfiles.awk \ manyfiles.ok \ + muldimposix.awk \ + muldimposix.ok \ match1.awk \ match1.ok \ match2.awk \ @@ -1069,6 +1071,7 @@ GAWK_EXT_TESTS = \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 mbstr2 \ + muldimposix \ nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ @@ -2088,6 +2091,11 @@ negtime:: @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @AWKPATH="$(srcdir)" $(AWK) -f checknegtime.awk "$(srcdir)"/$@.ok _$@ && rm -f _$@ +muldimposix:: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ + # Targets generated for other tests: include Maketests diff --git a/test/Makefile.in b/test/Makefile.in index ba5da05f..787fba15 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -766,6 +766,8 @@ EXTRA_DIST = \ manglprm.ok \ manyfiles.awk \ manyfiles.ok \ + muldimposix.awk \ + muldimposix.ok \ match1.awk \ match1.ok \ match2.awk \ @@ -1325,6 +1327,7 @@ GAWK_EXT_TESTS = \ include include2 indirectbuiltin indirectcall indirectcall2 \ lint lintold lintwarn \ manyfiles match1 match2 match3 mbstr1 mbstr2 \ + muldimposix \ nastyparm negtime next nondec nondec2 \ patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \ profile0 profile1 profile2 profile3 profile4 profile5 profile6 profile7 pty1 \ @@ -2524,6 +2527,11 @@ negtime:: @echo $@ @TZ=GMT AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @AWKPATH="$(srcdir)" $(AWK) -f checknegtime.awk "$(srcdir)"/$@.ok _$@ && rm -f _$@ + +muldimposix:: + @echo $@ + @AWKPATH="$(srcdir)" $(AWK) -f $@.awk --posix >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@ Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: diff --git a/test/muldimposix.awk b/test/muldimposix.awk new file mode 100644 index 00000000..135b3246 --- /dev/null +++ b/test/muldimposix.awk @@ -0,0 +1 @@ +BEGIN { a[1][2] = 3 } diff --git a/test/muldimposix.ok b/test/muldimposix.ok new file mode 100644 index 00000000..3594fab0 --- /dev/null +++ b/test/muldimposix.ok @@ -0,0 +1,2 @@ +gawk: muldimposix.awk:1: fatal: multidimensional arrays are a gawk extension +EXIT CODE: 2 -- cgit v1.2.3