Bug 19291 – undefined reference linker error with separate compillation

Status
NEW
Severity
normal
Priority
P3
Component
tools
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2018-10-07T20:30:35Z
Last change time
2023-04-28T11:02:57Z
Assigned to
No Owner
Creator
JR

Comments

Comment #0 by zorael — 2018-10-07T20:30:35Z
Manjaro/Arch x86_64, dmd v2.082.0, dub v1.11.0. The code in the linkererror branch at https://github.com/zorael/kameloso/tree/linkererror compiles in normal mode but gives an undefined reference error when building with dub --build-mode=singleFile. The error disappears and compilation succeeds if a local import inside a function (main) is moved up to module-level. > $ git clone https://github.com/zorael/kameloso -b linkererror > $ cd kameloso > $ dub build --build-mode=singleFile > /usr/bin/ld: .dub/build/application-debug-linux.posix-x86_64-dmd_2082-6DCE8163999240FCF02537A83F2B5667/main_4e3dbc0b.o: in function `_Dmain': > /home/zorael/src/kameloso/source/kameloso/main.d:10: undefined reference to `_D8kameloso6logger14KamelosoLogger__T8tintImplVE3std12experimentalQCd4core8LogLeveli64ZQByMxFNbNdNiZAya' --- main.d import std.experimental.logger; Logger logger; void main() { import kameloso.logger; // <-- string infotint = (cast(KamelosoLogger)logger).infotint; } --- logger.d module kameloso.logger; import std.experimental.logger; class KamelosoLogger : Logger { this(LogLevel lv) { super(lv); } private string tintImpl(LogLevel level)() const @property { return string.init; } alias infotint = tintImpl!(LogLevel.info); }
Comment #1 by razvan.nitu1305 — 2023-04-28T11:02:57Z
This sounds like a dub bug.