"H. S. Teoh" <[email protected]> wrote in message news:[email protected]... > On Thu, Apr 26, 2012 at 12:43:00AM -0400, Nick Sabalausky wrote: >> "Andrej Mitrovic" <[email protected]> wrote in message >> news:[email protected]... >> > On 4/25/12, bearophile <[email protected]> wrote: >> >> In this case what error message would you like to receive? >> > >> > The alias itself. HWND, not Typedef!(void*). >> >> I've long been convinced that unaliasing symbols for DMD's output >> messages is a big, big mistake. It's nearly always the wrong level of >> abstraction. > [...] > > Why can't we have both? Sometimes you *want* to know what's hiding > behind that alias, esp. when debugging deeply nested generic code where > this is far from obvious. For example, given this C++ code: > > typedef int* CSPTR; > int main() { > CSPTR p = "abc"; > } > > g++ 4.6.3 gives this message: > > /tmp/test.c: In function 'int main()': > /tmp/test.c:3:12: error: cannot convert 'const char*' to 'CSPTR {aka int*}' > in initialization > > Both the typedef name and the actual type are specified in the message, > which makes it eminently useful in both the case where you're expecting > the typedef'd name and the case where you want to know what's behind it. > > I say dmd should do the same thing. There's no reason to only print one > over the other when you can just print both. Full disclosure is the best > policy when there's a problem. > >
Yea, I've got no problem with both (other than sometimes the fully-unaliased one can be really, really long.) But at the very least, the type *as used* needs to be shown. The unaliased form isn't bad to have too, but it's typically of lesser importance. > T > > -- > Democracy: The triumph of popularity over principle. -- C.Bond Heh, love it :) (Glad it's not the 50's - I'd be accused of being a "dirty commie"!)
