aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am3
-rw-r--r--test/Makefile.in3
-rw-r--r--test/Maketests30
-rw-r--r--test/let1.awk39
-rw-r--r--test/let1.ok5
-rw-r--r--test/let2.awk3
-rw-r--r--test/let2.ok2
-rw-r--r--test/let3.awk3
-rw-r--r--test/let3.ok2
-rw-r--r--test/let4.awk3
-rw-r--r--test/let4.ok2
-rw-r--r--test/let5.awk3
-rw-r--r--test/let5.ok2
-rw-r--r--test/let6.awk3
-rw-r--r--test/let6.ok2
15 files changed, 103 insertions, 2 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
index e6652965..6fc0b281 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1422,7 +1422,8 @@ BASIC_TESTS = \
getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \
hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \
- leadnl litoct longsub longwrds manglprm math membug1 memleak \
+ leadnl litoct let1 let2 let3 let4 let5 let6 \
+ longsub longwrds manglprm math membug1 memleak \
messages minusstr mmap8k nasty nasty2 negexp negrange nested \
nfldstr nfloop nfneg nfset nlfldsep nlinstr nlstrina noeffect \
nofile nofmtch noloop1 noloop2 nonl noparms nors nulinsrc \
diff --git a/test/Makefile.in b/test/Makefile.in
index ed60771d..87921f1b 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1688,7 +1688,8 @@ BASIC_TESTS = \
getline4 getline5 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 gsubtst7 gsubtst8 \
hex hex2 hsprint inpref inputred intest intprec iobug1 leaddig \
- leadnl litoct longsub longwrds manglprm math membug1 memleak \
+ leadnl litoct let1 let2 let3 let4 let5 let6 \
+ longsub longwrds manglprm math membug1 memleak \
messages minusstr mmap8k nasty nasty2 negexp negrange nested \
nfldstr nfloop nfneg nfset nlfldsep nlinstr nlstrina noeffect \
nofile nofmtch noloop1 noloop2 nonl noparms nors nulinsrc \
diff --git a/test/Maketests b/test/Maketests
index d21d4c6c..8d698604 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -548,6 +548,36 @@ litoct:
@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk --traditional < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+let1:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+let2:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+let3:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+let4:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+let5:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+let6:
+ @echo $@
+ @-AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
longsub:
@echo $@
@-AWKPATH="$(srcdir)" $(AWK) -f $@.awk < "$(srcdir)"/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/let1.awk b/test/let1.awk
new file mode 100644
index 00000000..c7e98468
--- /dev/null
+++ b/test/let1.awk
@@ -0,0 +1,39 @@
+function f0()
+{
+ @let (l0)
+ return l0
+}
+
+BEGIN {
+ l0 = "abc"
+ r0 = f0(42);
+ print r0 == 0 && r0 == ""
+}
+
+function f1(l1)
+{
+ @let (l1 = 42)
+ ;
+ return l1;
+}
+
+BEGIN {
+ print "f1", f1(3)
+}
+
+function f2(l2)
+{
+ @let (x = l2 + 1, x = x + 1, x = x + 1)
+ @let (x = x + 1, x = x + 1)
+ return l2 "-" x
+}
+
+BEGIN {
+ print "f2", f2(3)
+}
+
+BEGIN {
+ @let (l3 = 3, x = l3 + 1, x = x + 1, x = x + 1)
+ @let (x = x + 1, x = x + 1)
+ print "b3", l3 "-" x
+}
diff --git a/test/let1.ok b/test/let1.ok
new file mode 100644
index 00000000..153d9d96
--- /dev/null
+++ b/test/let1.ok
@@ -0,0 +1,5 @@
+gawk: let1.awk:9: warning: function `f0' called with more arguments than declared
+1
+f1 3
+f2 3-8
+b3 3-8
diff --git a/test/let2.awk b/test/let2.awk
new file mode 100644
index 00000000..da041c57
--- /dev/null
+++ b/test/let2.awk
@@ -0,0 +1,3 @@
+BEGIN {
+ @let (NR);
+}
diff --git a/test/let2.ok b/test/let2.ok
new file mode 100644
index 00000000..a97a22a4
--- /dev/null
+++ b/test/let2.ok
@@ -0,0 +1,2 @@
+gawk: let2.awk:2: error: cannot use special variable `NR' as a local variable
+EXIT CODE: 1
diff --git a/test/let3.awk b/test/let3.awk
new file mode 100644
index 00000000..5ecd0df8
--- /dev/null
+++ b/test/let3.awk
@@ -0,0 +1,3 @@
+BEGIN {
+ @let (awk::foo = 3);
+}
diff --git a/test/let3.ok b/test/let3.ok
new file mode 100644
index 00000000..bbad587c
--- /dev/null
+++ b/test/let3.ok
@@ -0,0 +1,2 @@
+gawk: let3.awk:2: error: local variable `awk::foo' cannot contain a namespace
+EXIT CODE: 1
diff --git a/test/let4.awk b/test/let4.awk
new file mode 100644
index 00000000..46c400a3
--- /dev/null
+++ b/test/let4.awk
@@ -0,0 +1,3 @@
+function fun() {
+ @let (fun = 42);
+}
diff --git a/test/let4.ok b/test/let4.ok
new file mode 100644
index 00000000..2a60aae6
--- /dev/null
+++ b/test/let4.ok
@@ -0,0 +1,2 @@
+gawk: let4.awk:2: error: function `fun': cannot use function name as local variable name
+EXIT CODE: 1
diff --git a/test/let5.awk b/test/let5.awk
new file mode 100644
index 00000000..a90f2e39
--- /dev/null
+++ b/test/let5.awk
@@ -0,0 +1,3 @@
+function fun() {
+ @let (awk::foo = 42);
+}
diff --git a/test/let5.ok b/test/let5.ok
new file mode 100644
index 00000000..e86742e8
--- /dev/null
+++ b/test/let5.ok
@@ -0,0 +1,2 @@
+gawk: let5.awk:2: error: local variable `awk::foo' cannot contain a namespace
+EXIT CODE: 1
diff --git a/test/let6.awk b/test/let6.awk
new file mode 100644
index 00000000..990c9647
--- /dev/null
+++ b/test/let6.awk
@@ -0,0 +1,3 @@
+function fun() {
+ @let (NR = 42);
+}
diff --git a/test/let6.ok b/test/let6.ok
new file mode 100644
index 00000000..c7fade5e
--- /dev/null
+++ b/test/let6.ok
@@ -0,0 +1,2 @@
+gawk: let6.awk:2: error: cannot use special variable `NR' as a local variable
+EXIT CODE: 1