Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot build library with LLDC #40

Open
avaxar opened this issue Aug 13, 2023 · 1 comment
Open

Cannot build library with LLDC #40

avaxar opened this issue Aug 13, 2023 · 1 comment

Comments

@avaxar
Copy link

avaxar commented Aug 13, 2023

While compiling serve-d with LLDC 1.28.0 (DMD v2.098.0, LLVM 11.1.0) on Linux Mint x86_64, when it got to compile mir-ion, it spewed these error messages:

    Building mir-ion 2.2.0: building configuration [library]
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/csv.d(234,30): Deprecation: returning `Row(&this, this.nColumns)` escapes a reference to parameter `this`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/csv.d(234,30):        perhaps remove `scope` parameter annotation so `return` applies to `ref`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @nogc @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(IonSerializer!(32768u, ["data"], false))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/ion.d(444,19):        instantiated from here: `serializeValue!(IonSerializer!(32768u, ["data"], false), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/benchmark.d(68,25):        instantiated from here: `serializeIon!(ScopedBuffer!(ubyte, 4096LU), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @nogc @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(JsonSerializer!("", ScopedBuffer!(char, 4096LU)))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(584,23):        instantiated from here: `serializeValue!(JsonSerializer!("", ScopedBuffer!(char, 4096LU)), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/benchmark.d(73,26):        instantiated from here: `serializeJsonPretty!(ScopedBuffer!(char, 4096LU), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @nogc @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(MsgpackSerializer!(ScopedBuffer!(ubyte, 4096LU)))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/msgpack.d(634,19):        instantiated from here: `serializeValue!(MsgpackSerializer!(ScopedBuffer!(ubyte, 4096LU)), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/benchmark.d(78,29):        instantiated from here: `serializeMsgpack!(ScopedBuffer!(ubyte, 4096LU), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(JsonSerializer!("", Appender!(char[])))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(584,23):        instantiated from here: `serializeValue!(JsonSerializer!("", Appender!(char[])), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(596,28):        instantiated from here: `serializeJsonPretty!(Appender!(char[]), const(IonValueStream))`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(229,31):        instantiated from here: `serializeJsonPretty!(IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(597,53): Error: forward reference to inferred return type of function call `function () @trusted => cast(string)app.data()`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(229,31): Error: `pure` function `mir.ion.conv.ion2json` cannot call impure function `mir.ser.json.serializeJsonPretty!"".serializeJsonPretty!(IonValueStream).serializeJsonPretty`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(JsonSerializer!("\x09", Appender!(char[])))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(584,23):        instantiated from here: `serializeValue!(JsonSerializer!("\x09", Appender!(char[])), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(596,28):        instantiated from here: `serializeJsonPretty!(Appender!(char[]), const(IonValueStream))`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(256,31):        instantiated from here: `serializeJsonPretty!(IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/json.d(597,53): Error: forward reference to inferred return type of function call `function () @trusted => cast(string)app.data()`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(256,31): Error: `pure` function `mir.ion.conv.ion2jsonPretty` cannot call impure function `mir.ser.json.serializeJsonPretty!().serializeJsonPretty!(IonValueStream).serializeJsonPretty`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(TextSerializer!("", Appender!(char[])))` error instantiating
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/text.d(725,23):        instantiated from here: `serializeValue!(TextSerializer!("", Appender!(char[])), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/text.d(682,28):        instantiated from here: `serializeTextPretty!(Appender!(char[]), IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/text.d(512,34):        instantiated from here: `serializeTextPretty!("", IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(389,31):        instantiated from here: `serializeText!(IonValueStream)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/text.d(683,49): Error: forward reference to inferred return type of function call `function () @trusted => cast(string)app.data()`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/conv.d(389,31): Error: `pure` function `mir.ion.conv.ion2text` cannot call impure function `mir.ser.text.serializeText!(IonValueStream).serializeText`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9): Error: none of the overloads of `opApply` are callable using argument types `(int delegate(const(char[])[] symbolTable, IonDescribedValue value) pure nothrow @safe) const`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(37,19):        Candidates are: `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(48,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @nogc @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(53,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(58,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) @safe dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(63,19):                        `mir.ion.stream.IonValueStream.opApply(scope int delegate(scope const(char[])[] symbolTable, scope IonDescribedValue value) pure @nogc @system dg)`
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ion/stream.d(321,9):        ... (19 more, -v to show) ...
../../.dub/packages/mir-ion/2.2.0/mir-ion/source/mir/ser/package.d(981,32): Error: template instance `mir.ion.stream.IonValueStream.serialize!(TextSerializer!("\x09", Appender!(char[])))` error instantiating
Error ldc2 failed with exit code 1.

Oddly though, compiling with DMD v2.104.0 seems to work. Perhaps the library's codebase should remain compatible with older versions of the DMD frontend?

@avaxar avaxar changed the title Cannot build library Cannot build library with LLDC Aug 13, 2023
@9il
Copy link
Member

9il commented Aug 15, 2023

The recent compilers require code changes that aren't well compatible with older compilers because of Mir Ion code reflection complexity. The future policy is expected to be more conservative until new compiler deprecations come.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants