Mercurial > octave
view test/bug-53599.tst @ 25201:c80323fe4938 stable
improve handling of global symbols (bug #53599)
* load-save.cc (install_loaded_variable): For global values, check
global status and link to global symbol if needed.
* symrec.h (symbol_record::symbol_record_rep::unbind_global_rep):
New function.
(symbol_record::symbol_record_rep::clear): Use unbind_global_rep to
clearing global symbols.
(symbol_record::symbol_record_rep::is_marked_global): New function.
(symbol_record::symbol_record_rep::is_global): Use it.
(symbol_record::symbol_record_rep::bind_fwd_rep): Don't forward again
if symbol is already global.
(symbol_record::unbind_fwd_rep): Eliminate argument. Change all uses.
(symbol_record::symbol_record_rep::unbind_fwd_rep):
Eliminate argument. Simplify.
* test/bug-53599.tst: New file.
* test/module.mk: Update.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 10 Apr 2018 22:22:37 -0400 |
parents | |
children | 34617dd78f02 |
line wrap: on
line source
%!function rval = sggval (val) %! global gval %! if (nargin == 1) %! gval = val; %! else %! rval = gval; %! endif %!endfunction %!test %! global gval %! assert (isempty (gval)) %! sggval (13); %! assert (sggval (), 13); %! assert (gval, 13); %! clear global gval %! assert (sggval (), []) %! gval = 42; %! assert (sggval (), []); %! clear gval %! global gval %! gval = 42; %! assert (sggval (), 42);