Type safety could prevent nuclear war
tsbockman via Digitalmars-d
digitalmars-d at puremagic.com
Thu Feb 4 20:02:41 PST 2016
On Friday, 5 February 2016 at 03:46:37 UTC, Chris Wright wrote:
> On Fri, 05 Feb 2016 01:10:53 +0000, tsbockman wrote:
> The compiler doesn't have all the information you need. You
> could add it to the build system or the linker as well as the
> compiler. Adding it to the linker is almost identical to my
> previous suggestion of adding optional name mangling to C.
What information, specifically, is the compiler missing?
The compiler already computes the name and type signature of each
function. As far as I can see, all that is necessary is to:
1) Insert that information (together with what file and line
number it came from) into a big list in a temporary file.
2) After all modules have been compiled, go back and sort the
list by function name.
3) Finally, scan the list for entries that share the same name,
but have incompatible type signatures. Emit warning messages as
needed. (The compiler should be used for this step, because it
already has a lot of information about C's type system built into
it that can help define "incompatible" sensibly.)
As far as I can see, this requires an extra pass, but no
additional information. What am I missing?
More information about the Digitalmars-d
mailing list