www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20507] New: Debug statements affect inference of templated


          Issue ID: 20507
           Summary: Debug statements affect inference of templated
                    functions attributes
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: moonlightsentinel disroot.org

debug statements are allowed to violate  safe, pure,  nogc and nothrow
(allthough the latter is not implemented right now). But they influence the
attribute interference:


void main() pure /* nothrow */  safe  nogc
    debug foo();

void foo()  system
    // Just to be sure its neither  nogc, pure or nothrow
    __gshared int counter = 0;

    if (counter++)
        throw new Exception(new immutable(char)[counter]);

void bar()()
    debug foo();


..\debugging.d(4): Error:  safe function D main cannot call  system function
..\debugging.d(16):        debugging.bar!().bar is declared here
..\debugging.d(4): Error:  nogc function D main cannot call non- nogc function


The debug statement caused bar to become  system, non- nogc and non-nothrow.

Jan 15 2020