Remove tool.

Improve error message source.
Add `build-list'
Don't give internal error when inference returns a bad result.

svn: r8885
This commit is contained in:
Sam Tobin-Hochstadt 2008-03-04 23:09:45 +00:00
parent 8b0a675b9a
commit f7d6b01d26
4 changed files with 14 additions and 52 deletions

View File

@ -189,6 +189,7 @@
[vector-ref [vector-ref
(make-Poly (list 'a) ((make-Vector (-v a)) N . -> . (-v a)))] (make-Poly (list 'a) ((make-Vector (-v a)) N . -> . (-v a)))]
[build-vector (-poly (a) (N (N . -> . a) . -> . (make-Vector a)))] [build-vector (-poly (a) (N (N . -> . a) . -> . (make-Vector a)))]
[build-list (-poly (a) (N (N . -> . a) . -> . (-lst a)))]
[reverse (make-Poly '(a) (-> (make-lst (-v a)) (make-lst (-v a))))] [reverse (make-Poly '(a) (-> (make-lst (-v a)) (make-lst (-v a))))]
[append (-poly (a) (->* (list) (-lst a) (-lst a)))] [append (-poly (a) (->* (list) (-lst a) (-lst a)))]
[length (make-Poly '(a) (-> (make-lst (-v a)) N))] [length (make-Poly '(a) (-> (make-lst (-v a)) N))]

View File

@ -41,7 +41,7 @@
(define (look-for-in-orig orig expanded lookfor) (define (look-for-in-orig orig expanded lookfor)
(define src (syntax-source orig)) (define src (syntax-source orig))
;; we just might get a lookfor that is already in the original ;; we just might get a lookfor that is already in the original
(if (eq? src (syntax-source lookfor)) (if (syntax-original? lookfor)
lookfor lookfor
(let ([enclosing (enclosing-syntaxes-with-source expanded lookfor src)] (let ([enclosing (enclosing-syntaxes-with-source expanded lookfor src)]
[syntax-locs (make-hash-table 'equal)]) [syntax-locs (make-hash-table 'equal)])

View File

@ -234,10 +234,20 @@
=> (lambda (substitution) => (lambda (substitution)
(let* ([s (lambda (t) (subst-all substitution t))] (let* ([s (lambda (t) (subst-all substitution t))]
[new-doms* (map s (car doms*))]) [new-doms* (map s (car doms*))])
(unless (andmap subtype argtypes new-doms*) (if (andmap subtype argtypes new-doms*)
(ret (subst-all substitution (car rngs*)))
;; FIXME
;; should be an error here, something went horribly wrong!!!
(loop (cdr doms*) (cdr rngs*)))))]
#|
(printf "subst is:~a~nret is: ~a~nvars is: ~a~nresult is:~a~n" substitution (car rngs*) vars
(subst-all substitution (car rngs*)))
(printf "new-doms*: ~a~n" new-doms*)
(printf "orig doms* is: ~a~n" (car doms*))
(printf "argtypes: ~a~n" argtypes)
(int-err "Inconsistent substitution - arguments not subtypes"))) (int-err "Inconsistent substitution - arguments not subtypes")))
#;(printf "subst is:~a~nret is: ~a~nvars is: ~a~n" substitution (car rngs*) vars) #;(printf "subst is:~a~nret is: ~a~nvars is: ~a~n" substitution (car rngs*) vars)
(ret (subst-all substitution (car rngs*))))] )]|#
[else (loop (cdr doms*) (cdr rngs*))]))] [else (loop (cdr doms*) (cdr rngs*))]))]
;; polymorphic varargs ;; polymorphic varargs
[(tc-result: (Poly: vars (Function: (list (arr: dom rng rest thn-eff els-eff))))) [(tc-result: (Poly: vars (Function: (list (arr: dom rng rest thn-eff els-eff)))))

View File

@ -1,49 +0,0 @@
(module tool mzscheme
(require (lib "unit.ss")
(lib "class.ss")
(lib "tool.ss" "drscheme")
(lib "string-constant.ss" "string-constants")
(prefix r: "../typed-reader.ss"))
(provide tool@)
(define tool@
(unit
(import drscheme:tool^)
(export drscheme:tool-exports^)
(define mbl% (drscheme:language:module-based-language->language-mixin
(drscheme:language:simple-module-based-language->module-based-language-mixin
drscheme:language:simple-module-based-language%)))
(define planet-module '(planet "typed-scheme.ss" ("plt" "typed-scheme.plt" 3)))
(define (typed-scheme-language% cl%)
(class* cl% (drscheme:language:simple-module-based-language<%>)
(define/override (get-language-numbers)
'(1000 -401))
(define/override (get-language-name) "Typed Scheme")
(define/override (get-language-position)
(list (string-constant experimental-languages) "Typed Scheme"))
(define/override (get-module) planet-module)
(define/override (get-reader)
(lambda (src port)
(let ([v (r:read-syntax src port)])
(if (eof-object? v)
v
(namespace-syntax-introduce v)))))
(define/override (get-one-line-summary)
"Scheme with types!")
(define/override (get-language-url) "http://www.ccs.neu.edu/~samth/typed-scheme.html")
(define/override (enable-macro-stepper?) #t)
(define/override (use-namespace-require/copy?) #f)
(super-new [module (get-module)] [language-position (get-language-position)])))
(define (phase1) (void))
(define (phase2)
(drscheme:language-configuration:add-language
(make-object (typed-scheme-language%
((drscheme:language:get-default-mixin)
mbl%)))))))
)