writeln(Range) fails on 2.058

simendsjo simendsjo at gmail.com
Fri Feb 17 03:58:14 PST 2012


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?


More information about the Digitalmars-d-learn mailing list