[Issue 14074] non-separate compilation fails, but separate compilation works
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sat Jan 31 19:53:49 PST 2015
https://issues.dlang.org/show_bug.cgi?id=14074
sinkuupump at gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |link-failure
CC| |sinkuupump at gmail.com
--- Comment #1 from sinkuupump at gmail.com ---
This is introduced by pull:
https://github.com/D-Programming-Language/dmd/pull/3948
I reduced into small source files:
//////// cbor.d
void encodeCbor(R, E)(R sink, E value)
{
encodeCborInt(sink);
encodeCborArray(sink, value);
static assert(false);
}
void encodeLongType(R)(R sink)
{
import primitives;
put(sink);
}
void encodeCborInt(R)(R sink)
{
encodeLongType(sink);
}
void encodeCborArrayHead(R)(R sink, ulong arrayLength)
{
encodeLongType(sink);
}
void encodeCborArray(R, A)(R sink, A)
{
encodeCborArrayHead(sink,
__traits(compiles, { encodeCbor(cast(ubyte[])null, A.tupleof[0].init);
}));
}
//////// primitives.d
void put(R)(R)
{
}
//////// test.d
import primitives; // necessary
import cbor;
struct Inner {
}
struct Test {
Inner inner;
}
void main () {
ubyte[] buffer;
Test test ;
encodeCborArray(buffer, test);
}
$ ls
cbor.d primitives.d test.d
$ dmd test.d cbor.d
test.o: In function `pure nothrow @nogc @safe void
cbor.encodeLongType!(ubyte[]).encodeLongType(ubyte[])':
cbor.d:(.text.pure nothrow @nogc @safe void
cbor.encodeLongType!(ubyte[]).encodeLongType(ubyte[])+0x1c): undefined
reference to `pure nothrow @nogc @safe void
primitives.put!(ubyte[]).put(ubyte[])'
collect2: error: ld returned 1 exit status
--- errorlevel 1
$ dmd -allinst test.d cbor.d && echo OK
OK
$ dmd -c cbor.d
$ dmd test.d cbor.o && echo OK
OK
--
More information about the Digitalmars-d-bugs
mailing list