(define errors
'((missing (missing) mce-unbound)
(arity (((lambda (x) x) 1 2)) mce-arity)
(call ((1 2)) mce-not-procedure)
(syntax ((if #t 1)) mce-syntax)
(parameters ((lambda (x x) x)) mce-syntax)))
(define (error-key thunk)
(catch #t (lambda () (thunk) 'returned)
(lambda (key . arguments) key)))
(define (errors-agree? example)
(let ((program (cadr example)) (expected (caddr example)))
(and (eq? (error-key (lambda () (run-scheme program))) expected)
(eq? (error-key (lambda () (run-inside program))) expected))))