aboutsummaryrefslogtreecommitdiffstats
path: root/interpret.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2015-06-25 23:12:55 +0300
committerArnold D. Robbins <arnold@skeeve.com>2015-06-25 23:12:55 +0300
commit056cd074c60d940d5bb46410f114a6c2584daaae (patch)
treee2b095b3740b35cc95a8b25fd10ee5d81288565e /interpret.h
parent5b246a31d63a31180136934adbed361651f325ba (diff)
parent3712ad29b6cddcf49bf1507f5677a49ccfcff83d (diff)
downloadegawk-056cd074c60d940d5bb46410f114a6c2584daaae.tar.gz
egawk-056cd074c60d940d5bb46410f114a6c2584daaae.tar.bz2
egawk-056cd074c60d940d5bb46410f114a6c2584daaae.zip
Merge branch 'master' into feature/cmake
Diffstat (limited to 'interpret.h')
-rw-r--r--interpret.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/interpret.h b/interpret.h
index 03532f43..1005174a 100644
--- a/interpret.h
+++ b/interpret.h
@@ -144,6 +144,7 @@ top:
case Op_push:
case Op_push_arg:
+ case Op_push_arg_untyped:
{
NODE *save_symbol;
bool isparam = false;
@@ -175,19 +176,23 @@ top:
case Node_var_new:
uninitialized_scalar:
- m->type = Node_var;
- m->var_value = dupnode(Nnull_string);
+ if (op != Op_push_arg_untyped) {
+ /* convert untyped to scalar */
+ m->type = Node_var;
+ m->var_value = dupnode(Nnull_string);
+ }
if (do_lint)
lintwarn(isparam ?
_("reference to uninitialized argument `%s'") :
_("reference to uninitialized variable `%s'"),
save_symbol->vname);
- m = dupnode(Nnull_string);
+ if (op != Op_push_arg_untyped)
+ m = dupnode(Nnull_string);
PUSH(m);
break;
case Node_var_array:
- if (op == Op_push_arg)
+ if (op == Op_push_arg || op == Op_push_arg_untyped)
PUSH(m);
else
fatal(_("attempt to use array `%s' in a scalar context"),