aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--builtin.c1
-rw-r--r--test/ChangeLog3
-rw-r--r--test/Makefile.am6
-rw-r--r--test/Makefile.in16
-rw-r--r--test/Maketests10
-rw-r--r--test/stupid3.awk16
-rw-r--r--test/stupid3.ok2
-rw-r--r--test/stupid4.awk11
-rw-r--r--test/stupid4.ok2
10 files changed, 70 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 496c341d..0c2d928e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -20,6 +20,11 @@
for Node_var_new; variables can exist but have not been assigned
a value.
+ Unrelated:
+
+ * builtin.c (do_typeof): Handle Node_array_ref also. Thanks to
+ Denis Shirokov <cosmogen@gmail.com> for the report.
+
2019-12-22 Arnold D. Robbins <arnold@skeeve.com>
* config.guess: Updated from GNULIB.
diff --git a/builtin.c b/builtin.c
index e09a48bd..f8ca0371 100644
--- a/builtin.c
+++ b/builtin.c
@@ -4159,6 +4159,7 @@ do_typeof(int nargs)
}
break;
case Node_var_new:
+ case Node_array_ref:
res = "untyped";
deref = false;
break;
diff --git a/test/ChangeLog b/test/ChangeLog
index 05e60edc..30470034 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -5,6 +5,9 @@
* Makefile.am (EXTRA_DIST): New tests, stupid1 and stupid2.
* stupid1.awk, stupid1.ok: New files.
* stupid2.awk, stupid2.ok: New files.
+ * Makefile.am (EXTRA_DIST): New tests, stupid3 and stupid4.
+ * stupid3.awk, stupid3.ok: New files.
+ * stupid4.awk, stupid4.ok: New files.
2019-11-09 Alexey Pawlow <alexey.pawlow@gmail.com>
diff --git a/test/Makefile.am b/test/Makefile.am
index 14e5b0a5..aa64110c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1176,6 +1176,10 @@ EXTRA_DIST = \
stupid1.ok \
stupid2.awk \
stupid2.ok \
+ stupid3.awk \
+ stupid3.ok \
+ stupid4.awk \
+ stupid4.ok \
subamp.awk \
subamp.in \
subamp.ok \
@@ -1395,7 +1399,7 @@ GAWK_EXT_TESTS = \
sandbox1 shadow shadowbuiltin sortfor sortfor2 sortu \
sourcesplit split_after_fpat \
splitarg4 strftfld strftime strtonum strtonum1 \
- stupid1 stupid2 \
+ stupid1 stupid2 stupid3 stupid4 \
switch2 symtab1 symtab2 \
symtab3 symtab4 symtab5 symtab6 symtab7 symtab8 symtab9 symtab10 \
timeout typedregex1 typedregex2 typedregex3 typedregex4 \
diff --git a/test/Makefile.in b/test/Makefile.in
index 0fae9058..9557b1e4 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1435,6 +1435,10 @@ EXTRA_DIST = \
stupid1.ok \
stupid2.awk \
stupid2.ok \
+ stupid3.awk \
+ stupid3.ok \
+ stupid4.awk \
+ stupid4.ok \
subamp.awk \
subamp.in \
subamp.ok \
@@ -1654,7 +1658,7 @@ GAWK_EXT_TESTS = \
sandbox1 shadow shadowbuiltin sortfor sortfor2 sortu \
sourcesplit split_after_fpat \
splitarg4 strftfld strftime strtonum strtonum1 \
- stupid1 stupid2 \
+ stupid1 stupid2 stupid3 stupid4 \
switch2 symtab1 symtab2 \
symtab3 symtab4 symtab5 symtab6 symtab7 symtab8 symtab9 symtab10 \
timeout typedregex1 typedregex2 typedregex3 typedregex4 \
@@ -4764,6 +4768,16 @@ stupid2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+stupid3:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+stupid4:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
switch2:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index 6c8ebf08..e339b2b9 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1921,6 +1921,16 @@ stupid2:
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+stupid3:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
+stupid4:
+ @echo $@
+ @AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) "$(srcdir)"/$@.ok _$@ && rm -f _$@
+
switch2:
@echo $@
@AWKPATH="$(srcdir)" $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
diff --git a/test/stupid3.awk b/test/stupid3.awk
new file mode 100644
index 00000000..fa57e65d
--- /dev/null
+++ b/test/stupid3.awk
@@ -0,0 +1,16 @@
+BEGIN {
+ test(someidentifier)
+}
+
+
+function test(p)
+{
+ test0(p)
+ p
+ test0(p)
+}
+
+function test0(p)
+{
+ print "TYPEOF: " typeof(p)
+}
diff --git a/test/stupid3.ok b/test/stupid3.ok
new file mode 100644
index 00000000..11beb6c9
--- /dev/null
+++ b/test/stupid3.ok
@@ -0,0 +1,2 @@
+TYPEOF: untyped
+TYPEOF: untyped
diff --git a/test/stupid4.awk b/test/stupid4.awk
new file mode 100644
index 00000000..8b36d0c2
--- /dev/null
+++ b/test/stupid4.awk
@@ -0,0 +1,11 @@
+BEGIN {
+ test(someidentifier)
+}
+
+
+function test(a)
+{
+ print typeof(a)
+ a
+ print typeof(a)
+}
diff --git a/test/stupid4.ok b/test/stupid4.ok
new file mode 100644
index 00000000..1271dad1
--- /dev/null
+++ b/test/stupid4.ok
@@ -0,0 +1,2 @@
+untyped
+untyped