Allow ... rest variables to be used as lists.
Bind Values as a type. svn: r11010
This commit is contained in:
parent
14b180d5a7
commit
fa857a40ac
|
@ -82,7 +82,7 @@
|
|||
|
||||
|
||||
-> U mu Un All Opaque Vectorof
|
||||
Parameter Tuple Class
|
||||
Parameter Tuple Class Values
|
||||
)
|
||||
|
||||
(provide-extra-tnames)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#lang scheme/base
|
||||
|
||||
(require "type-environments.ss" "tc-utils.ss" "type-env.ss" "mutated-vars.ss" "type-utils.ss")
|
||||
(require "type-environments.ss" "tc-utils.ss" "type-env.ss" "mutated-vars.ss" "type-utils.ss" "type-effect-convenience.ss")
|
||||
|
||||
(provide (all-defined-out))
|
||||
|
||||
|
@ -23,9 +23,11 @@
|
|||
(lookup (lexical-env) i
|
||||
(lambda (i) (lookup-type
|
||||
i (lambda ()
|
||||
(if (lookup (dotted-env) i (lambda _ #f))
|
||||
(tc-error/expr "Rest variable ~a with ... type used in an inappropriate context" (syntax-e i))
|
||||
(lookup-fail (syntax-e i))))))))
|
||||
(cond [(lookup (dotted-env) i (lambda _ #f))
|
||||
=>
|
||||
(lambda (a)
|
||||
(-lst (substitute Univ (cdr a) (car a))))]
|
||||
[else (lookup-fail (syntax-e i))]))))))
|
||||
|
||||
;; refine the type of i in the lexical env
|
||||
;; (identifier type -> type) identifier -> environment
|
||||
|
|
Loading…
Reference in New Issue
Block a user