The following test case still fails:

    (expect-fail "application of macro"
      (let ((f (lambda (p a b) (p a b))))
        (catch 'wrong-type-arg
          (lambda ()
            (let ((foo (procedure-source f)))
              (f and #t #t)
              (equal? (procedure-source f) foo)))
          (lambda (key . args)
            #t))))

The problem is, that 'and' is accepted as a parameter, and this then leads
to a rewrite of the function 'f'.

I remember that the last time this bug was reported, the conclusion was
that this would require changes to psyntax.ss or so.  Since I did not
understand anything within the corresponding files, I did not look any
further into it.

In the meantime, I realize, psyntax.ss has been changed for some other
reasons, which makes me bring up the above issue again in the hope that
one of the macro gurus will be able to fix it :-)

BTW:  I don't know whether the 'wrong-type-arg error type will be
appropriate if the problem is fixed.  I just wrote the test case such that
the problem won't be forgotten.

Thanks,
Dirk

Reply via email to