check protected syntax

svn: r2188
This commit is contained in:
Matthew Flatt 2006-02-10 17:52:07 +00:00
parent 692b99e636
commit 0e67ca6810
3 changed files with 39 additions and 2 deletions

View File

@ -183,6 +183,23 @@
(continuation-marks k)
'x))))
;; nested full continuation, mark shared
(wcm-test '(12 11 10)
(lambda ()
(let ([k (with-continuation-mark 'x 10
(begin0
(with-continuation-mark 'x 11
(let/cc k0
(begin0
(with-continuation-mark 'x 12
(let/cc k
k))
(cons 4 5))))
(cons 2 3)))])
(continuation-mark-set->list
(continuation-marks k)
'x))))
;; escape continuation, same thread
(wcm-test '(11 10)
(lambda ()

View File

@ -8,7 +8,8 @@
[eval-jit-enabled #t])
(namespace-require 'mzscheme)
(let* ([check-error-message (lambda (name proc)
(unless (memq name '(eq? not null? pair?))
(unless (memq name '(eq? not null? pair?
real? number? boolean?))
(let ([s (with-handlers ([exn? exn-message])
(proc 'bad))]
[name (symbol->string name)])
@ -59,6 +60,9 @@
(un #f 'null? 0)
(un #f 'pair? 0)
(un #f 'boolean? 0)
(un #t 'boolean? #t)
(un #t 'boolean? #f)
(bin #f 'eq? 0 10)
@ -74,6 +78,18 @@
(un #f 'negative? 1)
(un #t 'negative? -1)
(un #t 'real? 1)
(un #t 'real? (expt 2 100))
(un #t 'real? 1.0)
(un #f 'real? 1+2i)
(un #f 'real? 'apple)
(un #t 'number? 1)
(un #t 'number? (expt 2 100))
(un #t 'number? 1.0)
(un #t 'number? 1+2i)
(un #f 'number? 'apple)
(un #t 'not #f)
(un #f 'not #t)
(un #f 'not 10)

View File

@ -742,7 +742,8 @@
(module ++m mzscheme
(define ++x 10)
(provide (protect ++x)))
(define-syntax (++xm stx) #'100)
(provide (protect ++x ++xm)))
(module ++n mzscheme
(require ++m)
(define ++y ++x)
@ -762,6 +763,7 @@
(require ++m)
(test 10 values ++x)
(test 100 values ++xm)
(test 10 values ++y-macro2)
(let ()
@ -783,9 +785,11 @@
(err/rt-test (teval '++y-macro2) exn:fail:contract:variable?)
(err/rt-test (teval '++x) exn:fail:contract:variable?)
(err/rt-test (teval '++xm) exn:fail:contract:variable?)
(teval '(require ++m))
(err/rt-test (teval '++x) exn:fail:syntax?)
(err/rt-test (teval '++xm) exn:fail:syntax?)
(err/rt-test (teval '++y-macro2) exn:fail:syntax?)
(teval '(module zrt mzscheme