Open cyrusmsk opened 1 year ago
How crucial is present the opEquals function as 'pure nothrow @nogc' for the project?
When I removed it in mir-core/algebraic.d and in mir-algorithm/string_map.d - my simple example with asdf was successfully compiled with 'dub build --combined'. But I don't know if it will cause any problems in other code.
Why I need '--combined' flag? It is because p0nce said, that without it the code generation from intel-intrinsics library is not working properly.
That is a compiler bug. I don't know what we can do about that.
As a workaround solution it is possible to add 'pure nothrow @nogc' to opEquals implementation in mir-algorithm/annotated.d
Unfortunately, no, because it is a generic type, and underlaying may not satisfy the attributes.
If I add asdf to the empty dub project and run 'dub build' - it builds fine. But when I use 'dub build --combined' it gives me errors:
.dub/packages/mir-core-1.3.15/mir-core/source/mir/algebraic.d(1473,36): Error:
pure
functionmir.algebraic.Algebraic!opEquals!().opEquals
cannot call impure functionmir.annotated.U!(Algebraic!(Ion_)).Annotated.opEquals
.dub/packages/mir-core-1.3.15/mir-core/source/mir/algebraic.d(1473,36): Error:@nogc
functionmir.algebraic.Algebraic!opEquals!().opEquals
cannot call non-@nogc functionmir.annotated.U!(Algebraic!(Ion_)).Annotated.opEquals
.dub/packages/mir-core-1.3.15/mir-core/source/mir/algebraic.d(1473,36): Error: functionmir.annotated.U!(Algebraic!.opEquals
is notnothrow
.dub/packages/mir-core-1.3.15/mir-core/source/mir/algebraic.d(1428,10): Error: functionmir.algebraic.Algebraic!(Ion_).s!().opEquals
may throw but is marked asnothrow
.dub/packages/mir-algorithm-3.18.4/mir-algorithm/source/mir/annotated.d(69,54): Error: template instancemir.algebraic.Algebraic.opEquals!()
error instantiating .dub/packages/mir-core-1.3.15/mir-core/source/mir/internal/meta.d(411,39): instantiated from here:U!(Algebraic!.dub/packages/mir-core-1.3.15/mir-core/source/mir/algebraic.d(857,36): 12 recursive instantiations from here: s!(isVariant, This, Algebraic!(Ion_), typeof(null), bool, long, double, string, Blob, Clob, Timestamp, This[], StringMap!!(This))
.dub/packages/mir-algorithm-3.18.4/mir-algorithm/source/mir/algebraicalias/ion.d(60,22): instantiated from here: `Algebraic!(Ion)`Is it possible to fix that? So we can use asdf in '--combined' build?