Truthful error reporting for complicated compile-time type mismatches
authorPaul Khuong <pvk@pvk.ca>
Tue, 21 May 2013 21:57:04 +0000 (17:57 -0400)
committerPaul Khuong <pvk@pvk.ca>
Wed, 22 May 2013 05:13:22 +0000 (01:13 -0400)
commitc1ec38c7fe7279b68dcce74ec4bf408defefe522
tree90b0a7037bca93a9dca51f506d1c00858fd11b51
parent09f925d42d072d74c6977cc52e3ebf36135d2e15
Truthful error reporting for complicated compile-time type mismatches

Type mismatches for multiple-use LVARs (i.e. resulting from conditional
expressions) can't be pinpointed to a single source for the value(s).

Such expressions used to be reported as type mismatches with the constant
NIL. Instead, switch to a more complex format with the lowest common source
form, if any (hopefully the conditional), and the nodes that may deliver
the form's value.

Do the same when warning about non-EQ-comparable CATCH tags.
NEWS
src/compiler/ctype.lisp
src/compiler/ir1opt.lisp
src/compiler/ir1util.lisp
tests/compiler.pure.lisp