bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#73984: Compiler/interpreter doesn't handle the macro defined after i


From: Artyom Bologov
Subject: bug#73984: Compiler/interpreter doesn't handle the macro defined after it's used
Date: Thu, 24 Oct 2024 16:45:11 +0400

Hello y'all,

So I'm working on a project with a moderate amount of macros and some
tangled code paths. Which often means I have non-linear and
hard-to-figure-out inter-dependencies between pieces of code. One of
them bit me today: a macro that was defined after a procedure it was
used in, resulted in an "Unbound variable" error when the procedure was
called. The procedure was called long after the macro was finally
defined, so it shouldn't have been a problem. Find the test file
attached and use it as:

```
GUILE_LOAD_PATH=.:$GUILE_LOAD_PATH guile
scheme@(guile-user)> (use-modules (test))
;;; note: source file ./test.scm
;;;       newer than compiled /.../test.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling ./test.scm
;;; test.scm:7:5: warning: possibly unbound variable `a'
;;; test.scm:8:5: warning: possibly unbound variable `b'
;;; compiled /.../test.scm.go
scheme@(guile-user)> (testing)
;; ice-9/boot-9.scm:1685:16: In procedure raise-exception:
;; Unbound variable: a
;; ...
```

Attachment: test.scm
Description: Scheme file to test forward definition problem

The expected behavior is that both "a" and "b" are defined and macro
expanded during compilation, regardless of whether it was defined before
or after use.

I'm not sure if that's a valid bug, but here you go anyway.

Best of love,
-- 
Artyom Bologov
https://aartaka.me

reply via email to

[Prev in Thread] Current Thread [Next in Thread]