projects
/
scheme.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move utils into its onw file
[scheme.git]
/
typecheck.scm
diff --git
a/typecheck.scm
b/typecheck.scm
index e3986062e358d763e99746f2ebdd26828337336f..d180e44e92e755f1e4fbb4172f3535e70f8ebb24 100644
(file)
--- a/
typecheck.scm
+++ b/
typecheck.scm
@@
-255,11
+255,12
@@
res))
(define (init-adts-env prog)
res))
(define (init-adts-env prog)
- (flat-map data-tors-env (program-data-layouts prog)))
+ (flat-map data-tors-
type-
env (program-data-layouts prog)))
; 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))))))