digitalmars.D.bugs - [Issue 21223] New: nothrow constructor may call throwing constructor
- d-bugmail puremagic.com (38/38) Sep 04 2020 https://issues.dlang.org/show_bug.cgi?id=21223
https://issues.dlang.org/show_bug.cgi?id=21223 Issue ID: 21223 Summary: nothrow constructor may call throwing constructor with Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: moonlightsentinel disroot.org Consider the following example: ============================================================== struct HasDtor { ~this() { // Enforce system, ... just to be sure __gshared int i; if (++i) throw new Exception(new immutable(char)[](10)); } } // The user-defined dtor matches the ctor attributes struct Strict { HasDtor member; this(int) pure nothrow nogc safe {} ~this() pure nothrow nogc safe {} } ============================================================== Compiling this code with `-preview=dtorfields` will insert a potential call to HasDtor.~this into Strict.this. This is obviously an error because the destructor doesn't match the attributes enforced by the constructor, yet only pure nothrow nogc will be reported while non-nothrow is accepted. --
Sep 04 2020