Hi! In 2.1.8/2.2.0, walking up the stack to find the origin of an unbound variable error yields inaccurate location info. Consider this:
--8<---------------cut here---------------start------------->8--- (list 'a (symbol->string 'b) (symbol->string 'c) ;← unbound variable error reported here (FOO 'bar) ;… instead of here 3 4) --8<---------------cut here---------------end--------------->8--- We get: --8<---------------cut here---------------start------------->8--- $ guild compile -t value t.scm Backtrace: 18 (apply-smob/1 #<catch-closure 1312aa0>) In ice-9/boot-9.scm: 710:2 17 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>) In ice-9/eval.scm: 619:8 16 (_ #(#(#<directory (guile-user) 13ba1e0>))) In /gnu/store/4xir0dlzxl7h5v7va9rz8x3mvarlv2fd-profile/bin/guild: 72:17 15 (main _) In srfi/srfi-1.scm: 640:9 14 (for-each #<procedure 128be40 at scripts/compile.scm:248:14 (file)> ("t.scm")) In scripts/compile.scm: 251:26 13 (_ _) In system/base/target.scm: 57:6 12 (with-target _ _) In system/base/compile.scm: 152:6 11 (compile-file "t.scm" #:output-file _ #:from _ #:to _ #:env _ #:opts _ #:canonicalization _) 43:4 10 (call-once _) In ice-9/boot-9.scm: 846:4 9 (with-throw-handler _ _ _) In system/base/compile.scm: 59:11 8 (_) 155:11 7 (_ #<closed: file 160a0e0>) 224:14 6 (read-and-compile _ #:from _ #:to _ #:env _ #:opts _) 255:6 5 (compile _ #:from _ #:to _ #:env _ #:opts _) 183:32 4 (compile-fold _ #<tree-il (call (toplevel list) (const a) (call (toplevel symbol->string) (const b)) (call (toplevel symbol->string) (const c)) (call (toplevel FO…> …) In ice-9/boot-9.scm: 2309:4 3 (save-module-excursion #<procedure 1345d60 at language/bytecode/spec.scm:33:9 ()>) In language/bytecode/spec.scm: 35:19 2 (_) In t.scm: 3:6 1 (_) ;← incorrect line number! (expected line 4) In ice-9/boot-9.scm: 757:25 0 (dispatch-exception _ _ _) ice-9/boot-9.scm:757:25: In procedure dispatch-exception: ice-9/boot-9.scm:757:25: In procedure module-lookup: Unbound variable: FOO --8<---------------cut here---------------end--------------->8--- It Would Be Nice if we could get the right location info here, though I understand this is a corner case. Thoughts? Ludo’.