VisualD is using the MS linker, which obviously doesn't demangle D symbols when emitting link errors, but it's a pretty serious usability problem when encountering any link errors. (phobos! >_<)
I wonder if we could pipe the linker's output through a processor to detect and demangle D symbols when emitting to the output?
It should present the link error text exactly the same as a C++ link error, which shows the demangled name first, followed by the mangled name in parens.
Comment #1 by r.sagitario — 2018-05-21T13:57:59Z
I've added a wrapper for the link step.
You might want to try the latest version from https://ci.appveyor.com/project/rainers/visuald (BTW: some msbuild functionality is not rebuilt for V2017 on appveyor).
Trying to build DMD, I get a different error:
2>C:\Program Files (x86)\VisualD\msbuild\dcompile.targets(134,15): error MSB4030: "true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true;true" is an invalid value for the "DebugFull" parameter of the "CompileD" task. The "DebugFull" parameter is of type "System.Boolean".
Comment #4 by turkeyman — 2018-05-22T05:06:46Z
I also noticed some error dialogs pop-up when I launch VS after installing that build.
I didn't take notice of them at the time, I didn't think they were VisualD related, but perhaps they were...
Comment #5 by r.sagitario — 2018-05-22T06:16:14Z
> Trying to build DMD, I get a different error:
>2>C:\Program Files (x86)\VisualD\msbuild\dcompile.targets(134,15): error MSB4030:
Should be fixed in the new build.
>Oops! Installed and now I get this:
>1> Link:
Hmm, works here. Can you send me the build log with "diagnostic" verbosity?
Comment #6 by turkeyman — 2018-05-23T00:12:36Z
Emailed you the log (building DMD)
Comment #7 by r.sagitario — 2018-05-23T19:30:01Z
appveyor built with dmd 2.071 which was the last version to produce a broken executable. Now updated to 2.080. Please try the new version.
Comment #8 by turkeyman — 2018-05-23T20:32:19Z
How was it that DMD produced a broken executable?
Is that a thing? That sounds like a critical bug if it's producing subtly broken code.
Comment #9 by r.sagitario — 2018-05-23T20:56:40Z
That was dmd 2.071 from 2016, with rather fresh support for -m32mscoff. I don't think it's worth investigating what the issue was back then. dmd 2.072 produces a working exe.
Comment #10 by turkeyman — 2018-05-23T21:11:20Z
Haha, out by one! :)
Just tried the new one. It works.
It still emits the message:
1> pipelink called with: "C:\Program Files (x86)\VisualD\msbuild\pipelink.exe" /ERRORREPORT:PROMPT @C:\Users\maevans\AppData\Local\Temp\tmp120dba8df2854aa59c1d50a0b2e00940.rsp
That can probably be turned back off.
Awesome work! Thanks again!
VisualD is really getting so much better, it's feeling really solid these days.
Have you had any thoughts about the /INCREMENTAL linking issue? That's biggest gotcha left that I'm aware of, and I'm using the debugger a lot to debug DMD!
MS obviously have a strategy to deal with it in their own debugger.
Comment #11 by r.sagitario — 2018-05-24T07:06:19Z
> That can probably be turned back off.
Done.
What slightly annoys me is that the wrapper is now also used with C++ builds that have no D source files in them. I haven't seen any issues so far, but the tracker log files are different now and I'm not sure that might has no side-effects.
Comment #12 by turkeyman — 2018-05-25T02:24:14Z
I also had that thought... but I tried to push it aside and pretend I never thought of it :P
Comment #13 by turkeyman — 2018-05-25T02:24:31Z
Let's call this done huh?
Comment #14 by r.sagitario — 2018-05-25T06:39:58Z
I think I managed to call pipelink.exe only if there are D sources found in the project itself or any referenced project, similar to adding the runtime libraries.
Comment #15 by turkeyman — 2018-05-25T06:41:42Z
Oh cool.
I suspected it must be possible, exactly because you already do that for the runtime libraries ;)