emacs-bug-tracker
[Top][All Lists]
Advanced

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

[debbugs-tracker] bug#29520: closed (peval leaves behind dangling lexica


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#29520: closed (peval leaves behind dangling lexical reference)
Date: Fri, 16 Mar 2018 03:43:02 +0000

Your message dated Thu, 15 Mar 2018 23:41:32 -0400
with message-id <address@hidden>
and subject line Re: bug#29520: peval leaves behind dangling lexical reference
has caused the debbugs.gnu.org bug report #29520,
regarding peval leaves behind dangling lexical reference
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
29520: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=29520
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: Compilation error. Date: Fri, 1 Dec 2017 13:08:46 +0100
Consider the code at the end of this post. un-commenting f-scope reveals the compiler error:

;;; ERROR: unbound lexical #<tree-il (lexical x #{x 190}#)>

But without it the globalified versoin f-scope2 comiles just fine indicating an error in the compiler.

Regards
Stefan



(define-syntax-rule (<p-lambda> (c) code ...) (lambda (a b cc d c) code ...))
(define-syntax ..
  (syntax-rules ()
    ((.. (f a ...)) (f x y z a ...))
    ((.. (s ...) (f a ...))
     (f x y z a ...))))
#;
(define (f-scope f)
  (define (g f x3)
    (define (h x2 n m)
      (lambda xx (apply (f-skip n m) x2)))
    (<p-lambda> (c)
      (.. (c2) (f c))
      (let ((n N) (m M))
        (.. ((h x3 n m) c2)))))

  (lambda x (apply (g f x) x)))

(define (h x2 n m)
  (lambda xx (apply (f-skip n m) x2)))

(define (g f x3)
  (<p-lambda> (c)
    (.. (c2) (f c))
    (let ((n N) (m M))
      (.. ((h x3 n m) c2)))))

(define (f-scope2 f)
  (lambda x (apply (g f x) x)))


--- End Message ---
--- Begin Message --- Subject: Re: bug#29520: peval leaves behind dangling lexical reference Date: Thu, 15 Mar 2018 23:41:32 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)
Mark H Weaver <address@hidden> writes:

> diff --git a/module/language/tree-il/peval.scm 
> b/module/language/tree-il/peval.scm
> index 993fa0ad6..13b7d9bc4 100644
> --- a/module/language/tree-il/peval.scm
> +++ b/module/language/tree-il/peval.scm
> @@ -1585,11 +1585,15 @@ top-level bindings from ENV and return the resulting 
> expression."
>           (and (not opt) rest (not kw)
>                (match body
>                  (($ <primcall> _ 'apply
> -                    (($ <lambda> _ _ (and lcase ($ <lambda-case>)))
> +                    (($ <lambda> _ _ (and lcase ($ <lambda-case> _ req1)))
>                       ($ <lexical-ref> _ _ sym)
>                       ...))
>                   (and (equal? sym gensyms)
>                        (not (lambda-case-alternate lcase))
> +                      (<= (length req) (length req1))
> +                      (every (lambda (s)
> +                               (= (lexical-refcount s) 1))
> +                             sym)
>                        lcase))
>                  (_ #f))))
>         (let* ((vars (map lookup-var gensyms))

Applied in commit b56e084c77914a7fde558e8fd28a218759a4ddd7 on the
stable-2.2 branch.  I'm closing this bug now, but feel free to reopen if
you still see related problems.

     Thanks!
       Mark


--- End Message ---

reply via email to

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