[Issue 16427] New: alias to typecons.Rebindable depends on lexical order
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Thu Aug 25 02:43:01 PDT 2016
https://issues.dlang.org/show_bug.cgi?id=16427
Issue ID: 16427
Summary: alias to typecons.Rebindable depends on lexical order
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: eiderdaus at gmail.com
DMD64 D Compiler v2.071.2-b2 on Debian 6.
This code doesn't compile:
import std.typecons;
alias RIA = Rebindable!(immutable(IA));
interface IA {
Rebindable!(immutable(IA)) f();
}
./testinterface.d(7): Error: Rebindable!(immutable(IA)) is used as a type
/usr/include/dmd/phobos/std/typecons.d(1616): Error: template instance
std.traits.isDynamicArray!(immutable(IA)) error instantiating
./testinterface.d(5): instantiated from here: Rebindable!(immutable(IA))
/usr/include/dmd/phobos/std/typecons.d(1625): Error: mixin
std.typecons.RebindableCommon!(immutable(IA), IA, Rebindable) does not match
template declaration RebindableCommon(T, U, alias This) if (is(T == class) ||
is(T == interface) || isAssociativeArray!T)
Failed: ["dmd", "-v", "-o-", "./testinterface.d", "-I."]
===================================================================
Here are 3 variants of the above code. All compile and run perfectly.
import std.typecons;
alias REmpty = Rebindable!(immutable(Empty));
interface Empty { }
interface IA {
Rebindable!(immutable(IA)) f();
}
alias RIA = Rebindable!(immutable(IA));
class B {
Rebindable!(immutable(B)) f() { return rebindable(new immutable B()); }
}
alias RB = Rebindable!(immutable(B));
--
More information about the Digitalmars-d-bugs
mailing list