projects
/
scheme.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Start work on case statements
[scheme.git]
/
typecheck.scm
diff --git
a/typecheck.scm
b/typecheck.scm
index 35e818866df9603a3ecaa4cc721b548035d26abc..d180e44e92e755f1e4fbb4172f3535e70f8ebb24 100644
(file)
--- a/
typecheck.scm
+++ b/
typecheck.scm
@@
-259,7
+259,8
@@
; we typecheck the lambda calculus only (only single arg lambdas)
(define (typecheck prog)
; we typecheck the lambda calculus only (only single arg lambdas)
(define (typecheck prog)
- (cadr (check (init-adts-env prog) (normalize (program-body prog)))))
+ (let ([expanded (expand-pattern-matches prog)])
+ (cadr (check (init-adts-env expanded) (normalize (program-body expanded))))))
; before passing annotated types onto codegen
; before passing annotated types onto codegen
@@
-309,8
+310,11
@@
(define ann-expr car)
(define ann-type caddr)
(define ann-expr car)
(define ann-type caddr)
+
+ ; prerequisites: expand-pattern-matches
(define (annotate-types prog)
(define (annotate-types prog)
- (denormalize (program-body prog)
+ (denormalize
+ (program-body prog)
(caddr (check (init-adts-env prog) (normalize (program-body prog))))))
(caddr (check (init-adts-env prog) (normalize (program-body prog))))))