From 7231f11b6040d800162802f6977d0bb3774a5906 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 21 Nov 2018 09:26:43 -0700 Subject: [PATCH] cs: don't treat crashes as constract errors Converting "invalid memory reference" to an `exn:fail:contract` (which is the default conversion) hides crashes as success when a test expects an error. Also, fix a bug that was hiding as an expected excdeption. --- racket/src/cs/rumble/bytes.ss | 2 +- racket/src/cs/rumble/error.ss | 3 +++ racket/src/cs/rumble/procedure.ss | 8 ++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/racket/src/cs/rumble/bytes.ss b/racket/src/cs/rumble/bytes.ss index 8b88c21d31..baf41a5b1b 100644 --- a/racket/src/cs/rumble/bytes.ss +++ b/racket/src/cs/rumble/bytes.ss @@ -147,7 +147,7 @@ c))] [(a) (check who bytes? a) - (#2%bytevector-copy a)] + (#3%bytevector-copy a)] [() #vu8()] [args (let* ([size (let loop ([args args]) diff --git a/racket/src/cs/rumble/error.ss b/racket/src/cs/rumble/error.ss index 501380ac8d..9e5e2d9380 100644 --- a/racket/src/cs/rumble/error.ss +++ b/racket/src/cs/rumble/error.ss @@ -682,6 +682,9 @@ (string=? "attempt to assign undefined variable ~s" (condition-message v)))) (lambda (msg marks) (|#%app| exn:fail:contract:variable msg marks (car (condition-irritants v))))] + [(and (format-condition? v) + (string-prefix? "~?. Some debugging context lost" (condition-message v))) + exn:fail] [else exn:fail:contract]) (exn->string v) diff --git a/racket/src/cs/rumble/procedure.ss b/racket/src/cs/rumble/procedure.ss index 49a8f92ac8..684084eb79 100644 --- a/racket/src/cs/rumble/procedure.ss +++ b/racket/src/cs/rumble/procedure.ss @@ -37,18 +37,18 @@ (case-lambda [(proc args) (if (#%procedure? proc) - (chez:apply proc args) - (chez:apply (extract-procedure proc (length args)) args))] + (#2%apply proc args) + (#2%apply (extract-procedure proc (length args)) args))] [(proc) (raise-arity-error 'apply (|#%app| arity-at-least 2) proc)] [(proc . argss) (if (#%procedure? proc) - (chez:apply chez:apply proc argss) + (#2%apply #2%apply proc argss) (let ([len (let loop ([argss argss]) (cond [(null? (cdr argss)) (length (car argss))] [else (fx+ 1 (loop (cdr argss)))]))]) - (chez:apply chez:apply (extract-procedure proc len) argss)))])) + (#2%apply #2%apply (extract-procedure proc len) argss)))])) ;; See copy in "expander.sls" (define-syntax (|#%app| stx)