diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-10-25 07:54:39 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-10-25 07:54:39 -0700 |
commit | 02a73c7785f5cdd7975cf10f83b430dfcc6778a3 (patch) | |
tree | 1255f56579ab82d05b164415e9bbcea1d4f2f15f /stdlib/doc-syms.tl | |
parent | 76b97f2c904c4e52d11e89406a9491aef77ef438 (diff) | |
download | txr-02a73c7785f5cdd7975cf10f83b430dfcc6778a3.tar.gz txr-02a73c7785f5cdd7975cf10f83b430dfcc6778a3.tar.bz2 txr-02a73c7785f5cdd7975cf10f83b430dfcc6778a3.zip |
repl: bugfix: half-baked source auto loading in completion.
The following behavior is observed. When we clean the compiled files
using "make clean-tlo", then autoloading during completion does not
work reliably for some symbols like dissassemble and compile.
The symbols don't complete, and afterward, the functions remain
undefined, and no longer autoload.
The root cause is that when some modules are loaded form source,
deferred warnings occur, due to code referring to symbols that
are defined later. But the provide_completions function installs
a catch for all exceptions, including deferred warnings. It
thereby abruptly terminates loads which trigger deferred warnings,
leaving them half-complete.
The fix is to catch only errors.
* parser.c (catch_error): New global variable.
(load_rcfile): Use catch_error from now on instead of locally
consing this.
(provide_completions): Use catch_error instead of catch_all.
(parse_init): gc-protect catch_error and initialize it.
Diffstat (limited to 'stdlib/doc-syms.tl')
0 files changed, 0 insertions, 0 deletions