On Fri, Oct 25, 2013 at 11:06 AM, Jim Rees <[email protected]> wrote:
> How about (eval '(lambda () expr)) -- if an error happens, it can only be > compile-time. > Good point, all the eval solutions should be wrapping expr in a lambda. This doesn't change the fact that you still need eval :/ > > > On Thu, Oct 24, 2013 at 8:48 PM, Alex Shinn <[email protected]> wrote: > >> On Fri, Oct 25, 2013 at 12:53 AM, Michael Montague <[email protected]>wrote: >> >>> My reader includes location information when it reads identifiers and >>> quote strips all that out. I want that to be part of the tests and I >>> want to be able to test for specific errors. I will put more thought >>> into it and figure out a way to make my tests work in (chibi test). >>> >> >> It's not really possible without implementation-specific >> extensions, because the error is happening at compile >> time, and there's no standard way to catch compile-time >> errors. >> >> You could write a low-level macro that evaluates it's body: >> >> (define-syntax test-syntax >> (er-macro-transformer >> (lambda (expr rename compare) >> (guard (else (exn '(test-assert "syntax bad" #f))) >> (eval expr) >> '(test-assert "syntax ok" #t))))) >> >> and maybe preserve the source info there, but it's still >> just falling back on eval. >> >> As an implementation-specific extension you could provide >> a syntax-guard form which can catch macro errors, which >> would be a cleaner solution. >> >> -- >> Alex >> >> >> _______________________________________________ >> Scheme-reports mailing list >> [email protected] >> http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports >> >> >
_______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
