about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-11-15 18:36:34 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-11-15 18:36:34 -0800
commit5c6840b81b7c74afd6ae65cd96ad229ddfad7503 (patch)
treeb8a203a7c03fb178d4b2bb4f8fb3dceef1241f0e
parent1361f5ce5aa68c2243d8319abcbb1d71f4bc7e04 (diff)
downloadmu-5c6840b81b7c74afd6ae65cd96ad229ddfad7503.tar.gz
2450 - another pesky bug
-rw-r--r--030container.cc11
-rw-r--r--032array.cc12
2 files changed, 23 insertions, 0 deletions
diff --git a/030container.cc b/030container.cc
index 3684a5ce..25303f39 100644
--- a/030container.cc
+++ b/030container.cc
@@ -156,6 +156,7 @@ case GET: {
     raise_error << maybe(get(Recipe, r).name) << "invalid offset " << offset_value << " for " << get(Type, base_type).name << '\n' << end();
     break;
   }
+  if (inst.products.empty()) break;
   reagent product = inst.products.at(0);
   // Update GET product in Check
   const reagent element = element_type(base, offset_value);
@@ -242,6 +243,16 @@ recipe main [
 ]
 +error: main: 'get' 1:offset (1) on point-number can't be saved in 15:address:number; type should be number but is <address : <number : <>>>
 
+//: we might want to call 'get' without saving the results, say in a sandbox
+
+:(scenario get_without_product)
+recipe main [
+  12:number <- copy 34
+  13:number <- copy 35
+  get 12:point/raw, 1:offset  # unsafe
+]
+# just don't die
+
 //:: To write to elements of containers, you need their address.
 
 :(scenario get_address)
diff --git a/032array.cc b/032array.cc
index 085e2b52..2bdafbbf 100644
--- a/032array.cc
+++ b/032array.cc
@@ -254,6 +254,18 @@ recipe main [
 ]
 +error: main: 'index' on *8:address:array:point can't be saved in 9:number; type should be point
 
+//: we might want to call 'index' without saving the results, say in a sandbox
+
+:(scenario index_without_product)
+recipe main [
+  1:array:number:3 <- create-array
+  2:number <- copy 14
+  3:number <- copy 15
+  4:number <- copy 16
+  index 1:array:number:3, 0
+]
+# just don't die
+
 //:: To write to elements of containers, you need their address.
 
 :(scenario index_address)