diff --git a/stlc-tests.rkt b/stlc-tests.rkt index 2915e21..c5e6274 100644 --- a/stlc-tests.rkt +++ b/stlc-tests.rkt @@ -78,3 +78,7 @@ => (cons {Int} 2 (cons {Int} 3 (null {Int})))) (check-not-type (map add1 (cons {Int} 1 (cons {Int} 2 (null {Int})))) : (Listof String)) + +(define (a [x : Int]) (b x)) +(define (b [x : Int]) (a x)) +(define (ff [x : Int]) (ff x)) diff --git a/stlc.rkt b/stlc.rkt index 500c915..08a8c22 100644 --- a/stlc.rkt +++ b/stlc.rkt @@ -336,7 +336,7 @@ ; #:when (printf "mb: ~a\n" (syntax->datum (expand/df #'(letrec ([f v] ...) e ...)))) (quasisyntax/loc stx (#%module-begin - #,(expand/df #'(letrec/tc ([f : τ v] ...) e ...)) + #,(expand/df #'(letrec/tc ([f : τ v] ...) e ... (void))) (define #,(datum->syntax stx 'runtime-env) (for/hash ([x:τ '#,(map (λ (xτ) (cons (car xτ) (syntax->datum (cdr xτ)))) (hash->list (do-subst (Γ))))])