Fix output for arrays containing undefined values.
authorDavid Glasser <glasser@davidglasser.net>
Wed, 16 Jan 2013 19:59:19 +0000 (14:59 -0500)
committerMihai Bazon <mihai@bazon.net>
Thu, 17 Jan 2013 09:36:10 +0000 (11:36 +0200)
commit1529ab965a4a434e6024977a53f8460f6a474086
treec9bd418871d6e8352d0edfa1fd952a2be0802375
parent605f330e6949ca699a8770a9dd7d80bbacc6a175
Fix output for arrays containing undefined values.

1b6bcca7 was a first attempt at this. That commit made Uglify stop replacing
holes with undefined, but instead it started replacing undefined with
holes. This is slightly problematic, because there is a difference between a
hole and an undefined value. More problematically, it changed [1,undefined] to
[1,] which generally doesn't even parse as a hole (just as a trailing comma), so
it didn't even preserve the length of the array!

Instead, parse holes as their own special AST node which prints invisibly.
lib/ast.js
lib/output.js
lib/parse.js
test/compress/arrays.js [new file with mode: 0644]