[Issue 10971] New: assigning derived class to base should not trigger promotion of result
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Sep 5 06:16:04 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10971
Summary: assigning derived class to base should not trigger
promotion of result
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: monarchdodra at gmail.com
--- Comment #0 from monarchdodra at gmail.com 2013-09-05 06:16:03 PDT ---
EG:
//----
class A
{
A next;
}
class B : A
{}
void main()
{
B first = new B;
B last = first;
//foreach(_ ; 0 .. 10)
last = (last.next = new B); [1]
}
//----
[1]: Error: cannot implicitly convert expression (last.next = new B) of type
main.A to main.B
When the call the compiler should be able to type the result of "last.next =
new B" as a "B" (the type of "new B"), and not an "A" (the type of
"last.next").
Other usecase:
//----
class A
{
A next;
}
class B : A
{}
void foo(B){}
void main()
{
A a;
foo(a = new B);
}
//----
Error: function main.foo (B _param_0) is not callable using argument types (A)
The workaround is trivial of course, but I'd have expect the compiler could
handle it.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list