Thread overview | |||||
---|---|---|---|---|---|
|
August 14, 2010 [phobos] phobos commit, revision 1860 | ||||
---|---|---|---|---|
| ||||
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 [phobos] phobos commit, revision 1860 | ||||
---|---|---|---|---|
| ||||
Posted in reply to dsource.org | 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 [phobos] phobos commit, revision 1860 | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | 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
>
|
Copyright © 1999-2021 by the D Language Foundation