Mercurial > octave-nkf
comparison test/nest/test_nest.m @ 15236:44d6ffdf9479
Disallow new variables in nested functions (bug #36271)
* src/ov-usr-fcn.cc (octave_user_function::bind_automatic_vars):
Use force_varref.
* src/variables.cc (bind_ans): Use force_varref.
* src/pt-id.cc (tree_identifier::rvalue, tree_identifier::lvalue):
Identify static workspace errors.
* src/pt-id.h (tree_identifier::static_workspace_error): New function.
* src/symtab.cc (symbol_table::do_update_nest): Mark static workspaces.
* src/symtab.h (symbol_table::symbol_record::symbol_record_rep::is_added_static,
symbol_table::symbol_record::symbol_record_rep::mark_added_static,
symbol_table::symbol_record::symbol_record_rep::unmark_added_static,
symbol_table::symbol_record::is_added_static,
symbol_table::symbol_record::mark_added_static,
symbol_table::symbol_record::unmark_added_static, symbol_table::force_varref):
New functions.
(symbol_table::symbol_table): Initialize static_workspace to false.
(symbol_table::do_insert): Added force_add parameter. Mark records as
added_static.
(symbol_table::do_varref): Added force_add parameter.
* test/nest/test_nest.m: Added nest_eval tests.
* test/nest/module.mk: Added nest/nest_eval.m.
* test/nest/nest_eval.m: New file.
author | Max Brister <max@2bass.com> |
---|---|
date | Tue, 17 Apr 2012 21:24:20 -0600 |
parents | 604696c3ff93 |
children |
comparison
equal
deleted
inserted
replaced
15235:ab3d4c1affee | 15236:44d6ffdf9479 |
---|---|
45 %! scope1 (1); | 45 %! scope1 (1); |
46 | 46 |
47 %!test | 47 %!test |
48 %! scope3; | 48 %! scope3; |
49 | 49 |
50 %!assert (nest_eval ("x = 5;", "x = 6;"), 6); | |
51 %!assert (nest_eval ("x = 5;", "y = 6;"), 5); | |
52 %!assert (nest_eval ("x = -5; x = abs (x);", "y = 6;"), 5); | |
53 | |
50 %!error <D' undefined near line 7> scope2 | 54 %!error <D' undefined near line 7> scope2 |
51 %!error <handles to nested functions are not yet supported> no_closure (0) | 55 %!error <handles to nested functions are not yet supported> no_closure (0) |
52 %!error <handles to nested functions are not yet supported> no_closure (1) | 56 %!error <handles to nested functions are not yet supported> no_closure (1) |
53 | 57 %!error <can not add variable "y" to a static workspace> nest_eval ("y = 5;", "") |
58 %!error <can not add variable "y" to a static workspace> nest_eval ("y;", "") |