writeln(Range) fails on 2.058

simendsjo simendsjo at gmail.com
Fri Feb 17 03:51:11 PST 2012


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)


More information about the Digitalmars-d-learn mailing list