writeln(Range) fails on 2.058

Timon Gehr timon.gehr at gmx.ch
Fri Feb 17 05:44:15 PST 2012


On 02/17/2012 12:58 PM, simendsjo wrote:
> On Fri, 17 Feb 2012 12:51:11 +0100, simendsjo <simendsjo at gmail.com> wrote:
>
>> On Wed, 15 Feb 2012 11:10:45 +0100, simendsjo <simendsjo at gmail.com>
>> wrote:
>>
>>> On 02/15/2012 09:33 AM, simendsjo wrote:
>>>> import std.array;
>>>> import std.stdio;
>>>>
>>>> struct S
>>>> {
>>>> string txt;
>>>>
>>>> void popFront()
>>>> {
>>>> txt.popFront();
>>>> }
>>>>
>>>> @property dchar front()
>>>> {
>>>> return txt.front;
>>>> }
>>>>
>>>> @property bool empty()
>>>> {
>>>> return txt.empty;
>>>> }
>>>> }
>>>>
>>>> void main() {
>>>> S s;
>>>> writeln(s); // range.d(295): Error: static assert "Cannot put a S
>>>> into a
>>>> LockingTextWriter"
>>>> }
>>>>
>>>> I haven't read the whole changelog yet, so this might not be a bug.
>>>> Pretty convenient when it worked though..
>>>
>>> Seems the issue is triggered by using *char front(). Other types
>>> still work.
>>>
>>> import std.stdio;
>>>
>>> struct S {
>>> void popFront() { }
>>>
>>> @property char front() {
>>> return 'a';
>>> }
>>>
>>> @property bool empty() {
>>> return false;
>>> }
>>> }
>>>
>>> void main() {
>>> writeln(S()); // range.d(295): Error: static assert "Cannot put a S
>>> into a LockingTextWriter"
>>> }
>>
>> Ping?
>>
>> range.d(295): Error: static assert "Cannot put a S into a
>> LockingTextWriter"
>> format.d(1509): instantiated from here: put!(LockingTextWriter,S)
>> format.d(1984): instantiated from here:
>> formatRange!(LockingTextWriter,S,char)
>> format.d(2228): instantiated from here:
>> formatValue!(LockingTextWriter,S,char)
>> format.d(319): instantiated from here:
>> formatGeneric!(LockingTextWriter,S,char)
>> stdio.d(684): instantiated from here:
>> formattedWrite!(LockingTextWriter,char,S)
>> stdio.d(1563): instantiated from here: write!(S,char)
>
>
> Ok, the changelog doesn't state any changes to formating, but other
> stuff has changed too.
> When printing unions, i get #{overlap <typenames here>} rather than the
> actual union values as in 2.057.
> Should I report these as regressions as the changelog doesn't mention them?

The LockingTextWriter thing is a regression, the #{overlap <typenames 
here>} is part of a (possibly unlisted?) bugfix by Kenji Hara.


More information about the Digitalmars-d-learn mailing list