aboutsummaryrefslogtreecommitdiff
path: root/tests/stlc-pred.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stlc-pred.rkt')
-rw-r--r--tests/stlc-pred.rkt29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/stlc-pred.rkt b/tests/stlc-pred.rkt
new file mode 100644
index 0000000..f7afc43
--- /dev/null
+++ b/tests/stlc-pred.rkt
@@ -0,0 +1,29 @@
+#lang racket
+(require (except-in rackunit check))
+(require "../stlc-pred.rkt")
+
+(define-test-suite landins-knot
+ (check-exn
+ exn:fail?
+ (λ () (infer '
+ (let (id : (Nat → 0 Nat)) (λ x x)
+ (let (r : (Ref (Nat → 0 Nat))) (new id)
+ (let (f : (Nat → 1 Nat)) (λ x ((! r) x))
+ (set r f
+ (f 0))))))))
+
+ (check-eq?
+ (infer '
+ (let (id : (Nat → 0 Nat)) (λ x x)
+ (let (r : (Ref (Nat → 0 Nat))) (new id)
+ (let (f : (Nat → 1 Nat)) (λ x ((! r) x))
+ (f 0)))))
+ 'Nat)
+
+ (check-true
+ (check '
+ (let (id : (Nat → 0 Nat)) (λ x x)
+ (let (r : (Ref (Nat → 0 Nat))) (new id)
+ (let (f : (Nat → 1 Nat)) (λ x ((! r) x))
+ (f 0))))
+ 'Nat)))