aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--awkgram.c4
-rw-r--r--awkgram.y4
-rw-r--r--test/ChangeLog5
-rw-r--r--test/Makefile.am8
-rw-r--r--test/Makefile.in9
-rw-r--r--test/muldimposix.awk1
-rw-r--r--test/muldimposix.ok2
8 files changed, 39 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 756696b5..a716616e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * 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 <arnold@skeeve.com>
* config.guess, config.sub, config.rpath: Updated.
diff --git a/awkgram.c b/awkgram.c
index 68710972..8fd73b26 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -5963,6 +5963,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 18530eb1..6df43046 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -3543,6 +3543,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 49b64cbd..2e4217f2 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (muldimposix): New test.
+ * muldimposix.awk, muldimposix.ok: New files.
+
2015-09-18 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am (fpat5): New test.
diff --git a/test/Makefile.am b/test/Makefile.am
index db842fb4..9545920c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -525,6 +525,8 @@ EXTRA_DIST = \
manglprm.ok \
manyfiles.awk \
manyfiles.ok \
+ muldimposix.awk \
+ muldimposix.ok \
match1.awk \
match1.ok \
match2.awk \
@@ -1114,6 +1116,7 @@ GAWK_EXT_TESTS = \
include include2 indirectbuiltin indirectcall indirectcall2 \
lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 mbstr2 \
+ muldimposix \
nastyparm negtime next nondec nondec2 \
nonfatal1 nonfatal2 nonfatal3 \
patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \
@@ -2173,6 +2176,11 @@ dbugeval2:
@AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(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 c140d966..ce791a2f 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -782,6 +782,8 @@ EXTRA_DIST = \
manglprm.ok \
manyfiles.awk \
manyfiles.ok \
+ muldimposix.awk \
+ muldimposix.ok \
match1.awk \
match1.ok \
match2.awk \
@@ -1370,6 +1372,7 @@ GAWK_EXT_TESTS = \
include include2 indirectbuiltin indirectcall indirectcall2 \
lint lintold lintwarn \
manyfiles match1 match2 match3 mbstr1 mbstr2 \
+ muldimposix \
nastyparm negtime next nondec nondec2 \
nonfatal1 nonfatal2 nonfatal3 \
patsplit posix printfbad1 printfbad2 printfbad3 printfbad4 printhuge procinfs \
@@ -2608,6 +2611,12 @@ dbugeval2:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -D -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(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