www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4218] New: safe function cannot call opApply

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4218

           Summary: safe function cannot call opApply
           Product: D
           Version: 2.041
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: zan77137 nifty.com



This code doesn't work!
--------------------------------------------
struct S{  safe int opApply(scope int delegate(ref int) dg){return 0;} }
 safe void main()
{
    S s;
    foreach (x; s) {}
}
--------------------------------------------

 safe delegate can implicit convert to  system delegate.
Following code can compile:
--------------------------------------------
struct S{  safe void foo(){} }
 safe void main()
{
    S s;
    void delegate() dg = &s.foo;
}
--------------------------------------------

And of course, "int delegate(ref int)  safe" should convert to "int
delegate(ref int)".

Therefore, safe function should allow to call opApply.

Workaround is here:
--------------------------------------------
struct S{
     safe int opApply(scope int delegate(ref int) dg){return 0;}
     safe int opApply(scope int delegate(ref int) safe dg){return 0;}
}
 safe void foo()
{
    S s;
    foreach (x; s) {}
}
 system void main()
{
    S s;
    foreach (x; s) {}
    foo();
}
--------------------------------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 21 2010
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4218


yebblies <yebblies gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |yebblies gmail.com
         Resolution|                            |DUPLICATE



The underlying issue a dupe of bug 3180.

*** This issue has been marked as a duplicate of issue 3180 ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 13 2011