diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-04-13 19:24:31 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-04-13 19:24:31 -0700 |
commit | b95fa78d3bf572b190cb26bfc73a35d28a30d0dd (patch) | |
tree | aa73bedc8fe8ac0417de536bedfe28647a6c96cc /struct.c | |
parent | a9e4ee0f8d63dbdae72cdfa31ef16276ed251060 (diff) | |
download | txr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.tar.gz txr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.tar.bz2 txr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.zip |
bugfix: definitions must trigger autoload.
When a function, macro, variale, symbol macro or struct is
being defined, we must trigger any auto-load for that symbol.
If the definition is redefining a library symbol, then if
the autoload is later triggered, it will surprisingly
reinstate the library definition.
* eval.c (rt_defvarl, op_defsymacro, rt_defsymacro, rt_defun,
rt_defmacro): Insert calls to lisplib_try_load against the
symbol being defined.
* struct.c (make_struct_type): Likewise.
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -352,6 +352,8 @@ val make_struct_type(val name, val supers, val self = lit("make-struct-type"); val iter; + lisplib_try_load(name); + if (!listp(supers)) supers = cons(supers, nil); |