[Issue 21720] New: Struct with destructor cannot be emplaced in betterC
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Mar 15 16:39:50 UTC 2021
https://issues.dlang.org/show_bug.cgi?id=21720
Issue ID: 21720
Summary: Struct with destructor cannot be emplaced in betterC
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: regression
Priority: P1
Component: druntime
Assignee: nobody at puremagic.com
Reporter: chalucha at gmail.com
Reduced test case:
```D
import core.stdc.stdlib : malloc;
import core.lifetime : emplace;
struct Foo {
size_t foo;
~this() { } // works with this line commented out
}
extern(C)
void main() {
auto p = malloc(Foo.sizeof);
Foo* pay = emplace!Foo(p[0..Foo.sizeof], 1);
}
```
dmd -betterC test.d
returns:
/home/tomas/dlang/dmd-2.096.0/linux/bin64/../../src/druntime/import/core/internal/lifetime.d(35):
Error: Cannot use try-catch statements with -betterC
/home/tomas/dlang/dmd-2.096.0/linux/bin64/../../src/druntime/import/core/internal/lifetime.d(57):
Error: template instance `core.internal.lifetime.emplaceRef!(Foo, Foo,
int).emplaceRef.S.__ctor!()` error instantiating
/home/tomas/dlang/dmd-2.096.0/linux/bin64/../../src/druntime/import/core/lifetime.d(299):
instantiated from here: `emplaceRef!(Foo, Foo, int)`
test.d(13): instantiated from here: `emplace!(Foo, int)`
This worked with previous compilers.
--
More information about the Digitalmars-d-bugs
mailing list