aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-09-26 23:20:53 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-09-26 23:20:53 +0300
commit0e54ab845160a222556047482ea02f7221f34e59 (patch)
treed041082ace3117cf144fdf6f46ada30ba2610e8b
parent3e762b6f62061974d152dd251f3e83cacca073e3 (diff)
downloadegawk-0e54ab845160a222556047482ea02f7221f34e59.tar.gz
egawk-0e54ab845160a222556047482ea02f7221f34e59.tar.bz2
egawk-0e54ab845160a222556047482ea02f7221f34e59.zip
Fatal with --posix on multidimensional arrays.
-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.in8
-rw-r--r--test/muldimposix.awk1
-rw-r--r--test/muldimposix.ok2
8 files changed, 38 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index caccdefe..ac4f78df 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 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 <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 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