google/traceur-compiler — pull request #1565 by arv (2014-12-06 20:31:27+00:00)
Title: Array destructuring should use iterators

The assignment

[x] = obj;

should desugar to something like:

$tmp = obj,
$iter = $tmp[Symbol.iterator](),
$iterResultObject = $iter.next(),
x = $iterResultObject.done ? undefined : $iterResultObject.value;
obj

When you add holes, spread and default initializers it gets even
hairier.

Fixes #840