www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6359] New: Pure/ safe-inference should not be affected by __traits(compiles)


           Summary: Pure/ safe-inference should not be affected by
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Mac OS X
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: kennytm gmail.com

--- Comment #0 from kennytm gmail.com 2011-07-20 14:35:16 PDT ---
Test case:

 system void f6359() {}
pure void bug6359()() {
    static if (__traits(compiles, f6359())) {  // <-- this won't compile
        static assert(0);
void g6359() pure nothrow  safe {
x.d(9): Error: safe function 'g6359' cannot call system function 'bug6359'

The stuff inside `__traits(compiles, )` won't affect the purity/safety of the
program. Therefore, in the inference, the failed semantic to the  system
function `f6359` should not make `bug6359()` not able to be  safe.

The same happens if the annotation of `bug6359` is changed to  safe, which now
it is no longer inferable as pure.

nothrow is not affected.

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