Skip to content

Commit 264b796

Browse files
committed
Fixing string-ref bug in other langs.
1 parent 0f22b1e commit 264b796

16 files changed

Lines changed: 32 additions & 0 deletions

File tree

langs/iniquity/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@
240240
(seq (Pop r8)
241241
(assert-string r8)
242242
(assert-integer rax)
243+
(Cmp r8 type-str)
244+
(Je 'raise_error_align) ; special case for empty string
243245
(Cmp rax 0)
244246
(Jl 'raise_error_align)
245247
(Xor r8 type-str) ; r8 = ptr

langs/iniquity/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
(check-equal? (run '(make-string 3 #\g)) "ggg")
139139
(check-equal? (run '(string-length "")) 0)
140140
(check-equal? (run '(string-length "fred")) 4)
141+
(check-equal? (run '(string-ref "" 0)) 'err)
142+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
141143
(check-equal? (run '(string-ref "fred" 0)) #\f)
142144
(check-equal? (run '(string-ref "fred" 1)) #\r)
143145
(check-equal? (run '(string-ref "fred" 2)) #\e)

langs/jig/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@
240240
(seq (Pop r8)
241241
(assert-string r8)
242242
(assert-integer rax)
243+
(Cmp r8 type-str)
244+
(Je 'raise_error_align) ; special case for empty string
243245
(Cmp rax 0)
244246
(Jl 'raise_error_align)
245247
(Xor r8 type-str) ; r8 = ptr

langs/jig/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
(check-equal? (run '(make-string 3 #\g)) "ggg")
139139
(check-equal? (run '(string-length "")) 0)
140140
(check-equal? (run '(string-length "fred")) 4)
141+
(check-equal? (run '(string-ref "" 0)) 'err)
142+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
141143
(check-equal? (run '(string-ref "fred" 0)) #\f)
142144
(check-equal? (run '(string-ref "fred" 1)) #\r)
143145
(check-equal? (run '(string-ref "fred" 2)) #\e)

langs/knock/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@
240240
(seq (Pop r8)
241241
(assert-string r8)
242242
(assert-integer rax)
243+
(Cmp r8 type-str)
244+
(Je 'raise_error_align) ; special case for empty string
243245
(Cmp rax 0)
244246
(Jl 'raise_error_align)
245247
(Xor r8 type-str) ; r8 = ptr

langs/knock/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
(check-equal? (run '(make-string 3 #\g)) "ggg")
139139
(check-equal? (run '(string-length "")) 0)
140140
(check-equal? (run '(string-length "fred")) 4)
141+
(check-equal? (run '(string-ref "" 0)) 'err)
142+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
141143
(check-equal? (run '(string-ref "fred" 0)) #\f)
142144
(check-equal? (run '(string-ref "fred" 1)) #\r)
143145
(check-equal? (run '(string-ref "fred" 2)) #\e)

langs/loot/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@
240240
(seq (Pop r8)
241241
(assert-string r8)
242242
(assert-integer rax)
243+
(Cmp r8 type-str)
244+
(Je 'raise_error_align) ; special case for empty string
243245
(Cmp rax 0)
244246
(Jl 'raise_error_align)
245247
(Xor r8 type-str) ; r8 = ptr

langs/loot/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
(check-equal? (run '(make-string 3 #\g)) "ggg")
139139
(check-equal? (run '(string-length "")) 0)
140140
(check-equal? (run '(string-length "fred")) 4)
141+
(check-equal? (run '(string-ref "" 0)) 'err)
142+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
141143
(check-equal? (run '(string-ref "fred" 0)) #\f)
142144
(check-equal? (run '(string-ref "fred" 1)) #\r)
143145
(check-equal? (run '(string-ref "fred" 2)) #\e)

langs/mountebank/compile-ops.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,8 @@
281281
(seq (Pop r8)
282282
(assert-string r8)
283283
(assert-integer rax)
284+
(Cmp r8 type-str)
285+
(Je 'raise_error_align) ; special case for empty string
284286
(Cmp rax 0)
285287
(Jl 'raise_error_align)
286288
(Xor r8 type-str) ; r8 = ptr

langs/mountebank/test/test-runner.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@
138138
(check-equal? (run '(make-string 3 #\g)) "ggg")
139139
(check-equal? (run '(string-length "")) 0)
140140
(check-equal? (run '(string-length "fred")) 4)
141+
(check-equal? (run '(string-ref "" 0)) 'err)
142+
(check-equal? (run '(string-ref (make-string 0 #\a) 0)) 'err)
141143
(check-equal? (run '(string-ref "fred" 0)) #\f)
142144
(check-equal? (run '(string-ref "fred" 1)) #\r)
143145
(check-equal? (run '(string-ref "fred" 2)) #\e)

0 commit comments

Comments
 (0)