diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-25 23:12:55 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-06-25 23:12:55 +0300 |
commit | 056cd074c60d940d5bb46410f114a6c2584daaae (patch) | |
tree | e2b095b3740b35cc95a8b25fd10ee5d81288565e /interpret.h | |
parent | 5b246a31d63a31180136934adbed361651f325ba (diff) | |
parent | 3712ad29b6cddcf49bf1507f5677a49ccfcff83d (diff) | |
download | egawk-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.h | 13 |
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"), |