[Issue 19792] New: Rtypeof expression in parameter list appears to select wrong overload
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Apr 7 14:31:12 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=19792
Issue ID: 19792
Summary: Rtypeof expression in parameter list appears to select
wrong overload
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: regression
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: asumface at gmail.com
The following code fails since 2.085.x:
struct Node // dummy struct
{ int box; }
Node node;
auto box() @property
{
return node.box;
}
auto anythingButBox(typeof(box) arg) @property
{
return node.box = arg;
}
auto box(typeof(box()) arg) @property
{
return node.box = arg;
}
auto box(typeof(box) arg) @property
{
return node.box = arg;
}
The definition
auto box(typeof(box()) arg) @property
fails with:
Error: forward reference to template box
The definition
auto box(typeof(box) arg) @property
fails with:
Error: forward reference to template box
Error: forward reference to template box
(That's right, twice!)
If the definition of
auto box() @property
is moved below all others, previous versions of dmd segfault, I therefore
conclude that this is related to issue #19717.
auto box(typeof(box()) arg) @property
then fails with:
Error: forward reference to template box
Error: none of the overloads of box are callable using argument types (),
candidates are:
onlineapp.box(typeof(box()) arg)
onlineapp.box(typeof(box) arg)
onlineapp.box()
(the overload error is contradicting itself here!)
auto box(typeof(box) arg) @property
with:
Error: forward reference to template box
Error: circular typeof definition
--
More information about the Digitalmars-d-bugs
mailing list