A workaround is to get location info from the outer syntax object ‘x’:
--8<---------------cut here---------------start------------->8---
(define-syntax zero!
(lambda (x)
(syntax-case x ()
((_ var)
(begin
(unless (identifier? #'var)
(syntax-violation 'zero! "identifier expected" x)) ; <-- here
#'(set! var 0))))))
--8<---------------cut here---------------end--------------->8---I’m not sure why ‘var’ has no location info. Ludo’.
