On this page:
8.18
top
up

15Macro TestingπŸ”— i

syntax

( phase1-eval ct-exprmaybe-quotemaybe-catch?)

maybe-quote =
| #:quotequote-id
maybe-catch? =
| #:catch?catch?
Evaluates ct-expr at compile time and quotes the result using quote-id, which defaults to quote . Another suitable argument for quote-id is quote-syntax .

If catch? is #t, then if the evaluation of ct-expr raises a compile-time exception, it is caught and converted to a run-time exception.

Examples:
> (struct point(xy))

'(struct:point point point? (point-y point-x) (#f #f) #t)

#<syntax (struct:point point point? (point-y point-x) (#f #f) #t)>

Added in version 6.3 of package base.

Equivalent to (#%expression expr) except if expansion of expr causes a compile-time exception to be raised; in that case, the compile-time exception is converted to a run-time exception raised when the expression is evaluated.

Use convert-compile-time-error to write tests for compile-time error checking like syntax errors:

Examples:
> (check-exn #rx"missing an \"else\" expression"
> (check-exn #rx"missing formals and body"

--------------------

FAILURE

name: check-exn

location: eval:6:0

params: '(#rx"missing formals and body" #<procedure>)

message:"Wrong exception raised"

exn-message:"eval:6:0: lambda: bad syntax\nin: (lambda)"

exn:

#(struct:exn:fail:syntax "eval:6:0: lambda: bad syntax\nin: (lambda)" #<continuation-mark-set> (#<syntax:eval:6:0 (lambda)>))

--------------------

Without the use of convert-compile-time-error , the checks above would not be executed because the test program would not compile.

Added in version 6.3 of package base.

syntax

( convert-syntax-error expr)

Like convert-compile-time-error , but only catches compile-time exn:fail:syntax? exceptions and sets error-print-source-location to #f around the expansion of expr to make the message easier to match exactly.

Example:
> (check-exn #rx"^lambda: bad syntax$"

Added in version 6.3 of package base.

top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /