diff --git a/scheme/ikarus.boot.orig b/scheme/ikarus.boot.orig index 5f30cc9..6459b67 100644 Binary files a/scheme/ikarus.boot.orig and b/scheme/ikarus.boot.orig differ diff --git a/scheme/ikarus.exceptions.ss b/scheme/ikarus.exceptions.ss index deb2d44..34f61e0 100644 --- a/scheme/ikarus.exceptions.ss +++ b/scheme/ikarus.exceptions.ss @@ -15,13 +15,15 @@ (library (ikarus exceptions) - (export with-exception-handler raise raise-continuable error) + (export with-exception-handler raise raise-continuable + error assertion-violation) (import (only (rnrs) condition make-non-continuable-violation make-message-condition make-error make-who-condition - make-irritants-condition) + make-irritants-condition make-assertion-violation) (except (ikarus) - with-exception-handler raise raise-continuable error)) + with-exception-handler raise raise-continuable + error assertion-violation)) (define handlers @@ -69,6 +71,17 @@ (condition) (make-irritants-condition irritants))))) + (define (assertion-violation who msg . irritants) + (unless (string? msg) + (assertion-violation 'assertion-violation "message is not a string" msg)) + (raise + (condition + (make-assertion-violation) + (if who (make-who-condition who) (condition)) + (make-message-condition msg) + (if (null? irritants) + (condition) + (make-irritants-condition irritants))))) ) diff --git a/scheme/todo-r6rs.ss b/scheme/todo-r6rs.ss index 4581d8f..e2cd818 100755 --- a/scheme/todo-r6rs.ss +++ b/scheme/todo-r6rs.ss @@ -100,7 +100,7 @@ [apply C ba se] [asin C ba se] [assert C ba] - [assertion-violation S ba] + [assertion-violation C ba] [atan C ba se] [boolean=? C ba] [boolean? C ba se] @@ -159,7 +159,7 @@ [eq? C ba se] [equal? C ba se] [eqv? C ba se] - [error S ba] + [error C ba] [even? C ba se] [exact C ba] [exact-integer-sqrt C ba]