about summary refs log tree commit diff stats
path: root/075duplex_list.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-11-15 01:02:53 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-11-15 01:02:53 -0800
commit687dd3f5da63bee9dd310bc4ac2844ece43e3fba (patch)
tree3e57d03f17a59c97a9ba10b15ee87084eced66e1 /075duplex_list.mu
parentef96f57ce264c8e0bd98f6e8622d1c1e2eceafb2 (diff)
downloadmu-687dd3f5da63bee9dd310bc4ac2844ece43e3fba.tar.gz
2442
Fix the drawback in the previous commit: if an ingredient is just a
literal 0 we'll skip its type-checking and hope to map type ingredients
elsewhere.
Diffstat (limited to '075duplex_list.mu')
-rw-r--r--075duplex_list.mu36
1 files changed, 12 insertions, 24 deletions
diff --git a/075duplex_list.mu b/075duplex_list.mu
index 168c0b88..15f07f1c 100644
--- a/075duplex_list.mu
+++ b/075duplex_list.mu
@@ -46,8 +46,7 @@ scenario duplex-list-handling [
     # reserve locations 0, 1 and 2 to check for missing null check
     1:number <- copy 34
     2:number <- copy 35
-    3:address:duplex-list:character <- copy 0
-    3:address:duplex-list:character <- push-duplex 3, 3:address:duplex-list:character
+    3:address:duplex-list:character <- push-duplex 3, 0
     3:address:duplex-list:character <- push-duplex 4, 3:address:duplex-list:character
     3:address:duplex-list:character <- push-duplex 5, 3:address:duplex-list:character
     4:address:duplex-list:character <- copy 3:address:duplex-list:character
@@ -110,8 +109,7 @@ recipe insert-duplex x:_elem, in:address:duplex-list:_elem -> new-node:address:d
 
 scenario inserting-into-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     2:address:duplex-list:character <- next-duplex 1:address:duplex-list:character  # 2 points inside list
@@ -147,8 +145,7 @@ scenario inserting-into-duplex-list [
 
 scenario inserting-at-end-of-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     2:address:duplex-list:character <- next-duplex 1:address:duplex-list:character  # 2 points inside list
@@ -185,8 +182,7 @@ scenario inserting-at-end-of-duplex-list [
 
 scenario inserting-after-start-of-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     2:address:duplex-list:character <- insert-duplex 6, 1:address:duplex-list:character
@@ -256,8 +252,7 @@ recipe remove-duplex in:address:duplex-list:_elem -> next-node:address:duplex-li
 
 scenario removing-from-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     2:address:duplex-list:character <- next-duplex 1:address:duplex-list:character  # 2 points at second element
@@ -285,8 +280,7 @@ scenario removing-from-duplex-list [
 
 scenario removing-from-start-of-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     # removing from head? return value matters.
@@ -312,8 +306,7 @@ scenario removing-from-start-of-duplex-list [
 
 scenario removing-from-end-of-duplex-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to head of list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     1:address:duplex-list:character <- push-duplex 4, 1:address:duplex-list:character
     1:address:duplex-list:character <- push-duplex 5, 1:address:duplex-list:character
     # delete last element
@@ -343,8 +336,7 @@ scenario removing-from-end-of-duplex-list [
 
 scenario removing-from-singleton-list [
   run [
-    1:address:duplex-list:character <- copy 0  # 1 points to singleton list
-    1:address:duplex-list:character <- push-duplex 3, 1:address:duplex-list:character
+    1:address:duplex-list:character <- push-duplex 3, 0
     2:address:duplex-list:character <- remove-duplex 1:address:duplex-list:character
     3:address:duplex-list:character <- get *1:address:duplex-list:character, next:offset
     4:address:duplex-list:character <- get *1:address:duplex-list:character, prev:offset
@@ -381,8 +373,7 @@ recipe remove-duplex-between start:address:duplex-list:_elem, end:address:duplex
 
 scenario remove-range [
   # construct a duplex list with six elements [13, 14, 15, 16, 17, 18]
-  1:address:duplex-list:character <- copy 0
-  1:address:duplex-list:character <- push-duplex 18, 1:address:duplex-list:character
+  1:address:duplex-list:character <- push-duplex 18, 0
   1:address:duplex-list:character <- push-duplex 17, 1:address:duplex-list:character
   1:address:duplex-list:character <- push-duplex 16, 1:address:duplex-list:character
   1:address:duplex-list:character <- push-duplex 15, 1:address:duplex-list:character
@@ -393,8 +384,7 @@ scenario remove-range [
     # first pointer: to the third element
     2:address:duplex-list:character <- next-duplex 1:address:duplex-list:character
     2:address:duplex-list:character <- next-duplex 2:address:duplex-list:character
-    3:address:duplex-list:character <- copy 0
-    2:address:duplex-list:character <- remove-duplex-between 2:address:duplex-list:character, 3:address:duplex-list:character/null
+    2:address:duplex-list:character <- remove-duplex-between 2:address:duplex-list:character, 0
     # now check the list
     4:character <- get *1:address:duplex-list:character, value:offset
     5:address:duplex-list:character <- next-duplex 1:address:duplex-list:character
@@ -413,8 +403,7 @@ scenario remove-range [
 
 scenario remove-range-to-end [
   # construct a duplex list with six elements [13, 14, 15, 16, 17, 18]
-  1:address:duplex-list:character <- copy 0
-  1:address:duplex-list:character <- push-duplex 18, 1:address:duplex-list:character
+  1:address:duplex-list:character <- push-duplex 18, 0
   1:address:duplex-list:character <- push-duplex 17, 1:address:duplex-list:character
   1:address:duplex-list:character <- push-duplex 16, 1:address:duplex-list:character
   1:address:duplex-list:character <- push-duplex 15, 1:address:duplex-list:character
@@ -448,8 +437,7 @@ scenario remove-range-to-end [
 
 scenario remove-range-empty [
   # construct a duplex list with six elements [13, 14, 15, 16, 17, 18]
-  1:address:duplex-list:character <- copy 0  # 1 points to singleton list
-  1:address:duplex-list:character <- push-duplex 14, 1:address:duplex-list:character
+  1:address:duplex-list:character <- push-duplex 14, 0
   1:address:duplex-list:character <- push-duplex 13, 1:address:duplex-list:character
   run [
     # delete 16 onwards