Thread overview
[phobos] phobos commit, revision 1860
Aug 15, 2010
dsource.org
Oct 02, 2010
David Simcha
August 14, 2010
phobos commit, revision 1860


user: dsimcha

msg:
Bug 4345:  std.range.take!string: "Nonsensical finite range with slicing but no length"

http://www.dsource.org/projects/phobos/changeset/1860

October 01, 2010
I think we need to change this. The fix reveals a larger underlying issue: narrow strings (UTF8 and UTF16) should NOT yield true from hasSlicing.

The reason is that hasSlicing has a specific contract associated with it: algorithms assume that range[a .. b] yields elements of range from the a'th up to and excluding the b'th.

That's not the case for string and wstring. They do implement slicing but with a semantics specific to strings.


Correct?

Andrei

On 8/14/10 19:17 PDT, dsource.org wrote:
> phobos commit, revision 1860
>
>
> user: dsimcha
>
> msg:
> Bug 4345:  std.range.take!string: "Nonsensical finite range with slicing but no length"
>
> http://www.dsource.org/projects/phobos/changeset/1860
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
October 02, 2010
  Agreed.  This was kind of a quick fix because changing hasSlicing
would have had a lot of ripple effects and made several unit tests in
std.algorithm (for example, splitter) not compile.  I just never got
around to doing a more proper fix because it raises some pretty ugly
questions with things like splitter.

On 10/2/2010 2:38 AM, Andrei Alexandrescu wrote:
> I think we need to change this. The fix reveals a larger underlying issue: narrow strings (UTF8 and UTF16) should NOT yield true from hasSlicing.
>
> The reason is that hasSlicing has a specific contract associated with it: algorithms assume that range[a .. b] yields elements of range from the a'th up to and excluding the b'th.
>
> That's not the case for string and wstring. They do implement slicing but with a semantics specific to strings.
>
>
> Correct?
>
> Andrei
>
> On 8/14/10 19:17 PDT, dsource.org wrote:
>> phobos commit, revision 1860
>>
>>
>> user: dsimcha
>>
>> msg:
>> Bug 4345:  std.range.take!string: "Nonsensical finite range with
>> slicing but no length"
>>
>> http://www.dsource.org/projects/phobos/changeset/1860
>>
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
>