diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-03-30 23:06:46 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-03-30 23:06:46 -0700 |
commit | f4edb0505467ce4fe4ac23f1889062d0bbddb94d (patch) | |
tree | c9c9b022ac41fcbc11c5f23d9c957ea2d83343f6 /tags.tl | |
parent | af8b7db50fcc3ed34bfe1136d1664d59e89ba1a9 (diff) | |
download | txr-f4edb0505467ce4fe4ac23f1889062d0bbddb94d.tar.gz txr-f4edb0505467ce4fe4ac23f1889062d0bbddb94d.tar.bz2 txr-f4edb0505467ce4fe4ac23f1889062d0bbddb94d.zip |
Test of a package-related file compilation problem.
This test currently fails. This problem was reported
by Paul Patience, with a repro test case.
The issue is that when compile-file is processing a
(defpackage x ...) form, and the package x already exists, it
fails to recognize the form as a package-manipulating form,
and therefore fails to introduce a "fence" in the output
so that subsequent material is placed into a new top-level
object.
The compiled image fo the (defun foo:fun ()) form in
program.tl causes an error: the foo package does not
exist. This is because the symbol foo:fun is being read
as part of the same object which holds the compiled image of
the defpackage form which defines the package.
It's essentially the same problem as this
(let ()
(defpackage :foo)
foo:bar)
The (defpackage ...) cannot execute until the entire form is
read, but that form contains foo:bar which requires the foo
package to exist.
* tests/019/compile-package.tl: New file.
* tests/019/data/program.tl: Likewise.
Diffstat (limited to 'tags.tl')
0 files changed, 0 insertions, 0 deletions