[Issue 19548] [REG 2.080] Missing reference to _D6object__T14__switch_errorZQrFNaNbNiNfAyamZv
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Jan 6 14:19:27 UTC 2019
https://issues.dlang.org/show_bug.cgi?id=19548
Seb <greeenify at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |greeenify at gmail.com
--- Comment #2 from Seb <greeenify at gmail.com> ---
The linker error is different for me if I add -debug to the mix when compiling
:D
---
foo.o:foo.d:_D76TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ:
error: undefined reference to '_D6object__T10RTInfoImplVAmA2i32i8Z4datayG2m'
foo.o:foo.d:_D48TypeInfo_S3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ:
error: undefined reference to '_D6object__T10RTInfoImplVAmA2i16i2Z4datayG2m'
---
Also as the behavior is different for `-checkaction=C`, I presume it runs into
this:
https://github.com/dlang/dmd/blob/92408ea7b43f9636a5e5b0426d7c6ffd73576ca2/src/dmd/statementsem.d#L2596
Specifically CallExp needs to be a DotTemplateInstanceExp.
So this should be a good start:
---
diff --git a/src/dmd/statementsem.d b/src/dmd/statementsem.d
index cd7ac9aca..3cb3f01c4 100644
--- a/src/dmd/statementsem.d
+++ b/src/dmd/statementsem.d
@@ -2602,16 +2602,16 @@ else
}
else
{
- Expression sl = new IdentifierExp(ss.loc, Id.empty);
- sl = new DotIdExp(ss.loc, sl, Id.object);
- sl = new DotIdExp(ss.loc, sl, Id.__switch_error);
+ Expression objectId = new IdentifierExp(ss.loc,
Id.object);
Expressions* args = new Expressions();
args.push(new StringExp(ss.loc, cast(char*)
ss.loc.filename));
args.push(new IntegerExp(ss.loc.linnum));
- sl = new CallExp(ss.loc, sl, args);
- sl.expressionSemantic(sc);
+ auto tiargs = new Objects();
+ auto dt = new DotTemplateInstanceExp(ss.loc, objectId,
Id.__switch_error, tiargs);
+ Expression sl = new CallExp(ss.loc, dt, args);
+ sl = sl.expressionSemantic(sc);
s = new SwitchErrorStatement(ss.loc, sl);
}
---
However, it still doesn't trigger the instantiation.
--
More information about the Digitalmars-d-bugs
mailing list