diff --git a/collects/racket/contract/scratch.rkt b/collects/racket/contract/scratch.rkt new file mode 100644 index 0000000000..4467506496 --- /dev/null +++ b/collects/racket/contract/scratch.rkt @@ -0,0 +1,59 @@ +#lang racket/base +(require racket/contract) + +(->i (#:kwd1 [x number?] + #:kwd2 [y number?]) + #:rest [x any/c] + any) +;=> duplicate identifier 'x' + + +#| +test cases: + +(->i (#:kwd1 [x number?] + #:kwd2 [x number?]) + (values [y number?] + [z number?])) +=> duplicate identifier 'x' + + +(->i (#:kwd1 [w number?] + #:kwd1 [x number?]) + (values [y number?] + [z number?])) +=> duplicate keyword + + +(->i (#:kwd1 [w number?] + #:kwd2 [x number?]) + (values [y number?] + [w number?])) +=> duplicate variable 'w' + + +(->i (#:kwd1 [w number?] + #:kwd2 [x number?]) + (values [y number?] + [y number?])) +=> duplicate variable 'y' + + +(->i (#:kwd1 [w number?] + #:kwd2 [x number?]) + (values [y number?] + [w number?])) +=> duplicate identifier 'w' + +(let ([values (λ (x) x)]) + (->i (#:kwd1 [w number?] + #:kwd2 [x number?]) + (values number?))) +;=> no error(?) + +(->i (#:kwd1 [x number?] + #:kwd2 [y number?]) + [x number?]) +;=> duplicate identifier 'x' + +|#