Consider this source file: test.scm:
(use-modules (language python def) (system syntax internal) ((oop dict) #:select (slask-it)))
(define-syntax m
(lambda (x)
(syntax-case x ()
((_ n m y)
(let* ((xx (syntax-_expression_ x))
(yy (pk 'yy (source-properties xx)))
(zz (syntax-_expression_ #'y))
(ww (pk 'ww (source-properties zz)))
(nn (assoc 'line yy))
(mm (assoc 'column yy))
(ii (assoc 'line ww))
(jj (assoc 'column ww)))
(if nn (set-cdr! nn (syntax->datum #'n)))
(if mm (set-cdr! mm (syntax->datum #'m)))
(if ii (set-cdr! ii (syntax->datum #'n)))
(if jj (set-cdr! jj (syntax->datum #'m)))
(set-source-properties! xx (pk yy))
(set-source-properties! zz (pk ww))
#'y)))))
(define f (slask-it (lambda () 1)))
;;-----------------------------------------------------
Never mind the m macro and concentrate on the last define of f. slask-it is an imported function
and equivalent to (lambda (x) x) (just to make sure to annynmous f. loading this source file an d quiring f lead to
cheme@(guile-user)> f
$10 = #<procedure 7fa3c1db93b0 at test.scm:4:2 ()>
Why 4:2? the line number is much higher and column number as well.
Regards
Stefan