Fix parsing for keyword & rest arg function types

Closes PR 14309

original commit: b9493ab142e910053ffe7db7d30fe434e8ba2de1
This commit is contained in:
Asumu Takikawa 2014-01-22 21:28:30 -05:00
parent 9926acb187
commit 99f3f62a6e
2 changed files with 19 additions and 1 deletions

View File

@ -323,7 +323,7 @@
(parse-type #'rng)
: (-FS (attribute latent.positive) (attribute latent.negative))
: (attribute latent.object))]
[(dom:non-keyword-ty ... rest:non-keyword-ty ddd:star kws:keyword-tys ... :->^ rng)
[(dom:non-keyword-ty ... kws:keyword-tys ... rest:non-keyword-ty ddd:star :->^ rng)
(make-Function
(list (make-arr
(parse-types #'(dom ...))

View File

@ -135,6 +135,24 @@
[FAIL (Struct-Type Integer)]
[FAIL (Struct-Type foo)]
[Struct-TypeTop (make-StructTypeTop)]
;; keyword function types
[(#:a String -> String)
(->optkey [] #:a -String #t -String)]
[([#:a String] -> String)
(->optkey [] #:a -String #f -String)]
[(#:a String #:b String -> String)
(->optkey [] #:a -String #t #:b -String #t -String)]
[([#:a String] #:b String -> String)
(->optkey [] #:a -String #f #:b -String #t -String)]
[(#:a String [#:b String] -> String)
(->optkey [] #:a -String #t #:b -String #f -String)]
[(String #:a String -> String)
(->optkey -String [] #:a -String #t -String)]
[(String #:a String String * -> String)
(->optkey -String [] #:rest -String #:a -String #t -String)]
[(String [#:a String] String * -> String)
(->optkey -String [] #:rest -String #:a -String #f -String)]
))
;; FIXME - add tests for parse-values-type, parse-tc-results