Skip to content

Commit 97c578b

Browse files
authored
Merge pull request #105 from cmsc430/outlaw
Fix interp-env* bug when later args error.
2 parents d86c138 + e23d516 commit 97c578b

File tree

22 files changed

+72
-17
lines changed

22 files changed

+72
-17
lines changed

langs/iniquity-gc/interp.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@
9393
[(cons e es)
9494
(match (interp-env e r ds)
9595
['err 'err]
96-
[v (cons v (interp-env* es r ds))])]))
96+
[v (match (interp-env* es r ds)
97+
['err 'err]
98+
[vs (cons v vs)])])]))
9799

98100
;; Defns Symbol -> Defn
99101
(define (defns-lookup ds f)

langs/iniquity-gc/test/test-runner.rkt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,10 @@
179179
(cons (add1 (car xs))
180180
(map-add1 (cdr xs)))))
181181
'(map-add1 (cons 1 (cons 2 (cons 3 '())))))
182-
'(2 3 4))
182+
'(2 3 4))
183+
(check-equal? (run '(define (f x y) y)
184+
'(f 1 (add1 #f)))
185+
'err)
183186

184187
(check-equal? (run '(collect-garbage)) (void))
185188
(check-equal? (run '(begin (box 0) (collect-garbage))) (void))

langs/iniquity/interp.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@
9191
[(cons e es)
9292
(match (interp-env e r ds)
9393
['err 'err]
94-
[v (cons v (interp-env* es r ds))])]))
94+
[v (match (interp-env* es r ds)
95+
['err 'err]
96+
[vs (cons v vs)])])]))
9597

9698
;; Defns Symbol -> Defn
9799
(define (defns-lookup ds f)

langs/iniquity/test/test-runner.rkt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,10 @@
179179
(cons (add1 (car xs))
180180
(map-add1 (cdr xs)))))
181181
'(map-add1 (cons 1 (cons 2 (cons 3 '())))))
182-
'(2 3 4)))
182+
'(2 3 4))
183+
(check-equal? (run '(define (f x y) y)
184+
'(f 1 (add1 #f)))
185+
'err))
183186

184187
(define (test-runner-io run)
185188
;; Evildoer examples

langs/jig/interp.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@
9191
[(cons e es)
9292
(match (interp-env e r ds)
9393
['err 'err]
94-
[v (cons v (interp-env* es r ds))])]))
94+
[v (match (interp-env* es r ds)
95+
['err 'err]
96+
[vs (cons v vs)])])]))
9597

9698
;; Defns Symbol -> Defn
9799
(define (defns-lookup ds f)

langs/jig/test/interp.rkt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#lang racket
2+
(require "test-runner.rkt"
3+
"../parse.rkt"
4+
"../interp.rkt"
5+
"../interp-io.rkt")
6+
7+
(test-runner (λ p (interp (parse p))))
8+
(test-runner-io (λ (s . p) (interp/io (parse p) s)))

langs/jig/test/test-runner.rkt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,10 @@
199199
'(define (f x y)
200200
10)
201201
'(let ((z 2)) (f 1 2)))
202-
10))
203-
202+
10)
203+
(check-equal? (run '(define (f x y) y)
204+
'(f 1 (add1 #f)))
205+
'err))
204206

205207
(define (test-runner-io run)
206208
;; Evildoer examples

langs/knock/interp.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@
128128
[(cons e es)
129129
(match (interp-env e r ds)
130130
['err 'err]
131-
[v (cons v (interp-env* es r ds))])]))
131+
[v (match (interp-env* es r ds)
132+
['err 'err]
133+
[vs (cons v vs)])])]))
132134

133135
;; Defns Symbol -> Defn
134136
(define (defns-lookup ds f)

langs/knock/test/test-runner.rkt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@
200200
10)
201201
'(let ((z 2)) (f 1 2)))
202202
10)
203+
(check-equal? (run '(define (f x y) y)
204+
'(f 1 (add1 #f)))
205+
'err)
203206

204207
;; Knock examples
205208
(check-equal? (run '(match 1)) 'err)

langs/loot/interp-defun.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@
144144
[(cons e es)
145145
(match (interp-env e r ds)
146146
['err 'err]
147-
[v (cons v (interp-env* es r ds))])]))
147+
[v (match (interp-env* es r ds)
148+
['err 'err]
149+
[vs (cons v vs)])])]))
148150

149151
;; Defns Symbol -> [Maybe Defn]
150152
(define (defns-lookup ds f)

0 commit comments

Comments
 (0)