Bug 146339

Summary: Array destructuring seems to not follow the ES6 spec
Product: WebKit Reporter: Boris Zbarsky <bzbarsky>
Component: JavaScriptCoreAssignee: Yusuke Suzuki <ysuzuki>
Status: RESOLVED FIXED    
Severity: Normal CC: arv, ysuzuki
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 38410    

Description Boris Zbarsky 2015-06-26 02:02:26 PDT
Consider this testcase:

  var y = "FAIL";
  Object.defineProperty(Array.prototype, 0, { get: function() { y = "PASS"; } });
  var [,x] = [,1];
  alert(y);

per spec, this should alert "PASS".  In Safari (and in a WebKit nightly), this alerts "FAIL".
Comment 1 Yusuke Suzuki 2015-06-26 02:10:02 PDT
I guess this is fixed by this commit[1].

I've tried it with r185990's JSC shell and get "PASS".

var y = "FAIL";
Object.defineProperty(Array.prototype, 0, { get: function() { y = "PASS"; } });
var [,x] = [,1];
print(y);

Could you tell me the revision number?

[1]: http://trac.webkit.org/changeset/185853
Comment 2 Yusuke Suzuki 2015-06-26 02:12:24 PDT
Ah, this commit[1].

[1]: http://trac.webkit.org/changeset/185791
Comment 3 Boris Zbarsky 2015-06-26 02:16:03 PDT
Looks like I was on r185625.  

I can confirm that http://trac.webkit.org/changeset/185791 looks like it should fix this, and that it's fixed in r185958.  Sorry for the spurious bug report.  :(
Comment 4 Yusuke Suzuki 2015-06-26 02:17:24 PDT
(In reply to comment #3)
> Looks like I was on r185625.  
> 
> I can confirm that http://trac.webkit.org/changeset/185791 looks like it
> should fix this, and that it's fixed in r185958.  Sorry for the spurious bug
> report.  :(

No problem!! I'm looking forward to seeing your reports about the other ES6 edge case areas!!!