digitalmars.D.bugs - [Issue 15774] New: cant write import std.range; twice
- via Digitalmars-d-bugs (67/67) Mar 06 2016 https://issues.dlang.org/show_bug.cgi?id=15774
https://issues.dlang.org/show_bug.cgi?id=15774 Issue ID: 15774 Summary: cant write import std.range; twice Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: mephisto nordhoff-online.de import std.range; public struct myRng( E) { import std.range; public: property E front() { return 0; } property void front( int elem) { } void popFront() { } property bool empty() { return true; } property auto save() { return this; } } static assert( isForwardRange!( myRng!int)); bool check_( SomeThing)( SomeThing fofo) if( isInputRange!SomeThing) { return is( fofo); } unittest { auto r = myRng!int(); assert( r.check_ == false); assert( walkLength( r) == 0); assert( r.walkLength == 1); // here the compiler fails }$ $ $ $ $ $ dmd --version | fgrep -i dmd DMD64 D Compiler v2.070.1 $ $ $ $ dmd t.d -lib -unittest t.d(38): Error: cannot resolve type for r.walkLength(Range)(Range range) if (isInputRange!Range && !isInfinite!Range) $ cant write import std.range; twice in that situation. its not okay, because with "mixin template" i have to write it twice sometimes. (the compiler complains, if i dont write the imports into the mixins. i dont even know, if that is correct behaviour) --
Mar 06 2016