1.0.43.16: compiler: Fix non-unicode build.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 3 Oct 2010 14:50:53 +0000 (14:50 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Sun, 3 Oct 2010 14:50:53 +0000 (14:50 +0000)
commit425dd2dc04e5069689af53adfbef2671b7c1ca48
tree20b6d13a129e2d0a890359a2d205d24fc72b5d2a
parent4ad987e94e9c22e954b468e44ff94f3d29755fe3
1.0.43.16: compiler: Fix non-unicode build.

  * Building #-sb-unicode has been broken since 1.0.36.15, due
to a bug in the then-new element type handling for unions of
array types.

  * The value originally selected as a sentinel value for not
having processed any of the types in a union was *empty-type*,
which is also the element-type of (array nil (*)), also known
as a subtype of string.

  * Simple-string is a union type of (array nil (*)), (array
character (*)), and simple-base-string on sb-unicode targets.
It is a union type of (array nil (*)) and simple-base-string
on non-unicode targets.

  * Because the (array nil (*)) came first in the list of
types in the union, and because its element-type was
*empty-type*, the sentinel value, it was ignored when
computing the overall array element type.

  * Because the character and base-char types are disjoint,
the overall array element type calculation came up with the
correct answer on unicode builds.

  * To correct the problem, select a sentinel value that is
not a type object: NIL.

  * From IRC, this morning:
[9:40] * nikodemus hates (array nil)
[9:40] <nikodemus> and it hates me right back
NEWS
src/compiler/array-tran.lisp
version.lisp-expr