You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
struct A
{
immutable(A) fun() { return immutable A(); }
ref A fun2(ref A a) { return this; }
alias fun this; // line 6
}
void main()
{
A a, b;
b.fun2(a);
}
aliasthisbug.d(12): Error: function aliasthisbug.A.fun2(ref A a) is not callable using argument types (A)
aliasthisbug.d(12): cannot pass argument a of type A to parameter ref A a
Comment line 6 an the error disappears.
The text was updated successfully, but these errors were encountered:
(In reply to RazvanN from comment #0)
> struct A> {> immutable(A) fun() { return immutable A(); }> ref A fun2(ref A a) { return this; } > > > alias fun this; // line 6> }> > void main()> {> A a, b;> b.fun2(a);> }> > aliasthisbug.d(12): Error: function aliasthisbug.A.fun2(ref A a) is not> callable using argument types (A)> aliasthisbug.d(12): cannot pass argument a of type A to parameter ref> A a> > Comment line 6 an the error disappears.
Also, changing the signature of fun2 to : ref A fun2(A a) makes the example compile
Further simplified:
struct A {
const(A) fun();
alias fun this;
}
void fun2(ref A a);
unittest {
A a;
fun2(a);
}
This bug triggers when the alias this type is a qualified version of A (shared, const, or immutable), and A has no aliasing (pointers, dynamic arrays, AAs).
RazvanN (@RazvanN7) reported this on 2018-07-26T11:20:08Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=19117
CC List
Description
struct A { immutable(A) fun() { return immutable A(); } ref A fun2(ref A a) { return this; } alias fun this; // line 6 } void main() { A a, b; b.fun2(a); } aliasthisbug.d(12): Error: function aliasthisbug.A.fun2(ref A a) is not callable using argument types (A) aliasthisbug.d(12): cannot pass argument a of type A to parameter ref A a Comment line 6 an the error disappears.The text was updated successfully, but these errors were encountered: