cs: avoid inlining error path internally

This commit is contained in:
Matthew Flatt 2020-11-09 11:43:58 -07:00
parent 91e3065991
commit c017ecbafe

View File

@ -25,16 +25,16 @@
(syntax-case stx (:test :contract :or-false)
[(_ who pred :contract ctc v)
#`(unless (pred v)
(raise-argument-error who ctc v))]
(#%$app/no-inline raise-argument-error who ctc v))]
[(_ who :test test-expr :contract ctc v)
#`(unless test-expr
(raise-argument-error who ctc v))]
(#%$app/no-inline raise-argument-error who ctc v))]
[(_ who :or-false pred v)
#`(unless (or (not v) (pred v))
(raise-argument-error who #,(format "(or/c #f ~a)" (syntax->datum #'pred)) v))]
(#%$app/no-inline raise-argument-error who #,(format "(or/c #f ~a)" (syntax->datum #'pred)) v))]
[(_ who pred :or-false v)
#`(unless (or (not v) (pred v))
(raise-argument-error who #,(format "(or/c ~a #f)" (syntax->datum #'pred)) v))]
(#%$app/no-inline raise-argument-error who #,(format "(or/c ~a #f)" (syntax->datum #'pred)) v))]
[(_ who pred v)
#`(check who pred :contract #,(format "~a" (syntax->datum #'pred)) v)]))