September 04, 2020 [Issue 21223] New: nothrow constructor may call throwing constructor with | ||||
|---|---|---|---|---|
| ||||
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. -- | ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply