[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