[Gd-chatter] r11050 - trunk/src/d2c/runtime/dylan

housel at gwydiondylan.org housel at gwydiondylan.org
Sun Dec 10 01:20:51 CET 2006


Author: housel
Date: Sun Dec 10 01:20:49 2006
New Revision: 11050

Modified:
   trunk/src/d2c/runtime/dylan/collection.dylan
   trunk/src/d2c/runtime/dylan/deque.dylan
   trunk/src/d2c/runtime/dylan/range.dylan
   trunk/src/d2c/runtime/dylan/string.dylan
Log:
Bug: 7337
Make the handling of the copy-sequence end: keyword match the DRM, by
not conflating an omitted end: keyword with end: #f.


Modified: trunk/src/d2c/runtime/dylan/collection.dylan
==============================================================================
--- trunk/src/d2c/runtime/dylan/collection.dylan	(original)
+++ trunk/src/d2c/runtime/dylan/collection.dylan	Sun Dec 10 01:20:49 2006
@@ -1139,10 +1139,14 @@
 end;
 
 define method copy-sequence
-    (sequence :: <sequence>, #key start :: <integer> = 0, end: last)
+    (sequence :: <sequence>,
+     #key start :: <integer> = 0,
+          end: last :: type-union(<integer>, singleton($not-supplied))
+                 = $not-supplied)
  => (result :: <sequence>);
   let seq-size :: <integer> = sequence.size;
-  let last :: <integer> = last | seq-size;
+  let last :: <integer>
+    = if (last ~== $not-supplied) last else seq-size end if;
   case
     (last > seq-size) => error("End: (%=) out of range.", last);
     (start < 0) => error("Start: (%=) out of range.", start);

Modified: trunk/src/d2c/runtime/dylan/deque.dylan
==============================================================================
--- trunk/src/d2c/runtime/dylan/deque.dylan	(original)
+++ trunk/src/d2c/runtime/dylan/deque.dylan	Sun Dec 10 01:20:49 2006
@@ -473,10 +473,14 @@
 
 
 define sealed method copy-sequence
-    (sequence :: <object-deque>, #key start :: <integer> = 0, end: last)
+    (sequence :: <object-deque>,
+     #key start :: <integer> = 0,
+          end: last :: type-union(<integer>, singleton($not-supplied))
+                 = $not-supplied)
  => (result :: <object-deque>);
   let seq-size :: <integer> = sequence.size;
-  let last :: <integer> = last | seq-size;
+  let last :: <integer>
+    = if (last ~== $not-supplied) last else seq-size end if;
   case
     (last > seq-size) => error("End: (%=) out of range.", last);
     (start < 0) => error("Start: (%=) out of range.", start);

Modified: trunk/src/d2c/runtime/dylan/range.dylan
==============================================================================
--- trunk/src/d2c/runtime/dylan/range.dylan	(original)
+++ trunk/src/d2c/runtime/dylan/range.dylan	Sun Dec 10 01:20:49 2006
@@ -693,7 +693,8 @@
 // supplied, and an unbounded range if not.
 //
 define sealed method copy-sequence
-    (source :: <bounded-range>, #key start: copy-start = 0, end: copy-end)
+    (source :: <bounded-range>,
+     #key start: copy-start = 0, end: copy-end = $not-supplied)
  => (result :: <bounded-range>);
    let r-size = source.size;
    let r-from = source.range-from;
@@ -703,7 +704,7 @@
 		    else
 		       0
 		    end if;
-   let copy-end = if (copy-end)
+  let copy-end = if (copy-end ~== $not-supplied)
 		     copy-end
 		  else
 		     r-size
@@ -725,7 +726,8 @@
 end method;
 //
 define sealed method copy-sequence
-    (source :: <unbounded-range>, #key start: copy-start = 0, end: copy-end)
+    (source :: <unbounded-range>,
+     #key start: copy-start = 0, end: copy-end = $not-supplied)
  => (result :: <builtin-range>);
    let r-from = source.range-from;
    let r-by = source.range-by;
@@ -734,7 +736,7 @@
 		    else
 		       0
 		    end if;
-   if (copy-end)
+  if (copy-end ~== $not-supplied)
       range (from: source[copy-start], by: r-by,
 	     size: copy-end - copy-start);
    else

Modified: trunk/src/d2c/runtime/dylan/string.dylan
==============================================================================
--- trunk/src/d2c/runtime/dylan/string.dylan	(original)
+++ trunk/src/d2c/runtime/dylan/string.dylan	Sun Dec 10 01:20:49 2006
@@ -245,11 +245,14 @@
 end;
 
 define method copy-sequence
-    (vector :: <byte-string>, #key start :: <integer> = 0, end: last :: false-or(<integer>))
+    (vector :: <byte-string>,
+     #key start :: <integer> = 0,
+          end: last :: type-union(<integer>, singleton($not-supplied))
+                 = $not-supplied)
  => (result :: <byte-string>);
   let src-sz :: <integer> = size(vector);
   let last :: <integer>
-    = if (last & last < src-sz) last else src-sz end if;
+    = if (last ~== $not-supplied & last < src-sz) last else src-sz end if;
   let start :: <integer> = if (start < 0) 0 else start end if;
   let sz :: <integer> = last - start;
   



More information about the chatter mailing list