Problem with dmd-2.104.0 -dip1000 & @safe

An Pham home at home.com
Fri Jun 9 04:05:27 UTC 2023


Getting with below error for following codes. Look like bug?
onlineapp.d(61): Error: scope variable `a` assigned to non-scope 
parameter `a` calling `foo`

     @safe:

     struct A(S = string)
     {
     @safe:
         S s;
         void delegate() c;
     }

     struct B(S = string)
     {
     @safe:
         @disable this();

         this(C!S c, A!S a)
         {
             this.c = c;
             this.a = a;
         }

         C!S foo()
         {
             return c;
         }

         A!S a;
         C!S c;
     }

     class C(S = string)
     {
     @safe:
         C!S foo(A!S a)
         {
             auto o = new Object();
             return foo2(o, a);
         }

         C!S foo2(Object n, A!S a)
         {
             auto b = B!S(this, a);
          	return b.foo();
         }
     }

     unittest
     {
         static struct X
         {
         @safe:
         	void foo3()
     		{
         	}
         }

         X x;
         A!string a;
         a.s = "foo";
         a.c = &x.foo3;
         auto c = new C!string();
         c.foo(a);
     }

void main()
{
}



More information about the Digitalmars-d-learn mailing list