<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[186246] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/186246">186246</a></dd>
<dt>Author</dt> <dd>saambarati1@gmail.com</dd>
<dt>Date</dt> <dd>2015-07-02 16:53:10 -0700 (Thu, 02 Jul 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename &quot;Deconstruction&quot; to &quot;Destructuring&quot; throughout JSC
https://bugs.webkit.org/show_bug.cgi?id=146100

Reviewed by Mark Lam.

Source/JavaScriptCore:

It is good to use the same naming conventions as the ES6
spec because it is the de facto way of speaking about these
language features. This also has the benefit of improving JSC's
hackability because it improves code readability for newcomers
to JSC or newcomers to this part of the code base.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeNextParameter):
(JSC::BytecodeGenerator::visibleNameForParameter):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::registerFor):
* bytecompiler/NodesCodegen.cpp:
(JSC::ForInNode::tryGetBoundLocal):
(JSC::ForInNode::emitLoopHeader):
(JSC::ForOfNode::emitBytecode):
(JSC::ClassExprNode::emitBytecode):
(JSC::DestructuringAssignmentNode::emitBytecode):
(JSC::DestructuringPatternNode::~DestructuringPatternNode):
(JSC::ArrayPatternNode::collectBoundIdentifiers):
(JSC::DeconstructingAssignmentNode::emitBytecode): Deleted.
(JSC::DeconstructionPatternNode::~DeconstructionPatternNode): Deleted.
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createElementList):
(JSC::ASTBuilder::createFormalParameterList):
(JSC::ASTBuilder::createClause):
(JSC::ASTBuilder::createClauseList):
(JSC::ASTBuilder::createForInLoop):
(JSC::ASTBuilder::createForOfLoop):
(JSC::ASTBuilder::isBindingNode):
(JSC::ASTBuilder::isResolve):
(JSC::ASTBuilder::createDestructuringAssignment):
(JSC::ASTBuilder::createArrayPattern):
(JSC::ASTBuilder::appendArrayPatternSkipEntry):
(JSC::ASTBuilder::appendArrayPatternEntry):
(JSC::ASTBuilder::appendArrayPatternRestEntry):
(JSC::ASTBuilder::createObjectPattern):
(JSC::ASTBuilder::appendObjectPatternEntry):
(JSC::ASTBuilder::createDeconstructingAssignment): Deleted.
* parser/NodeConstructors.h:
(JSC::TryNode::TryNode):
(JSC::ParameterNode::ParameterNode):
(JSC::ForOfNode::ForOfNode):
(JSC::DestructuringPatternNode::DestructuringPatternNode):
(JSC::ArrayPatternNode::ArrayPatternNode):
(JSC::ArrayPatternNode::create):
(JSC::ObjectPatternNode::ObjectPatternNode):
(JSC::BindingNode::create):
(JSC::BindingNode::BindingNode):
(JSC::DestructuringAssignmentNode::DestructuringAssignmentNode):
(JSC::DeconstructionPatternNode::DeconstructionPatternNode): Deleted.
(JSC::DeconstructingAssignmentNode::DeconstructingAssignmentNode): Deleted.
* parser/Nodes.cpp:
(JSC::FunctionParameters::create):
* parser/Nodes.h:
(JSC::ExpressionNode::isResolveNode):
(JSC::ExpressionNode::isBracketAccessorNode):
(JSC::ExpressionNode::isDotAccessorNode):
(JSC::ExpressionNode::isDestructuringNode):
(JSC::ExpressionNode::isFuncExprNode):
(JSC::ExpressionNode::isCommaNode):
(JSC::ExpressionNode::isSimpleArray):
(JSC::ParameterNode::pattern):
(JSC::ParameterNode::nextParam):
(JSC::FunctionParameters::size):
(JSC::FunctionParameters::at):
(JSC::FunctionParameters::patterns):
(JSC::DestructuringPatternNode::isBindingNode):
(JSC::DestructuringPatternNode::emitDirectBinding):
(JSC::ArrayPatternNode::appendIndex):
(JSC::ObjectPatternNode::appendEntry):
(JSC::BindingNode::boundProperty):
(JSC::DestructuringAssignmentNode::bindings):
(JSC::ExpressionNode::isDeconstructionNode): Deleted.
(JSC::DeconstructionPatternNode::isBindingNode): Deleted.
(JSC::DeconstructionPatternNode::emitDirectBinding): Deleted.
(JSC::DeconstructingAssignmentNode::bindings): Deleted.
* parser/Parser.cpp:
(JSC::Parser&lt;LexerType&gt;::parseVarDeclaration):
(JSC::Parser&lt;LexerType&gt;::parseWhileStatement):
(JSC::Parser&lt;LexerType&gt;::parseVarDeclarationList):
(JSC::Parser&lt;LexerType&gt;::createBindingPattern):
(JSC::Parser&lt;LexerType&gt;::tryParseDestructuringPatternExpression):
(JSC::Parser&lt;LexerType&gt;::parseDestructuringPattern):
(JSC::Parser&lt;LexerType&gt;::parseDefaultValueForDestructuringPattern):
(JSC::Parser&lt;LexerType&gt;::parseForStatement):
(JSC::Parser&lt;LexerType&gt;::parseFormalParameters):
(JSC::Parser&lt;LexerType&gt;::parseFunctionParameters):
(JSC::Parser&lt;LexerType&gt;::parseAssignmentExpression):
(JSC::Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression): Deleted.
(JSC::Parser&lt;LexerType&gt;::parseDeconstructionPattern): Deleted.
(JSC::Parser&lt;LexerType&gt;::parseDefaultValueForDeconstructionPattern): Deleted.
* parser/Parser.h:
(JSC::isEvalNode):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createPropertyList):
(JSC::SyntaxChecker::createElementList):
(JSC::SyntaxChecker::createFormalParameterList):
(JSC::SyntaxChecker::createClause):
(JSC::SyntaxChecker::createClauseList):
(JSC::SyntaxChecker::operatorStackPop):
* tests/stress/reserved-word-with-escape.js:
* tests/stress/rest-elements.js:

LayoutTests:

* js/deconstructing-parameters-should-be-locals-expected.txt: Removed.
* js/deconstructing-parameters-should-be-locals.html: Removed.
* js/destructuring-assignment-expected.txt:
* js/destructuring-parameters-should-be-locals-expected.txt: Copied from LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt.
* js/destructuring-parameters-should-be-locals.html: Copied from LayoutTests/js/deconstructing-parameters-should-be-locals.html.
* js/regress/deconstructing-parameters-overridden-by-function-expected.txt: Removed.
* js/regress/deconstructing-parameters-overridden-by-function.html: Removed.
* js/regress/destructuring-parameters-overridden-by-function-expected.txt: Copied from LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt.
* js/regress/destructuring-parameters-overridden-by-function.html: Copied from LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html.
* js/regress/script-tests/deconstructing-parameters-overridden-by-function.js: Removed.
* js/regress/script-tests/destructuring-parameters-overridden-by-function.js: Copied from LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js.
* js/script-tests/deconstructing-parameters-should-be-locals.js: Removed.
* js/script-tests/destructuring-assignment.js:
(testDestructuredArgs):
(testDestructuredArgLength):
(testDeconstructArgs): Deleted.
(testDeconstructArgLength): Deleted.
* js/script-tests/destructuring-parameters-should-be-locals.js: Copied from LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js.
(description.value.string_appeared_here.readDestructuredParameter):
(overwriteDestructuredParameter):
(readCapturedDestructuredParameter):
(overwriteCapturedDestructuredParameter):
(description.value.string_appeared_here.readDeconstructedParameter): Deleted.
(overwriteDeconstructedParameter): Deleted.
(readCapturedDeconstructedParameter): Deleted.
(overwriteCapturedDeconstructedParameter): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsjsdestructuringassignmentexpectedtxt">trunk/LayoutTests/js/destructuring-assignment-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsscripttestsdestructuringassignmentjs">trunk/LayoutTests/js/script-tests/destructuring-assignment.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerNodesCodegencpp">trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserASTBuilderh">trunk/Source/JavaScriptCore/parser/ASTBuilder.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodeConstructorsh">trunk/Source/JavaScriptCore/parser/NodeConstructors.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodescpp">trunk/Source/JavaScriptCore/parser/Nodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodesh">trunk/Source/JavaScriptCore/parser/Nodes.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParsercpp">trunk/Source/JavaScriptCore/parser/Parser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParserh">trunk/Source/JavaScriptCore/parser/Parser.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSyntaxCheckerh">trunk/Source/JavaScriptCore/parser/SyntaxChecker.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressreservedwordwithescapejs">trunk/Source/JavaScriptCore/tests/stress/reserved-word-with-escape.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressrestelementsjs">trunk/Source/JavaScriptCore/tests/stress/rest-elements.js</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsjsdestructuringparametersshouldbelocalsexpectedtxt">trunk/LayoutTests/js/destructuring-parameters-should-be-locals-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdestructuringparametersshouldbelocalshtml">trunk/LayoutTests/js/destructuring-parameters-should-be-locals.html</a></li>
<li><a href="#trunkLayoutTestsjsregressdestructuringparametersoverriddenbyfunctionexpectedtxt">trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsregressdestructuringparametersoverriddenbyfunctionhtml">trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function.html</a></li>
<li><a href="#trunkLayoutTestsjsregressscripttestsdestructuringparametersoverriddenbyfunctionjs">trunk/LayoutTests/js/regress/script-tests/destructuring-parameters-overridden-by-function.js</a></li>
<li><a href="#trunkLayoutTestsjsscripttestsdestructuringparametersshouldbelocalsjs">trunk/LayoutTests/js/script-tests/destructuring-parameters-should-be-locals.js</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsjsdeconstructingparametersshouldbelocalsexpectedtxt">trunk/LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsdeconstructingparametersshouldbelocalshtml">trunk/LayoutTests/js/deconstructing-parameters-should-be-locals.html</a></li>
<li><a href="#trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionexpectedtxt">trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt</a></li>
<li><a href="#trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionhtml">trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html</a></li>
<li><a href="#trunkLayoutTestsjsregressscripttestsdeconstructingparametersoverriddenbyfunctionjs">trunk/LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js</a></li>
<li><a href="#trunkLayoutTestsjsscripttestsdeconstructingparametersshouldbelocalsjs">trunk/LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/ChangeLog        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2015-07-02  Saam barati  &lt;saambarati1@gmail.com&gt;
+
+        Rename &quot;Deconstruction&quot; to &quot;Destructuring&quot; throughout JSC
+        https://bugs.webkit.org/show_bug.cgi?id=146100
+
+        Reviewed by Mark Lam.
+
+        * js/deconstructing-parameters-should-be-locals-expected.txt: Removed.
+        * js/deconstructing-parameters-should-be-locals.html: Removed.
+        * js/destructuring-assignment-expected.txt:
+        * js/destructuring-parameters-should-be-locals-expected.txt: Copied from LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt.
+        * js/destructuring-parameters-should-be-locals.html: Copied from LayoutTests/js/deconstructing-parameters-should-be-locals.html.
+        * js/regress/deconstructing-parameters-overridden-by-function-expected.txt: Removed.
+        * js/regress/deconstructing-parameters-overridden-by-function.html: Removed.
+        * js/regress/destructuring-parameters-overridden-by-function-expected.txt: Copied from LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt.
+        * js/regress/destructuring-parameters-overridden-by-function.html: Copied from LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html.
+        * js/regress/script-tests/deconstructing-parameters-overridden-by-function.js: Removed.
+        * js/regress/script-tests/destructuring-parameters-overridden-by-function.js: Copied from LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js.
+        * js/script-tests/deconstructing-parameters-should-be-locals.js: Removed.
+        * js/script-tests/destructuring-assignment.js:
+        (testDestructuredArgs):
+        (testDestructuredArgLength):
+        (testDeconstructArgs): Deleted.
+        (testDeconstructArgLength): Deleted.
+        * js/script-tests/destructuring-parameters-should-be-locals.js: Copied from LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js.
+        (description.value.string_appeared_here.readDestructuredParameter):
+        (overwriteDestructuredParameter):
+        (readCapturedDestructuredParameter):
+        (overwriteCapturedDestructuredParameter):
+        (description.value.string_appeared_here.readDeconstructedParameter): Deleted.
+        (overwriteDeconstructedParameter): Deleted.
+        (readCapturedDeconstructedParameter): Deleted.
+        (overwriteCapturedDeconstructedParameter): Deleted.
+
</ins><span class="cx"> 2015-07-02  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add preference to disable all http-equiv.
</span></span></pre></div>
<a id="trunkLayoutTestsjsdeconstructingparametersshouldbelocalsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/deconstructing-parameters-should-be-locals-expected.txt        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-This tests to ensure that ddeconstructing parameters behave like regular locals
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS readDeconstructedParameter(['inner']) is 'inner'
-PASS overwriteDeconstructedParameter(['unused']); value; is 'outer'
-PASS readCapturedDeconstructedParameter(['inner']) is 'inner'
-PASS overwriteCapturedDeconstructedParameter(['unused']); is 'innermost'
-PASS value is 'outer'
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsjsdeconstructingparametersshouldbelocalshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/deconstructing-parameters-should-be-locals.html (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/deconstructing-parameters-should-be-locals.html        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/deconstructing-parameters-should-be-locals.html        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;script src=&quot;script-tests/deconstructing-parameters-should-be-locals.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsjsdestructuringassignmentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/destructuring-assignment-expected.txt (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/destructuring-assignment-expected.txt        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/destructuring-assignment-expected.txt        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -78,9 +78,9 @@
</span><span class="cx"> PASS ({'a':a,'b':b}=anObject); var r=a+b; r is '12'
</span><span class="cx"> PASS a+b is '1122'
</span><span class="cx"> PASS a+b is '2211'
</span><del>-PASS testDeconstructArgs('1', '2') is '12'
-PASS testDeconstructArgLength('1', '2') is 2
-PASS testDeconstructArgs('2') is '2undefined'
</del><ins>+PASS testDestructuredArgs('1', '2') is '12'
+PASS testDestructuredArgLength('1', '2') is 2
+PASS testDestructuredArgs('2') is '2undefined'
</ins><span class="cx"> PASS a is 1
</span><span class="cx"> PASS b is 2
</span><span class="cx"> PASS c is 3
</span></span></pre></div>
<a id="trunkLayoutTestsjsdestructuringparametersshouldbelocalsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/js/destructuring-parameters-should-be-locals-expected.txt (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/destructuring-parameters-should-be-locals-expected.txt                                (rev 0)
+++ trunk/LayoutTests/js/destructuring-parameters-should-be-locals-expected.txt        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+This tests to ensure that destructuring parameters behave like regular locals
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS readDestructuredParameter(['inner']) is 'inner'
+PASS overwriteDestructuredParameter(['unused']); value; is 'outer'
+PASS readCapturedDestructuredParameter(['inner']) is 'inner'
+PASS overwriteCapturedDestructuredParameter(['unused']); is 'innermost'
+PASS value is 'outer'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsjsdestructuringparametersshouldbelocalshtmlfromrev186245trunkLayoutTestsjsdeconstructingparametersshouldbelocalshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/js/destructuring-parameters-should-be-locals.html (from rev 186245, trunk/LayoutTests/js/deconstructing-parameters-should-be-locals.html) (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/destructuring-parameters-should-be-locals.html                                (rev 0)
+++ trunk/LayoutTests/js/destructuring-parameters-should-be-locals.html        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;script-tests/destructuring-parameters-should-be-locals.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-JSRegress/deconstructing-parameters-overridden-by-function
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS no exception thrown
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;/head&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/regress-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;script-tests/deconstructing-parameters-overridden-by-function.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../resources/regress-post.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsjsregressdestructuringparametersoverriddenbyfunctionexpectedtxtfromrev186245trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function-expected.txt (from rev 186245, trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function-expected.txt) (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function-expected.txt                                (rev 0)
+++ trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function-expected.txt        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+JSRegress/destructuring-parameters-overridden-by-function
+
+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
+
+
+PASS no exception thrown
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsjsregressdestructuringparametersoverriddenbyfunctionhtmlfromrev186245trunkLayoutTestsjsregressdeconstructingparametersoverriddenbyfunctionhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function.html (from rev 186245, trunk/LayoutTests/js/regress/deconstructing-parameters-overridden-by-function.html) (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function.html                                (rev 0)
+++ trunk/LayoutTests/js/regress/destructuring-parameters-overridden-by-function.html        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script src=&quot;../../resources/regress-pre.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;script-tests/destructuring-parameters-overridden-by-function.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/regress-post.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsjsregressscripttestsdeconstructingparametersoverriddenbyfunctionjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,11 +0,0 @@
</span><del>-function f() { return 40; }
-function test({arg}) {
-    function arg() { return 41; }
-    return arg;
-}
-noInline(test);
-
-for (var i = 0; i &lt; 1000; i++) {
-    if (test({arg: f})() !== 41)
-        throw new Error(&quot;bad value&quot;);
-}
</del></span></pre></div>
<a id="trunkLayoutTestsjsregressscripttestsdestructuringparametersoverriddenbyfunctionjsfromrev186245trunkLayoutTestsjsregressscripttestsdeconstructingparametersoverriddenbyfunctionjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/js/regress/script-tests/destructuring-parameters-overridden-by-function.js (from rev 186245, trunk/LayoutTests/js/regress/script-tests/deconstructing-parameters-overridden-by-function.js) (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/regress/script-tests/destructuring-parameters-overridden-by-function.js                                (rev 0)
+++ trunk/LayoutTests/js/regress/script-tests/destructuring-parameters-overridden-by-function.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+function f() { return 40; }
+function test({arg}) {
+    function arg() { return 41; }
+    return arg;
+}
+noInline(test);
+
+for (var i = 0; i &lt; 1000; i++) {
+    if (test({arg: f})() !== 41)
+        throw new Error(&quot;bad value&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsjsscripttestsdeconstructingparametersshouldbelocalsjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/script-tests/deconstructing-parameters-should-be-locals.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,35 +0,0 @@
</span><del>-description(&quot;This tests to ensure that ddeconstructing parameters behave like regular locals&quot;)
-
-var value=&quot;outer&quot;
-function readDeconstructedParameter([value]) {
-    return value;
-}
-
-function overwriteDeconstructedParameter([value]) {
-        value = &quot;inner&quot;
-}
-
-function readCapturedDeconstructedParameter([value]) {
-        return (function () {
-            return value;
-        })()
-}
-
-function overwriteCapturedDeconstructedParameter([value]) {
-        (function () {
-            value = &quot;innermost&quot;;
-        })()
-        return value
-}
-
-shouldBe(&quot;readDeconstructedParameter(['inner'])&quot;, &quot;'inner'&quot;)
-overwriteDeconstructedParameter(['inner'])
-
-shouldBe(&quot;overwriteDeconstructedParameter(['unused']); value;&quot;, &quot;'outer'&quot;)
-
-shouldBe(&quot;readCapturedDeconstructedParameter(['inner'])&quot;, &quot;'inner'&quot;)
-overwriteDeconstructedParameter(['inner'])
-
-shouldBe(&quot;overwriteCapturedDeconstructedParameter(['unused']);&quot;, &quot;'innermost'&quot;)
-shouldBe(&quot;value&quot;, &quot;'outer'&quot;)
-
</del></span></pre></div>
<a id="trunkLayoutTestsjsscripttestsdestructuringassignmentjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/script-tests/destructuring-assignment.js (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/script-tests/destructuring-assignment.js        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/LayoutTests/js/script-tests/destructuring-assignment.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -35,20 +35,20 @@
</span><span class="cx"> shouldBe(&quot;a+b&quot;, &quot;'1122'&quot;)
</span><span class="cx"> var [b,a] = [a,b];
</span><span class="cx"> shouldBe(&quot;a+b&quot;, &quot;'2211'&quot;)
</span><del>-function testDeconstructArgs() {
</del><ins>+function testDestructuredArgs() {
</ins><span class="cx">     var [a,b] = arguments;
</span><span class="cx">     return a+b;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-function testDeconstructArgLength() {
</del><ins>+function testDestructuredArgLength() {
</ins><span class="cx">     var {length} = arguments;
</span><span class="cx">     return length;
</span><span class="cx"> }
</span><del>-shouldBe(&quot;testDeconstructArgs('1', '2')&quot;, &quot;'12'&quot;);
-shouldBe(&quot;testDeconstructArgLength('1', '2')&quot;, &quot;2&quot;);
</del><ins>+shouldBe(&quot;testDestructuredArgs('1', '2')&quot;, &quot;'12'&quot;);
+shouldBe(&quot;testDestructuredArgLength('1', '2')&quot;, &quot;2&quot;);
</ins><span class="cx"> var text = '3';
</span><span class="cx"> Object.prototype.__defineGetter__(1, function(){ var r = text; text = &quot;fail&quot;; return r; })
</span><del>-shouldBe(&quot;testDeconstructArgs('2')&quot;, &quot;'2undefined'&quot;);
</del><ins>+shouldBe(&quot;testDestructuredArgs('2')&quot;, &quot;'2undefined'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> var [a,b] = [1,2], [c,d] = [3,4]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsjsscripttestsdestructuringparametersshouldbelocalsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/js/script-tests/destructuring-parameters-should-be-locals.js (0 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/script-tests/destructuring-parameters-should-be-locals.js                                (rev 0)
+++ trunk/LayoutTests/js/script-tests/destructuring-parameters-should-be-locals.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+description(&quot;This tests to ensure that destructuring parameters behave like regular locals&quot;)
+
+var value=&quot;outer&quot;
+function readDestructuredParameter([value]) {
+    return value;
+}
+
+function overwriteDestructuredParameter([value]) {
+        value = &quot;inner&quot;
+}
+
+function readCapturedDestructuredParameter([value]) {
+        return (function () {
+            return value;
+        })()
+}
+
+function overwriteCapturedDestructuredParameter([value]) {
+        (function () {
+            value = &quot;innermost&quot;;
+        })()
+        return value
+}
+
+shouldBe(&quot;readDestructuredParameter(['inner'])&quot;, &quot;'inner'&quot;)
+overwriteDestructuredParameter(['inner'])
+
+shouldBe(&quot;overwriteDestructuredParameter(['unused']); value;&quot;, &quot;'outer'&quot;)
+
+shouldBe(&quot;readCapturedDestructuredParameter(['inner'])&quot;, &quot;'inner'&quot;)
+overwriteDestructuredParameter(['inner'])
+
+shouldBe(&quot;overwriteCapturedDestructuredParameter(['unused']);&quot;, &quot;'innermost'&quot;)
+shouldBe(&quot;value&quot;, &quot;'outer'&quot;)
+
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -1,3 +1,115 @@
</span><ins>+2015-07-02  Saam barati  &lt;saambarati1@gmail.com&gt;
+
+        Rename &quot;Deconstruction&quot; to &quot;Destructuring&quot; throughout JSC
+        https://bugs.webkit.org/show_bug.cgi?id=146100
+
+        Reviewed by Mark Lam.
+
+        It is good to use the same naming conventions as the ES6 
+        spec because it is the de facto way of speaking about these 
+        language features. This also has the benefit of improving JSC's
+        hackability because it improves code readability for newcomers 
+        to JSC or newcomers to this part of the code base.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::generate):
+        (JSC::BytecodeGenerator::BytecodeGenerator):
+        (JSC::BytecodeGenerator::initializeNextParameter):
+        (JSC::BytecodeGenerator::visibleNameForParameter):
+        * bytecompiler/BytecodeGenerator.h:
+        (JSC::BytecodeGenerator::registerFor):
+        * bytecompiler/NodesCodegen.cpp:
+        (JSC::ForInNode::tryGetBoundLocal):
+        (JSC::ForInNode::emitLoopHeader):
+        (JSC::ForOfNode::emitBytecode):
+        (JSC::ClassExprNode::emitBytecode):
+        (JSC::DestructuringAssignmentNode::emitBytecode):
+        (JSC::DestructuringPatternNode::~DestructuringPatternNode):
+        (JSC::ArrayPatternNode::collectBoundIdentifiers):
+        (JSC::DeconstructingAssignmentNode::emitBytecode): Deleted.
+        (JSC::DeconstructionPatternNode::~DeconstructionPatternNode): Deleted.
+        * parser/ASTBuilder.h:
+        (JSC::ASTBuilder::createElementList):
+        (JSC::ASTBuilder::createFormalParameterList):
+        (JSC::ASTBuilder::createClause):
+        (JSC::ASTBuilder::createClauseList):
+        (JSC::ASTBuilder::createForInLoop):
+        (JSC::ASTBuilder::createForOfLoop):
+        (JSC::ASTBuilder::isBindingNode):
+        (JSC::ASTBuilder::isResolve):
+        (JSC::ASTBuilder::createDestructuringAssignment):
+        (JSC::ASTBuilder::createArrayPattern):
+        (JSC::ASTBuilder::appendArrayPatternSkipEntry):
+        (JSC::ASTBuilder::appendArrayPatternEntry):
+        (JSC::ASTBuilder::appendArrayPatternRestEntry):
+        (JSC::ASTBuilder::createObjectPattern):
+        (JSC::ASTBuilder::appendObjectPatternEntry):
+        (JSC::ASTBuilder::createDeconstructingAssignment): Deleted.
+        * parser/NodeConstructors.h:
+        (JSC::TryNode::TryNode):
+        (JSC::ParameterNode::ParameterNode):
+        (JSC::ForOfNode::ForOfNode):
+        (JSC::DestructuringPatternNode::DestructuringPatternNode):
+        (JSC::ArrayPatternNode::ArrayPatternNode):
+        (JSC::ArrayPatternNode::create):
+        (JSC::ObjectPatternNode::ObjectPatternNode):
+        (JSC::BindingNode::create):
+        (JSC::BindingNode::BindingNode):
+        (JSC::DestructuringAssignmentNode::DestructuringAssignmentNode):
+        (JSC::DeconstructionPatternNode::DeconstructionPatternNode): Deleted.
+        (JSC::DeconstructingAssignmentNode::DeconstructingAssignmentNode): Deleted.
+        * parser/Nodes.cpp:
+        (JSC::FunctionParameters::create):
+        * parser/Nodes.h:
+        (JSC::ExpressionNode::isResolveNode):
+        (JSC::ExpressionNode::isBracketAccessorNode):
+        (JSC::ExpressionNode::isDotAccessorNode):
+        (JSC::ExpressionNode::isDestructuringNode):
+        (JSC::ExpressionNode::isFuncExprNode):
+        (JSC::ExpressionNode::isCommaNode):
+        (JSC::ExpressionNode::isSimpleArray):
+        (JSC::ParameterNode::pattern):
+        (JSC::ParameterNode::nextParam):
+        (JSC::FunctionParameters::size):
+        (JSC::FunctionParameters::at):
+        (JSC::FunctionParameters::patterns):
+        (JSC::DestructuringPatternNode::isBindingNode):
+        (JSC::DestructuringPatternNode::emitDirectBinding):
+        (JSC::ArrayPatternNode::appendIndex):
+        (JSC::ObjectPatternNode::appendEntry):
+        (JSC::BindingNode::boundProperty):
+        (JSC::DestructuringAssignmentNode::bindings):
+        (JSC::ExpressionNode::isDeconstructionNode): Deleted.
+        (JSC::DeconstructionPatternNode::isBindingNode): Deleted.
+        (JSC::DeconstructionPatternNode::emitDirectBinding): Deleted.
+        (JSC::DeconstructingAssignmentNode::bindings): Deleted.
+        * parser/Parser.cpp:
+        (JSC::Parser&lt;LexerType&gt;::parseVarDeclaration):
+        (JSC::Parser&lt;LexerType&gt;::parseWhileStatement):
+        (JSC::Parser&lt;LexerType&gt;::parseVarDeclarationList):
+        (JSC::Parser&lt;LexerType&gt;::createBindingPattern):
+        (JSC::Parser&lt;LexerType&gt;::tryParseDestructuringPatternExpression):
+        (JSC::Parser&lt;LexerType&gt;::parseDestructuringPattern):
+        (JSC::Parser&lt;LexerType&gt;::parseDefaultValueForDestructuringPattern):
+        (JSC::Parser&lt;LexerType&gt;::parseForStatement):
+        (JSC::Parser&lt;LexerType&gt;::parseFormalParameters):
+        (JSC::Parser&lt;LexerType&gt;::parseFunctionParameters):
+        (JSC::Parser&lt;LexerType&gt;::parseAssignmentExpression):
+        (JSC::Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression): Deleted.
+        (JSC::Parser&lt;LexerType&gt;::parseDeconstructionPattern): Deleted.
+        (JSC::Parser&lt;LexerType&gt;::parseDefaultValueForDeconstructionPattern): Deleted.
+        * parser/Parser.h:
+        (JSC::isEvalNode):
+        * parser/SyntaxChecker.h:
+        (JSC::SyntaxChecker::createPropertyList):
+        (JSC::SyntaxChecker::createElementList):
+        (JSC::SyntaxChecker::createFormalParameterList):
+        (JSC::SyntaxChecker::createClause):
+        (JSC::SyntaxChecker::createClauseList):
+        (JSC::SyntaxChecker::operatorStackPop):
+        * tests/stress/reserved-word-with-escape.js:
+        * tests/stress/rest-elements.js:
+
</ins><span class="cx"> 2015-07-02  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Build fix for Win EWS bot.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -71,8 +71,8 @@
</span><span class="cx">     if (m_needToInitializeArguments)
</span><span class="cx">         initializeVariable(variable(propertyNames().arguments), m_argumentsRegister);
</span><span class="cx"> 
</span><del>-    for (size_t i = 0; i &lt; m_deconstructedParameters.size(); i++) {
-        auto&amp; entry = m_deconstructedParameters[i];
</del><ins>+    for (size_t i = 0; i &lt; m_destructuringParameters.size(); i++) {
+        auto&amp; entry = m_destructuringParameters[i];
</ins><span class="cx">         entry.second-&gt;bindValue(*this, entry.first.get());
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -257,14 +257,14 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // Make sure the code block knows about all of our parameters, and make sure that parameters
</span><del>-    // needing deconstruction are noted.
</del><ins>+    // needing destructuring are noted.
</ins><span class="cx">     m_parameters.grow(parameters.size() + 1); // reserve space for &quot;this&quot;
</span><span class="cx">     m_thisRegister.setIndex(initializeNextParameter()-&gt;index()); // this
</span><span class="cx">     for (unsigned i = 0; i &lt; parameters.size(); ++i) {
</span><span class="cx">         auto pattern = parameters.at(i);
</span><span class="cx">         RegisterID* reg = initializeNextParameter();
</span><span class="cx">         if (!pattern-&gt;isBindingNode())
</span><del>-            m_deconstructedParameters.append(std::make_pair(reg, pattern));
</del><ins>+            m_destructuringParameters.append(std::make_pair(reg, pattern));
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // Figure out some interesting facts about our arguments.
</span><span class="lines">@@ -419,7 +419,7 @@
</span><span class="cx">     // But some arguments are already initialized by default, since if they aren't captured and we
</span><span class="cx">     // don't have &quot;arguments&quot; then we just point the symbol table at the stack slot of those
</span><span class="cx">     // arguments. We end up initializing the rest of the arguments that have an uncomplicated
</span><del>-    // binding (i.e. don't involve deconstruction) above when figuring out how to lay them out,
</del><ins>+    // binding (i.e. don't involve destructuring) above when figuring out how to lay them out,
</ins><span class="cx">     // because that's just the simplest thing. This means that when we initialize them, we have to
</span><span class="cx">     // watch out for the things that override arguments (namely, functions).
</span><span class="cx">     //
</span><span class="lines">@@ -455,10 +455,10 @@
</span><span class="cx">     // This is our final act of weirdness. &quot;arguments&quot; is overridden by everything except the
</span><span class="cx">     // callee. We add it to the symbol table if it's not already there and it's not an argument.
</span><span class="cx">     if (needsArguments) {
</span><del>-        // If &quot;arguments&quot; is overridden by a function or deconstructed parameter name, then it's
</del><ins>+        // If &quot;arguments&quot; is overridden by a function or destructuring parameter name, then it's
</ins><span class="cx">         // OK for us to call createVariable() because it won't change anything. It's also OK for
</span><span class="cx">         // us to them tell BytecodeGenerator::generate() to write to it because it will do so
</span><del>-        // before it initializes functions and deconstructed parameters. But if &quot;arguments&quot; is
</del><ins>+        // before it initializes functions and destructuring parameters. But if &quot;arguments&quot; is
</ins><span class="cx">         // overridden by a &quot;simple&quot; function parameter, then we have to bail: createVariable()
</span><span class="cx">         // would assert and BytecodeGenerator::generate() would write the &quot;arguments&quot; after the
</span><span class="cx">         // argument value had already been properly initialized.
</span><span class="lines">@@ -545,7 +545,7 @@
</span><span class="cx">     return &amp;parameter;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-UniquedStringImpl* BytecodeGenerator::visibleNameForParameter(DeconstructionPatternNode* pattern)
</del><ins>+UniquedStringImpl* BytecodeGenerator::visibleNameForParameter(DestructuringPatternNode* pattern)
</ins><span class="cx"> {
</span><span class="cx">     if (pattern-&gt;isBindingNode()) {
</span><span class="cx">         const Identifier&amp; ident = static_cast&lt;const BindingNode*&gt;(pattern)-&gt;boundProperty();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -653,7 +653,7 @@
</span><span class="cx"> 
</span><span class="cx">         // Initializes the stack form the parameter; does nothing for the symbol table.
</span><span class="cx">         RegisterID* initializeNextParameter();
</span><del>-        UniquedStringImpl* visibleNameForParameter(DeconstructionPatternNode*);
</del><ins>+        UniquedStringImpl* visibleNameForParameter(DestructuringPatternNode*);
</ins><span class="cx">         
</span><span class="cx">         RegisterID&amp; registerFor(VirtualRegister reg)
</span><span class="cx">         {
</span><span class="lines">@@ -756,7 +756,7 @@
</span><span class="cx">         Vector&lt;SwitchInfo&gt; m_switchContextStack;
</span><span class="cx">         Vector&lt;std::unique_ptr&lt;ForInContext&gt;&gt; m_forInContextStack;
</span><span class="cx">         Vector&lt;TryContext&gt; m_tryContextStack;
</span><del>-        Vector&lt;std::pair&lt;RefPtr&lt;RegisterID&gt;, const DeconstructionPatternNode*&gt;&gt; m_deconstructedParameters;
</del><ins>+        Vector&lt;std::pair&lt;RefPtr&lt;RegisterID&gt;, const DestructuringPatternNode*&gt;&gt; m_destructuringParameters;
</ins><span class="cx">         enum FunctionVariableType : uint8_t { NormalFunctionVariable, GlobalFunctionVariable };
</span><span class="cx">         Vector&lt;std::pair&lt;FunctionBodyNode*, FunctionVariableType&gt;&gt; m_functionsToInitialize;
</span><span class="cx">         bool m_needToInitializeArguments { false };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -2256,8 +2256,8 @@
</span><span class="cx">         return generator.variable(ident).local();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_lexpr-&gt;isDeconstructionNode()) {
-        DeconstructingAssignmentNode* assignNode = static_cast&lt;DeconstructingAssignmentNode*&gt;(m_lexpr);
</del><ins>+    if (m_lexpr-&gt;isDestructuringNode()) {
+        DestructuringAssignmentNode* assignNode = static_cast&lt;DestructuringAssignmentNode*&gt;(m_lexpr);
</ins><span class="cx">         auto binding = assignNode-&gt;bindings();
</span><span class="cx">         if (!binding-&gt;isBindingNode())
</span><span class="cx">             return nullptr;
</span><span class="lines">@@ -2318,8 +2318,8 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_lexpr-&gt;isDeconstructionNode()) {
-        DeconstructingAssignmentNode* assignNode = static_cast&lt;DeconstructingAssignmentNode*&gt;(m_lexpr);
</del><ins>+    if (m_lexpr-&gt;isDestructuringNode()) {
+        DestructuringAssignmentNode* assignNode = static_cast&lt;DestructuringAssignmentNode*&gt;(m_lexpr);
</ins><span class="cx">         auto binding = assignNode-&gt;bindings();
</span><span class="cx">         if (!binding-&gt;isBindingNode()) {
</span><span class="cx">             assignNode-&gt;bindings()-&gt;bindValue(generator, propertyName);
</span><span class="lines">@@ -2536,8 +2536,8 @@
</span><span class="cx">                 generator.emitTypeProfilerExpressionInfo(assignNode-&gt;divotStart(), assignNode-&gt;divotEnd());
</span><span class="cx">             }
</span><span class="cx">         } else {
</span><del>-            ASSERT(m_lexpr-&gt;isDeconstructionNode());
-            DeconstructingAssignmentNode* assignNode = static_cast&lt;DeconstructingAssignmentNode*&gt;(m_lexpr);
</del><ins>+            ASSERT(m_lexpr-&gt;isDestructuringNode());
+            DestructuringAssignmentNode* assignNode = static_cast&lt;DestructuringAssignmentNode*&gt;(m_lexpr);
</ins><span class="cx">             assignNode-&gt;bindings()-&gt;bindValue(generator, value);
</span><span class="cx">         }
</span><span class="cx">         generator.emitProfileControlFlow(m_statement-&gt;startOffset());
</span><span class="lines">@@ -3105,8 +3105,8 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">     
</span><del>-// ------------------------------ DeconstructingAssignmentNode -----------------
-RegisterID* DeconstructingAssignmentNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID* dst)
</del><ins>+// ------------------------------ DestructuringAssignmentNode -----------------
+RegisterID* DestructuringAssignmentNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID* dst)
</ins><span class="cx"> {
</span><span class="cx">     if (RegisterID* result = m_bindings-&gt;emitDirectBinding(generator, dst, m_initializer))
</span><span class="cx">         return result;
</span><span class="lines">@@ -3116,7 +3116,7 @@
</span><span class="cx">     return generator.moveToDestinationIfNeeded(dst, initializer.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-DeconstructionPatternNode::~DeconstructionPatternNode()
</del><ins>+DestructuringPatternNode::~DestructuringPatternNode()
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3277,7 +3277,7 @@
</span><span class="cx"> void ArrayPatternNode::collectBoundIdentifiers(Vector&lt;Identifier&gt;&amp; identifiers) const
</span><span class="cx"> {
</span><span class="cx">     for (size_t i = 0; i &lt; m_targetPatterns.size(); i++) {
</span><del>-        if (DeconstructionPatternNode* node = m_targetPatterns[i].pattern.get())
</del><ins>+        if (DestructuringPatternNode* node = m_targetPatterns[i].pattern.get())
</ins><span class="cx">             node-&gt;collectBoundIdentifiers(identifiers);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserASTBuilderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/ASTBuilder.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/ASTBuilder.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/ASTBuilder.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">     typedef CaseClauseNode* Clause;
</span><span class="cx">     typedef ConstDeclNode* ConstDeclList;
</span><span class="cx">     typedef std::pair&lt;ExpressionNode*, BinaryOpInfo&gt; BinaryOperand;
</span><del>-    typedef RefPtr&lt;DeconstructionPatternNode&gt; DeconstructionPattern;
</del><ins>+    typedef RefPtr&lt;DestructuringPatternNode&gt; DestructuringPattern;
</ins><span class="cx">     typedef RefPtr&lt;ArrayPatternNode&gt; ArrayPattern;
</span><span class="cx">     typedef RefPtr&lt;ObjectPatternNode&gt; ObjectPattern;
</span><span class="cx">     typedef RefPtr&lt;BindingNode&gt; BindingPattern;
</span><span class="lines">@@ -420,8 +420,8 @@
</span><span class="cx">     ElementNode* createElementList(int elisions, ExpressionNode* expr) { return new (m_parserArena) ElementNode(elisions, expr); }
</span><span class="cx">     ElementNode* createElementList(ElementNode* elems, int elisions, ExpressionNode* expr) { return new (m_parserArena) ElementNode(elems, elisions, expr); }
</span><span class="cx"> 
</span><del>-    ParameterNode* createFormalParameterList(DeconstructionPattern pattern) { return new (m_parserArena) ParameterNode(pattern); }
-    ParameterNode* createFormalParameterList(ParameterNode* list, DeconstructionPattern pattern) { return new (m_parserArena) ParameterNode(list, pattern); }
</del><ins>+    ParameterNode* createFormalParameterList(DestructuringPattern pattern) { return new (m_parserArena) ParameterNode(pattern); }
+    ParameterNode* createFormalParameterList(ParameterNode* list, DestructuringPattern pattern) { return new (m_parserArena) ParameterNode(list, pattern); }
</ins><span class="cx"> 
</span><span class="cx">     CaseClauseNode* createClause(ExpressionNode* expr, JSC::SourceElements* statements) { return new (m_parserArena) CaseClauseNode(expr, statements); }
</span><span class="cx">     ClauseListNode* createClauseList(CaseClauseNode* clause) { return new (m_parserArena) ClauseListNode(clause); }
</span><span class="lines">@@ -486,9 +486,9 @@
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    StatementNode* createForInLoop(const JSTokenLocation&amp; location, PassRefPtr&lt;DeconstructionPatternNode&gt; pattern, ExpressionNode* iter, StatementNode* statements, const JSTextPosition&amp; eStart, const JSTextPosition&amp; eDivot, const JSTextPosition&amp; eEnd, int start, int end)
</del><ins>+    StatementNode* createForInLoop(const JSTokenLocation&amp; location, PassRefPtr&lt;DestructuringPatternNode&gt; pattern, ExpressionNode* iter, StatementNode* statements, const JSTextPosition&amp; eStart, const JSTextPosition&amp; eDivot, const JSTextPosition&amp; eEnd, int start, int end)
</ins><span class="cx">     {
</span><del>-        auto lexpr = new (m_parserArena) DeconstructingAssignmentNode(location, pattern.get(), 0);
</del><ins>+        auto lexpr = new (m_parserArena) DestructuringAssignmentNode(location, pattern.get(), 0);
</ins><span class="cx">         return createForInLoop(location, lexpr, iter, statements, eStart, eDivot, eEnd, start, end);
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -500,13 +500,13 @@
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    StatementNode* createForOfLoop(const JSTokenLocation&amp; location, PassRefPtr&lt;DeconstructionPatternNode&gt; pattern, ExpressionNode* iter, StatementNode* statements, const JSTextPosition&amp; eStart, const JSTextPosition&amp; eDivot, const JSTextPosition&amp; eEnd, int start, int end)
</del><ins>+    StatementNode* createForOfLoop(const JSTokenLocation&amp; location, PassRefPtr&lt;DestructuringPatternNode&gt; pattern, ExpressionNode* iter, StatementNode* statements, const JSTextPosition&amp; eStart, const JSTextPosition&amp; eDivot, const JSTextPosition&amp; eEnd, int start, int end)
</ins><span class="cx">     {
</span><del>-        auto lexpr = new (m_parserArena) DeconstructingAssignmentNode(location, pattern.get(), 0);
</del><ins>+        auto lexpr = new (m_parserArena) DestructuringAssignmentNode(location, pattern.get(), 0);
</ins><span class="cx">         return createForOfLoop(location, lexpr, iter, statements, eStart, eDivot, eEnd, start, end);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool isBindingNode(const DeconstructionPattern&amp; pattern)
</del><ins>+    bool isBindingNode(const DestructuringPattern&amp; pattern)
</ins><span class="cx">     {
</span><span class="cx">         return pattern-&gt;isBindingNode();
</span><span class="cx">     }
</span><span class="lines">@@ -738,9 +738,9 @@
</span><span class="cx"> 
</span><span class="cx">     bool isResolve(ExpressionNode* expr) const { return expr-&gt;isResolveNode(); }
</span><span class="cx"> 
</span><del>-    ExpressionNode* createDeconstructingAssignment(const JSTokenLocation&amp; location, PassRefPtr&lt;DeconstructionPatternNode&gt; pattern, ExpressionNode* initializer)
</del><ins>+    ExpressionNode* createDestructuringAssignment(const JSTokenLocation&amp; location, PassRefPtr&lt;DestructuringPatternNode&gt; pattern, ExpressionNode* initializer)
</ins><span class="cx">     {
</span><del>-        return new (m_parserArena) DeconstructingAssignmentNode(location, pattern.get(), initializer);
</del><ins>+        return new (m_parserArena) DestructuringAssignmentNode(location, pattern.get(), initializer);
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     ArrayPattern createArrayPattern(const JSTokenLocation&amp;)
</span><span class="lines">@@ -753,12 +753,12 @@
</span><span class="cx">         node-&gt;appendIndex(ArrayPatternNode::BindingType::Elision, location, 0, nullptr);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void appendArrayPatternEntry(ArrayPattern node, const JSTokenLocation&amp; location, DeconstructionPattern pattern, ExpressionNode* defaultValue)
</del><ins>+    void appendArrayPatternEntry(ArrayPattern node, const JSTokenLocation&amp; location, DestructuringPattern pattern, ExpressionNode* defaultValue)
</ins><span class="cx">     {
</span><span class="cx">         node-&gt;appendIndex(ArrayPatternNode::BindingType::Element, location, pattern.get(), defaultValue);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void appendArrayPatternRestEntry(ArrayPattern node, const JSTokenLocation&amp; location, DeconstructionPattern pattern)
</del><ins>+    void appendArrayPatternRestEntry(ArrayPattern node, const JSTokenLocation&amp; location, DestructuringPattern pattern)
</ins><span class="cx">     {
</span><span class="cx">         node-&gt;appendIndex(ArrayPatternNode::BindingType::RestElement, location, pattern.get(), nullptr);
</span><span class="cx">     }
</span><span class="lines">@@ -773,7 +773,7 @@
</span><span class="cx">         return ObjectPatternNode::create();
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    void appendObjectPatternEntry(ObjectPattern node, const JSTokenLocation&amp; location, bool wasString, const Identifier&amp; identifier, DeconstructionPattern pattern, ExpressionNode* defaultValue)
</del><ins>+    void appendObjectPatternEntry(ObjectPattern node, const JSTokenLocation&amp; location, bool wasString, const Identifier&amp; identifier, DestructuringPattern pattern, ExpressionNode* defaultValue)
</ins><span class="cx">     {
</span><span class="cx">         node-&gt;appendEntry(location, identifier, wasString, pattern.get(), defaultValue);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodeConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/NodeConstructors.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/NodeConstructors.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/NodeConstructors.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -820,20 +820,20 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    inline ParameterNode::ParameterNode(PassRefPtr&lt;DeconstructionPatternNode&gt; pattern)
</del><ins>+    inline ParameterNode::ParameterNode(PassRefPtr&lt;DestructuringPatternNode&gt; pattern)
</ins><span class="cx">         : m_pattern(pattern)
</span><span class="cx">         , m_next(0)
</span><span class="cx">     {
</span><span class="cx">         ASSERT(m_pattern);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    inline ParameterNode::ParameterNode(ParameterNode* l, PassRefPtr&lt;DeconstructionPatternNode&gt; pattern)
</del><ins>+    inline ParameterNode::ParameterNode(ParameterNode* previous, PassRefPtr&lt;DestructuringPatternNode&gt; pattern)
</ins><span class="cx">         : m_pattern(pattern)
</span><span class="cx">         , m_next(0)
</span><span class="cx">     {
</span><del>-        l-&gt;m_next = this;
</del><ins>+        previous-&gt;m_next = this;
</ins><span class="cx">         ASSERT(m_pattern);
</span><del>-        ASSERT(l-&gt;m_pattern);
</del><ins>+        ASSERT(previous-&gt;m_pattern);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     inline FuncExprNode::FuncExprNode(const JSTokenLocation&amp; location, const Identifier&amp; ident, FunctionBodyNode* body, const SourceCode&amp; source, ParameterNode* parameter)
</span><span class="lines">@@ -934,12 +934,12 @@
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    inline DeconstructionPatternNode::DeconstructionPatternNode()
</del><ins>+    inline DestructuringPatternNode::DestructuringPatternNode()
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     inline ArrayPatternNode::ArrayPatternNode()
</span><del>-        : DeconstructionPatternNode()
</del><ins>+        : DestructuringPatternNode()
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -949,7 +949,7 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     inline ObjectPatternNode::ObjectPatternNode()
</span><del>-        : DeconstructionPatternNode()
</del><ins>+        : DestructuringPatternNode()
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -964,14 +964,14 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     inline BindingNode::BindingNode(const Identifier&amp; boundProperty, const JSTextPosition&amp; start, const JSTextPosition&amp; end)
</span><del>-        : DeconstructionPatternNode()
</del><ins>+        : DestructuringPatternNode()
</ins><span class="cx">         , m_divotStart(start)
</span><span class="cx">         , m_divotEnd(end)
</span><span class="cx">         , m_boundProperty(boundProperty)
</span><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    inline DeconstructingAssignmentNode::DeconstructingAssignmentNode(const JSTokenLocation&amp; location, PassRefPtr&lt;DeconstructionPatternNode&gt; bindings, ExpressionNode* initializer)
</del><ins>+    inline DestructuringAssignmentNode::DestructuringAssignmentNode(const JSTokenLocation&amp; location, PassRefPtr&lt;DestructuringPatternNode&gt; bindings, ExpressionNode* initializer)
</ins><span class="cx">         : ExpressionNode(location)
</span><span class="cx">         , m_bindings(bindings)
</span><span class="cx">         , m_initializer(initializer)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.cpp (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">     for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter-&gt;nextParam())
</span><span class="cx">         ++parameterCount;
</span><span class="cx"> 
</span><del>-    size_t objectSize = sizeof(FunctionParameters) - sizeof(void*) + sizeof(DeconstructionPatternNode*) * parameterCount;
</del><ins>+    size_t objectSize = sizeof(FunctionParameters) - sizeof(void*) + sizeof(DestructuringPatternNode*) * parameterCount;
</ins><span class="cx">     void* slot = fastMalloc(objectSize);
</span><span class="cx">     return adoptRef(*new (slot) FunctionParameters(firstParameter, parameterCount));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/Nodes.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">         virtual bool isResolveNode() const { return false; }
</span><span class="cx">         virtual bool isBracketAccessorNode() const { return false; }
</span><span class="cx">         virtual bool isDotAccessorNode() const { return false; }
</span><del>-        virtual bool isDeconstructionNode() const { return false; }
</del><ins>+        virtual bool isDestructuringNode() const { return false; }
</ins><span class="cx">         virtual bool isFuncExprNode() const { return false; }
</span><span class="cx">         virtual bool isCommaNode() const { return false; }
</span><span class="cx">         virtual bool isSimpleArray() const { return false; }
</span><span class="lines">@@ -1399,7 +1399,7 @@
</span><span class="cx">         StatementNode* m_statement;
</span><span class="cx">     };
</span><span class="cx">     
</span><del>-    class DeconstructionPatternNode;
</del><ins>+    class DestructuringPatternNode;
</ins><span class="cx">     
</span><span class="cx">     class EnumerationNode : public StatementNode, public ThrowableExpressionData {
</span><span class="cx">     public:
</span><span class="lines">@@ -1518,14 +1518,14 @@
</span><span class="cx"> 
</span><span class="cx">     class ParameterNode : public ParserArenaDeletable {
</span><span class="cx">     public:
</span><del>-        ParameterNode(PassRefPtr&lt;DeconstructionPatternNode&gt;);
-        ParameterNode(ParameterNode*, PassRefPtr&lt;DeconstructionPatternNode&gt;);
</del><ins>+        ParameterNode(PassRefPtr&lt;DestructuringPatternNode&gt;);
+        ParameterNode(ParameterNode*, PassRefPtr&lt;DestructuringPatternNode&gt;);
</ins><span class="cx"> 
</span><del>-        DeconstructionPatternNode* pattern() const { return m_pattern.get(); }
</del><ins>+        DestructuringPatternNode* pattern() const { return m_pattern.get(); }
</ins><span class="cx">         ParameterNode* nextParam() const { return m_next; }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        RefPtr&lt;DeconstructionPatternNode&gt; m_pattern;
</del><ins>+        RefPtr&lt;DestructuringPatternNode&gt; m_pattern;
</ins><span class="cx">         ParameterNode* m_next;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -1638,15 +1638,15 @@
</span><span class="cx">         ~FunctionParameters();
</span><span class="cx"> 
</span><span class="cx">         unsigned size() const { return m_size; }
</span><del>-        DeconstructionPatternNode* at(unsigned index) { ASSERT(index &lt; m_size); return patterns()[index]; }
</del><ins>+        DestructuringPatternNode* at(unsigned index) { ASSERT(index &lt; m_size); return patterns()[index]; }
</ins><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         FunctionParameters(ParameterNode*, unsigned size);
</span><span class="cx"> 
</span><del>-        DeconstructionPatternNode** patterns() { return &amp;m_storage; }
</del><ins>+        DestructuringPatternNode** patterns() { return &amp;m_storage; }
</ins><span class="cx"> 
</span><span class="cx">         unsigned m_size;
</span><del>-        DeconstructionPatternNode* m_storage;
</del><ins>+        DestructuringPatternNode* m_storage;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     class FunctionBodyNode final : public StatementNode, public ParserArenaDeletable {
</span><span class="lines">@@ -1762,8 +1762,8 @@
</span><span class="cx">     };
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    class DeconstructionPatternNode : public RefCounted&lt;DeconstructionPatternNode&gt; {
-        WTF_MAKE_NONCOPYABLE(DeconstructionPatternNode);
</del><ins>+    class DestructuringPatternNode : public RefCounted&lt;DestructuringPatternNode&gt; {
+        WTF_MAKE_NONCOPYABLE(DestructuringPatternNode);
</ins><span class="cx">         WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> 
</span><span class="cx">     public:
</span><span class="lines">@@ -1774,13 +1774,13 @@
</span><span class="cx">         virtual bool isBindingNode() const { return false; }
</span><span class="cx">         virtual RegisterID* emitDirectBinding(BytecodeGenerator&amp;, RegisterID*, ExpressionNode*) { return 0; }
</span><span class="cx">         
</span><del>-        virtual ~DeconstructionPatternNode() = 0;
</del><ins>+        virtual ~DestructuringPatternNode() = 0;
</ins><span class="cx">         
</span><span class="cx">     protected:
</span><del>-        DeconstructionPatternNode();
</del><ins>+        DestructuringPatternNode();
</ins><span class="cx">     };
</span><span class="cx"> 
</span><del>-    class ArrayPatternNode : public DeconstructionPatternNode, public ThrowableExpressionData {
</del><ins>+    class ArrayPatternNode : public DestructuringPatternNode, public ThrowableExpressionData {
</ins><span class="cx">     public:
</span><span class="cx">         enum class BindingType {
</span><span class="cx">             Elision,
</span><span class="lines">@@ -1789,7 +1789,7 @@
</span><span class="cx">         };
</span><span class="cx"> 
</span><span class="cx">         static Ref&lt;ArrayPatternNode&gt; create();
</span><del>-        void appendIndex(BindingType bindingType, const JSTokenLocation&amp;, DeconstructionPatternNode* node, ExpressionNode* defaultValue)
</del><ins>+        void appendIndex(BindingType bindingType, const JSTokenLocation&amp;, DestructuringPatternNode* node, ExpressionNode* defaultValue)
</ins><span class="cx">         {
</span><span class="cx">             m_targetPatterns.append({ bindingType, node, defaultValue });
</span><span class="cx">         }
</span><span class="lines">@@ -1797,7 +1797,7 @@
</span><span class="cx">     private:
</span><span class="cx">         struct Entry {
</span><span class="cx">             BindingType bindingType;
</span><del>-            RefPtr&lt;DeconstructionPatternNode&gt; pattern;
</del><ins>+            RefPtr&lt;DestructuringPatternNode&gt; pattern;
</ins><span class="cx">             ExpressionNode* defaultValue;
</span><span class="cx">         };
</span><span class="cx">         ArrayPatternNode();
</span><span class="lines">@@ -1809,10 +1809,10 @@
</span><span class="cx">         Vector&lt;Entry&gt; m_targetPatterns;
</span><span class="cx">     };
</span><span class="cx">     
</span><del>-    class ObjectPatternNode : public DeconstructionPatternNode {
</del><ins>+    class ObjectPatternNode : public DestructuringPatternNode {
</ins><span class="cx">     public:
</span><span class="cx">         static Ref&lt;ObjectPatternNode&gt; create();
</span><del>-        void appendEntry(const JSTokenLocation&amp;, const Identifier&amp; identifier, bool wasString, DeconstructionPatternNode* pattern, ExpressionNode* defaultValue)
</del><ins>+        void appendEntry(const JSTokenLocation&amp;, const Identifier&amp; identifier, bool wasString, DestructuringPatternNode* pattern, ExpressionNode* defaultValue)
</ins><span class="cx">         {
</span><span class="cx">             m_targetPatterns.append(Entry{ identifier, wasString, pattern, defaultValue });
</span><span class="cx">         }
</span><span class="lines">@@ -1825,13 +1825,13 @@
</span><span class="cx">         struct Entry {
</span><span class="cx">             Identifier propertyName;
</span><span class="cx">             bool wasString;
</span><del>-            RefPtr&lt;DeconstructionPatternNode&gt; pattern;
</del><ins>+            RefPtr&lt;DestructuringPatternNode&gt; pattern;
</ins><span class="cx">             ExpressionNode* defaultValue;
</span><span class="cx">         };
</span><span class="cx">         Vector&lt;Entry&gt; m_targetPatterns;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    class BindingNode : public DeconstructionPatternNode {
</del><ins>+    class BindingNode : public DestructuringPatternNode {
</ins><span class="cx">     public:
</span><span class="cx">         static Ref&lt;BindingNode&gt; create(const Identifier&amp; boundProperty, const JSTextPosition&amp; start, const JSTextPosition&amp; end);
</span><span class="cx">         const Identifier&amp; boundProperty() const { return m_boundProperty; }
</span><span class="lines">@@ -1853,19 +1853,19 @@
</span><span class="cx">         Identifier m_boundProperty;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    class DeconstructingAssignmentNode : public ExpressionNode, public ParserArenaDeletable {
</del><ins>+    class DestructuringAssignmentNode : public ExpressionNode, public ParserArenaDeletable {
</ins><span class="cx">     public:
</span><del>-        DeconstructingAssignmentNode(const JSTokenLocation&amp;, PassRefPtr&lt;DeconstructionPatternNode&gt;, ExpressionNode*);
-        DeconstructionPatternNode* bindings() { return m_bindings.get(); }
</del><ins>+        DestructuringAssignmentNode(const JSTokenLocation&amp;, PassRefPtr&lt;DestructuringPatternNode&gt;, ExpressionNode*);
+        DestructuringPatternNode* bindings() { return m_bindings.get(); }
</ins><span class="cx">         
</span><span class="cx">         using ParserArenaDeletable::operator new;
</span><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         virtual bool isAssignmentLocation() const override { return true; }
</span><del>-        virtual bool isDeconstructionNode() const override { return true; }
</del><ins>+        virtual bool isDestructuringNode() const override { return true; }
</ins><span class="cx">         virtual RegisterID* emitBytecode(BytecodeGenerator&amp;, RegisterID* = 0) override;
</span><span class="cx"> 
</span><del>-        RefPtr&lt;DeconstructionPatternNode&gt; m_bindings;
</del><ins>+        RefPtr&lt;DestructuringPatternNode&gt; m_bindings;
</ins><span class="cx">         ExpressionNode* m_initializer;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.cpp (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.cpp        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/Parser.cpp        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -411,7 +411,7 @@
</span><span class="cx">     int start = tokenLine();
</span><span class="cx">     int end = 0;
</span><span class="cx">     int scratch;
</span><del>-    TreeDeconstructionPattern scratch1 = 0;
</del><ins>+    TreeDestructuringPattern scratch1 = 0;
</ins><span class="cx">     TreeExpression scratch2 = 0;
</span><span class="cx">     JSTextPosition scratch3;
</span><span class="cx">     TreeExpression varDecls = parseVarDeclarationList(context, scratch, scratch1, scratch2, scratch3, scratch3, scratch3, VarDeclarationContext);
</span><span class="lines">@@ -483,7 +483,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeExpression Parser&lt;LexerType&gt;::parseVarDeclarationList(TreeBuilder&amp; context, int&amp; declarations, TreeDeconstructionPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd, VarDeclarationListContext declarationListContext)
</del><ins>+template &lt;class TreeBuilder&gt; TreeExpression Parser&lt;LexerType&gt;::parseVarDeclarationList(TreeBuilder&amp; context, int&amp; declarations, TreeDestructuringPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd, VarDeclarationListContext declarationListContext)
</ins><span class="cx"> {
</span><span class="cx">     TreeExpression head = 0;
</span><span class="cx">     TreeExpression tail = 0;
</span><span class="lines">@@ -522,15 +522,15 @@
</span><span class="cx">                 node = context.createEmptyVarExpression(varStartLocation, *name);
</span><span class="cx">         } else {
</span><span class="cx">             lastIdent = 0;
</span><del>-            auto pattern = parseDeconstructionPattern(context, DeconstructToVariables);
-            failIfFalse(pattern, &quot;Cannot parse this deconstruction pattern&quot;);
</del><ins>+            auto pattern = parseDestructuringPattern(context, DestructureToVariables);
+            failIfFalse(pattern, &quot;Cannot parse this destructuring pattern&quot;);
</ins><span class="cx">             hasInitializer = match(EQUAL);
</span><span class="cx">             failIfTrue(declarationListContext == VarDeclarationContext &amp;&amp; !hasInitializer, &quot;Expected an initializer in destructuring variable declaration&quot;);
</span><span class="cx">             lastPattern = pattern;
</span><span class="cx">             if (hasInitializer) {
</span><span class="cx">                 next(TreeBuilder::DontBuildStrings); // consume '='
</span><span class="cx">                 TreeExpression rhs = parseAssignmentExpression(context);
</span><del>-                node = context.createDeconstructingAssignment(location, pattern, rhs);
</del><ins>+                node = context.createDestructuringAssignment(location, pattern, rhs);
</ins><span class="cx">                 lastInitializer = rhs;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -544,50 +544,50 @@
</span><span class="cx">             tail = context.appendToCommaExpr(location, head, tail, node);
</span><span class="cx">     } while (match(COMMA));
</span><span class="cx">     if (lastIdent)
</span><del>-        lastPattern = createBindingPattern(context, DeconstructToVariables, *lastIdent, 0, lastIdentToken);
</del><ins>+        lastPattern = createBindingPattern(context, DestructureToVariables, *lastIdent, 0, lastIdentToken);
</ins><span class="cx">     return head;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::createBindingPattern(TreeBuilder&amp; context, DeconstructionKind kind, const Identifier&amp; name, int depth, JSToken token)
</del><ins>+template &lt;class TreeBuilder&gt; TreeDestructuringPattern Parser&lt;LexerType&gt;::createBindingPattern(TreeBuilder&amp; context, DestructuringKind kind, const Identifier&amp; name, int depth, JSToken token)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(!name.isNull());
</span><span class="cx">     
</span><span class="cx">     ASSERT(name.impl()-&gt;isAtomic() || name.impl()-&gt;isSymbol());
</span><span class="cx">     if (depth) {
</span><del>-        if (kind == DeconstructToVariables)
-            failIfFalseIfStrict(declareVariable(&amp;name), &quot;Cannot deconstruct to a variable named '&quot;, name.impl(), &quot;' in strict mode&quot;);
-        if (kind == DeconstructToParameters) {
</del><ins>+        if (kind == DestructureToVariables)
+            failIfFalseIfStrict(declareVariable(&amp;name), &quot;Cannot destructure to a variable named '&quot;, name.impl(), &quot;' in strict mode&quot;);
+        if (kind == DestructureToParameters) {
</ins><span class="cx">             auto bindingResult = declareBoundParameter(&amp;name);
</span><span class="cx">             if (bindingResult == Scope::StrictBindingFailed &amp;&amp; strictMode()) {
</span><del>-                semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;arguments == name || m_vm-&gt;propertyNames-&gt;eval == name, &quot;Cannot deconstruct to a parameter name '&quot;, name.impl(), &quot;' in strict mode&quot;);
</del><ins>+                semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;arguments == name || m_vm-&gt;propertyNames-&gt;eval == name, &quot;Cannot destructure to a parameter name '&quot;, name.impl(), &quot;' in strict mode&quot;);
</ins><span class="cx">                 if (m_lastFunctionName &amp;&amp; name == *m_lastFunctionName)
</span><del>-                    semanticFail(&quot;Cannot deconstruct to '&quot;, name.impl(), &quot;' as it shadows the name of a strict mode function&quot;);
</del><ins>+                    semanticFail(&quot;Cannot destructure to '&quot;, name.impl(), &quot;' as it shadows the name of a strict mode function&quot;);
</ins><span class="cx">                 semanticFailureDueToKeyword(&quot;bound parameter name&quot;);
</span><span class="cx">                 if (hasDeclaredParameter(name))
</span><del>-                    semanticFail(&quot;Cannot deconstruct to '&quot;, name.impl(), &quot;' as it has already been declared&quot;);
</del><ins>+                    semanticFail(&quot;Cannot destructure to '&quot;, name.impl(), &quot;' as it has already been declared&quot;);
</ins><span class="cx">                 semanticFail(&quot;Cannot bind to a parameter named '&quot;, name.impl(), &quot;' in strict mode&quot;);
</span><span class="cx">             }
</span><span class="cx">             if (bindingResult == Scope::BindingFailed) {
</span><span class="cx">                 semanticFailureDueToKeyword(&quot;bound parameter name&quot;);
</span><span class="cx">                 if (hasDeclaredParameter(name))
</span><del>-                    semanticFail(&quot;Cannot deconstruct to '&quot;, name.impl(), &quot;' as it has already been declared&quot;);
-                semanticFail(&quot;Cannot deconstruct to a parameter named '&quot;, name.impl(), &quot;'&quot;);
</del><ins>+                    semanticFail(&quot;Cannot destructure to '&quot;, name.impl(), &quot;' as it has already been declared&quot;);
+                semanticFail(&quot;Cannot destructure to a parameter named '&quot;, name.impl(), &quot;'&quot;);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><del>-        if (kind != DeconstructToExpressions)
</del><ins>+        if (kind != DestructureToExpressions)
</ins><span class="cx">             context.addVar(&amp;name, DeclarationStacks::HasInitializer);
</span><span class="cx"> 
</span><span class="cx">     } else {
</span><del>-        if (kind == DeconstructToVariables) {
</del><ins>+        if (kind == DestructureToVariables) {
</ins><span class="cx">             failIfFalseIfStrict(declareVariable(&amp;name), &quot;Cannot declare a variable named '&quot;, name.impl(), &quot;' in strict mode&quot;);
</span><span class="cx">             context.addVar(&amp;name, DeclarationStacks::HasInitializer);
</span><span class="cx">         }
</span><span class="cx">         
</span><del>-        if (kind == DeconstructToParameters) {
</del><ins>+        if (kind == DestructureToParameters) {
</ins><span class="cx">             bool declarationResult = declareParameter(&amp;name);
</span><span class="cx">             if (!declarationResult &amp;&amp; strictMode()) {
</span><del>-                semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;arguments == name || m_vm-&gt;propertyNames-&gt;eval == name, &quot;Cannot deconstruct to a parameter name '&quot;, name.impl(), &quot;' in strict mode&quot;);
</del><ins>+                semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;arguments == name || m_vm-&gt;propertyNames-&gt;eval == name, &quot;Cannot destructure to a parameter name '&quot;, name.impl(), &quot;' in strict mode&quot;);
</ins><span class="cx">                 if (m_lastFunctionName &amp;&amp; name == *m_lastFunctionName)
</span><span class="cx">                     semanticFail(&quot;Cannot declare a parameter named '&quot;, name.impl(), &quot;' as it shadows the name of a strict mode function&quot;);
</span><span class="cx">                 semanticFailureDueToKeyword(&quot;parameter name&quot;);
</span><span class="lines">@@ -637,17 +637,17 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression(TreeBuilder&amp; context)
</del><ins>+template &lt;class TreeBuilder&gt; TreeDestructuringPattern Parser&lt;LexerType&gt;::tryParseDestructuringPatternExpression(TreeBuilder&amp; context)
</ins><span class="cx"> {
</span><del>-    return parseDeconstructionPattern(context, DeconstructToExpressions);
</del><ins>+    return parseDestructuringPattern(context, DestructureToExpressions);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::parseDeconstructionPattern(TreeBuilder&amp; context, DeconstructionKind kind, int depth)
</del><ins>+template &lt;class TreeBuilder&gt; TreeDestructuringPattern Parser&lt;LexerType&gt;::parseDestructuringPattern(TreeBuilder&amp; context, DestructuringKind kind, int depth)
</ins><span class="cx"> {
</span><span class="cx">     failIfStackOverflow();
</span><span class="cx">     int nonLHSCount = m_nonLHSCount;
</span><del>-    TreeDeconstructionPattern pattern;
</del><ins>+    TreeDestructuringPattern pattern;
</ins><span class="cx">     switch (m_token.m_type) {
</span><span class="cx">     case OPENBRACKET: {
</span><span class="cx">         JSTextPosition divotStart = tokenStartPosition();
</span><span class="lines">@@ -669,12 +669,12 @@
</span><span class="cx">             if (UNLIKELY(match(DOTDOTDOT))) {
</span><span class="cx">                 JSTokenLocation location = m_token.m_location;
</span><span class="cx">                 next();
</span><del>-                auto innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
-                if (kind == DeconstructToExpressions &amp;&amp; !innerPattern)
</del><ins>+                auto innerPattern = parseDestructuringPattern(context, kind, depth + 1);
+                if (kind == DestructureToExpressions &amp;&amp; !innerPattern)
</ins><span class="cx">                     return 0;
</span><del>-                failIfFalse(innerPattern, &quot;Cannot parse this deconstruction pattern&quot;);
</del><ins>+                failIfFalse(innerPattern, &quot;Cannot parse this destructuring pattern&quot;);
</ins><span class="cx"> 
</span><del>-                failIfTrue(kind != DeconstructToExpressions &amp;&amp; !context.isBindingNode(innerPattern),  &quot;Expected identifier for a rest element deconstruction pattern&quot;);
</del><ins>+                failIfTrue(kind != DestructureToExpressions &amp;&amp; !context.isBindingNode(innerPattern),  &quot;Expected identifier for a rest element destructuring pattern&quot;);
</ins><span class="cx"> 
</span><span class="cx">                 context.appendArrayPatternRestEntry(arrayPattern, location, innerPattern);
</span><span class="cx">                 restElementWasFound = true;
</span><span class="lines">@@ -682,18 +682,18 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             JSTokenLocation location = m_token.m_location;
</span><del>-            auto innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
-            if (kind == DeconstructToExpressions &amp;&amp; !innerPattern)
</del><ins>+            auto innerPattern = parseDestructuringPattern(context, kind, depth + 1);
+            if (kind == DestructureToExpressions &amp;&amp; !innerPattern)
</ins><span class="cx">                 return 0;
</span><del>-            failIfFalse(innerPattern, &quot;Cannot parse this deconstruction pattern&quot;);
-            TreeExpression defaultValue = parseDefaultValueForDeconstructionPattern(context);
-            failIfTrue(kind == DeconstructToParameters &amp;&amp; defaultValue,  &quot;Default values in destructuring parameters are currently not supported&quot;);
</del><ins>+            failIfFalse(innerPattern, &quot;Cannot parse this destructuring pattern&quot;);
+            TreeExpression defaultValue = parseDefaultValueForDestructuringPattern(context);
+            failIfTrue(kind == DestructureToParameters &amp;&amp; defaultValue,  &quot;Default values in destructuring parameters are currently not supported&quot;);
</ins><span class="cx">             context.appendArrayPatternEntry(arrayPattern, location, innerPattern, defaultValue);
</span><span class="cx">         } while (consume(COMMA));
</span><span class="cx"> 
</span><del>-        if (kind == DeconstructToExpressions &amp;&amp; !match(CLOSEBRACKET))
</del><ins>+        if (kind == DestructureToExpressions &amp;&amp; !match(CLOSEBRACKET))
</ins><span class="cx">             return 0;
</span><del>-        consumeOrFail(CLOSEBRACKET, restElementWasFound ? &quot;Expected a closing ']' following a rest element deconstruction pattern&quot; : &quot;Expected either a closing ']' or a ',' following an element deconstruction pattern&quot;);
</del><ins>+        consumeOrFail(CLOSEBRACKET, restElementWasFound ? &quot;Expected a closing ']' following a rest element destructuring pattern&quot; : &quot;Expected either a closing ']' or a ',' following an element destructuring pattern&quot;);
</ins><span class="cx">         context.finishArrayPattern(arrayPattern, divotStart, divotStart, lastTokenEndPosition());
</span><span class="cx">         pattern = arrayPattern;
</span><span class="cx">         break;
</span><span class="lines">@@ -709,14 +709,14 @@
</span><span class="cx">                 break;
</span><span class="cx"> 
</span><span class="cx">             Identifier propertyName;
</span><del>-            TreeDeconstructionPattern innerPattern = 0;
</del><ins>+            TreeDestructuringPattern innerPattern = 0;
</ins><span class="cx">             JSTokenLocation location = m_token.m_location;
</span><span class="cx">             if (match(IDENT)) {
</span><span class="cx">                 propertyName = *m_token.m_data.ident;
</span><span class="cx">                 JSToken identifierToken = m_token;
</span><span class="cx">                 next();
</span><span class="cx">                 if (consume(COLON))
</span><del>-                    innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
</del><ins>+                    innerPattern = parseDestructuringPattern(context, kind, depth + 1);
</ins><span class="cx">                 else
</span><span class="cx">                     innerPattern = createBindingPattern(context, kind, propertyName, depth, identifierToken);
</span><span class="cx">             } else {
</span><span class="lines">@@ -732,7 +732,7 @@
</span><span class="cx">                     break;
</span><span class="cx">                 default:
</span><span class="cx">                     if (m_token.m_type != RESERVED &amp;&amp; m_token.m_type != RESERVED_IF_STRICT &amp;&amp; !(m_token.m_type &amp; KeywordTokenFlag)) {
</span><del>-                        if (kind == DeconstructToExpressions)
</del><ins>+                        if (kind == DestructureToExpressions)
</ins><span class="cx">                             return 0;
</span><span class="cx">                         failWithMessage(&quot;Expected a property name&quot;);
</span><span class="cx">                     }
</span><span class="lines">@@ -741,34 +741,34 @@
</span><span class="cx">                 }
</span><span class="cx">                 next();
</span><span class="cx">                 if (!consume(COLON)) {
</span><del>-                    if (kind == DeconstructToExpressions)
</del><ins>+                    if (kind == DestructureToExpressions)
</ins><span class="cx">                         return 0;
</span><del>-                    semanticFailIfTrue(tokenType == RESERVED, &quot;Cannot use abbreviated deconstruction syntax for reserved name '&quot;, propertyName.impl(), &quot;'&quot;);
-                    semanticFailIfTrue(tokenType == RESERVED_IF_STRICT, &quot;Cannot use abbreviated deconstruction syntax for reserved name '&quot;, propertyName.impl(), &quot;' in strict mode&quot;);
-                    semanticFailIfTrue(tokenType &amp; KeywordTokenFlag, &quot;Cannot use abbreviated deconstruction syntax for keyword '&quot;, propertyName.impl(), &quot;'&quot;);
</del><ins>+                    semanticFailIfTrue(tokenType == RESERVED, &quot;Cannot use abbreviated destructuring syntax for reserved name '&quot;, propertyName.impl(), &quot;'&quot;);
+                    semanticFailIfTrue(tokenType == RESERVED_IF_STRICT, &quot;Cannot use abbreviated destructuring syntax for reserved name '&quot;, propertyName.impl(), &quot;' in strict mode&quot;);
+                    semanticFailIfTrue(tokenType &amp; KeywordTokenFlag, &quot;Cannot use abbreviated destructuring syntax for keyword '&quot;, propertyName.impl(), &quot;'&quot;);
</ins><span class="cx">                     
</span><del>-                    failWithMessage(&quot;Expected a ':' prior to named property deconstruction&quot;);
</del><ins>+                    failWithMessage(&quot;Expected a ':' prior to a named destructuring property&quot;);
</ins><span class="cx">                 }
</span><del>-                innerPattern = parseDeconstructionPattern(context, kind, depth + 1);
</del><ins>+                innerPattern = parseDestructuringPattern(context, kind, depth + 1);
</ins><span class="cx">             }
</span><del>-            if (kind == DeconstructToExpressions &amp;&amp; !innerPattern)
</del><ins>+            if (kind == DestructureToExpressions &amp;&amp; !innerPattern)
</ins><span class="cx">                 return 0;
</span><del>-            failIfFalse(innerPattern, &quot;Cannot parse this deconstruction pattern&quot;);
-            TreeExpression defaultValue = parseDefaultValueForDeconstructionPattern(context);
-            failIfTrue(kind == DeconstructToParameters &amp;&amp; defaultValue, &quot;Default values in destructuring parameters are currently not supported&quot;);
</del><ins>+            failIfFalse(innerPattern, &quot;Cannot parse this destructuring pattern&quot;);
+            TreeExpression defaultValue = parseDefaultValueForDestructuringPattern(context);
+            failIfTrue(kind == DestructureToParameters &amp;&amp; defaultValue, &quot;Default values in destructuring parameters are currently not supported&quot;);
</ins><span class="cx">             context.appendObjectPatternEntry(objectPattern, location, wasString, propertyName, innerPattern, defaultValue);
</span><span class="cx">         } while (consume(COMMA));
</span><span class="cx"> 
</span><del>-        if (kind == DeconstructToExpressions &amp;&amp; !match(CLOSEBRACE))
</del><ins>+        if (kind == DestructureToExpressions &amp;&amp; !match(CLOSEBRACE))
</ins><span class="cx">             return 0;
</span><del>-        consumeOrFail(CLOSEBRACE, &quot;Expected either a closing '}' or an ',' after a property deconstruction pattern&quot;);
</del><ins>+        consumeOrFail(CLOSEBRACE, &quot;Expected either a closing '}' or an ',' after a property destructuring pattern&quot;);
</ins><span class="cx">         pattern = objectPattern;
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     default: {
</span><span class="cx">         if (!match(IDENT)) {
</span><del>-            if (kind == DeconstructToExpressions)
</del><ins>+            if (kind == DestructureToExpressions)
</ins><span class="cx">                 return 0;
</span><span class="cx">             semanticFailureDueToKeyword(&quot;variable name&quot;);
</span><span class="cx">             failWithMessage(&quot;Expected a parameter pattern or a ')' in parameter list&quot;);
</span><span class="lines">@@ -783,7 +783,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeExpression Parser&lt;LexerType&gt;::parseDefaultValueForDeconstructionPattern(TreeBuilder&amp; context)
</del><ins>+template &lt;class TreeBuilder&gt; TreeExpression Parser&lt;LexerType&gt;::parseDefaultValueForDestructuringPattern(TreeBuilder&amp; context)
</ins><span class="cx"> {
</span><span class="cx">     if (!match(EQUAL))
</span><span class="cx">         return 0;
</span><span class="lines">@@ -834,13 +834,13 @@
</span><span class="cx">     JSTextPosition declsStart;
</span><span class="cx">     JSTextPosition declsEnd;
</span><span class="cx">     TreeExpression decls = 0;
</span><del>-    TreeDeconstructionPattern pattern = 0;
</del><ins>+    TreeDestructuringPattern pattern = 0;
</ins><span class="cx">     if (match(VAR)) {
</span><span class="cx">         /*
</span><span class="cx">          for (var IDENT in expression) statement
</span><span class="cx">          for (var varDeclarationList; expressionOpt; expressionOpt)
</span><span class="cx">          */
</span><del>-        TreeDeconstructionPattern forInTarget = 0;
</del><ins>+        TreeDestructuringPattern forInTarget = 0;
</ins><span class="cx">         TreeExpression forInInitializer = 0;
</span><span class="cx">         m_allowsIn = false;
</span><span class="cx">         JSTextPosition initStart;
</span><span class="lines">@@ -890,7 +890,7 @@
</span><span class="cx">         if (match(OPENBRACE) || match(OPENBRACKET)) {
</span><span class="cx">             SavePoint savePoint = createSavePoint();
</span><span class="cx">             declsStart = tokenStartPosition();
</span><del>-            pattern = tryParseDeconstructionPatternExpression(context);
</del><ins>+            pattern = tryParseDestructuringPatternExpression(context);
</ins><span class="cx">             declsEnd = lastTokenEndPosition();
</span><span class="cx">             if (pattern &amp;&amp; (match(INTOKEN) || (match(IDENT) &amp;&amp; *m_token.m_data.ident == m_vm-&gt;propertyNames-&gt;of)))
</span><span class="cx">                 goto enumerationLoop;
</span><span class="lines">@@ -1349,12 +1349,12 @@
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="cx"> template &lt;class TreeBuilder&gt; TreeFormalParameterList Parser&lt;LexerType&gt;::parseFormalParameters(TreeBuilder&amp; context)
</span><span class="cx"> {
</span><del>-    auto parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</del><ins>+    auto parameter = parseDestructuringPattern(context, DestructureToParameters);
</ins><span class="cx">     failIfFalse(parameter, &quot;Cannot parse parameter pattern&quot;);
</span><span class="cx">     TreeFormalParameterList list = context.createFormalParameterList(parameter);
</span><span class="cx">     TreeFormalParameterList tail = list;
</span><span class="cx">     while (consume(COMMA)) {
</span><del>-        parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</del><ins>+        parameter = parseDestructuringPattern(context, DestructureToParameters);
</ins><span class="cx">         failIfFalse(parameter, &quot;Cannot parse parameter pattern&quot;);
</span><span class="cx">         tail = context.createFormalParameterList(tail, parameter);
</span><span class="cx">     }
</span><span class="lines">@@ -1429,7 +1429,7 @@
</span><span class="cx">                 
</span><span class="cx">                 consumeOrFail(CLOSEPAREN, &quot;Expected a ')' or a ',' after a parameter declaration&quot;);
</span><span class="cx">             } else {
</span><del>-                auto parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</del><ins>+                auto parameter = parseDestructuringPattern(context, DestructureToParameters);
</ins><span class="cx">                 failIfFalse(parameter, &quot;Cannot parse parameter pattern&quot;);
</span><span class="cx">                 info.parameters = context.createFormalParameterList(parameter);
</span><span class="cx">                 failIfFalse(info.parameters, &quot;Cannot parse parameters for this &quot;, stringForFunctionMode(mode));
</span><span class="lines">@@ -1449,7 +1449,7 @@
</span><span class="cx">         consumeOrFail(CLOSEPAREN, &quot;getter functions must have no parameters&quot;);
</span><span class="cx">     else if (mode == SetterMode) {
</span><span class="cx">         failIfTrue(match(CLOSEPAREN), &quot;setter functions must have one parameter&quot;);
</span><del>-        auto parameter = parseDeconstructionPattern(context, DeconstructToParameters);
</del><ins>+        auto parameter = parseDestructuringPattern(context, DestructureToParameters);
</ins><span class="cx">         failIfFalse(parameter, &quot;setter functions must have one parameter&quot;);
</span><span class="cx">         info.parameters = context.createFormalParameterList(parameter);
</span><span class="cx">         failIfTrue(match(COMMA), &quot;setter functions must have one parameter&quot;);
</span><span class="lines">@@ -2074,11 +2074,11 @@
</span><span class="cx">     int initialNonLHSCount = m_nonLHSCount;
</span><span class="cx">     if (match(OPENBRACE) || match(OPENBRACKET)) {
</span><span class="cx">         SavePoint savePoint = createSavePoint();
</span><del>-        auto pattern = tryParseDeconstructionPatternExpression(context);
</del><ins>+        auto pattern = tryParseDestructuringPatternExpression(context);
</ins><span class="cx">         if (pattern &amp;&amp; consume(EQUAL)) {
</span><span class="cx">             auto rhs = parseAssignmentExpression(context);
</span><span class="cx">             if (rhs)
</span><del>-                return context.createDeconstructingAssignment(location, pattern, rhs);
</del><ins>+                return context.createDestructuringAssignment(location, pattern, rhs);
</ins><span class="cx">         }
</span><span class="cx">         restoreSavePoint(savePoint);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/Parser.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> #define TreeProperty typename TreeBuilder::Property
</span><span class="cx"> #define TreePropertyList typename TreeBuilder::PropertyList
</span><del>-#define TreeDeconstructionPattern typename TreeBuilder::DeconstructionPattern
</del><ins>+#define TreeDestructuringPattern typename TreeBuilder::DestructuringPattern
</ins><span class="cx"> 
</span><span class="cx"> COMPILE_ASSERT(LastUntaggedToken &lt; 64, LessThan64UntaggedTokens);
</span><span class="cx"> 
</span><span class="lines">@@ -95,10 +95,10 @@
</span><span class="cx">     ArrowFunctionMode
</span><span class="cx"> #endif
</span><span class="cx"> };
</span><del>-enum DeconstructionKind {
-    DeconstructToVariables,
-    DeconstructToParameters,
-    DeconstructToExpressions
</del><ins>+enum DestructuringKind {
+    DestructureToVariables,
+    DestructureToParameters,
+    DestructureToExpressions
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename T&gt; inline bool isEvalNode() { return false; }
</span><span class="lines">@@ -809,7 +809,7 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&amp;, int functionKeywordStart, int functionNameStart, int parametersStart, ConstructorKind, FunctionParseType);
</span><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFormalParameterList parseFormalParameters(TreeBuilder&amp;);
</span><span class="cx">     enum VarDeclarationListContext { ForLoopContext, VarDeclarationContext };
</span><del>-    template &lt;class TreeBuilder&gt; TreeExpression parseVarDeclarationList(TreeBuilder&amp;, int&amp; declarations, TreeDeconstructionPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd, VarDeclarationListContext);
</del><ins>+    template &lt;class TreeBuilder&gt; TreeExpression parseVarDeclarationList(TreeBuilder&amp;, int&amp; declarations, TreeDestructuringPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd, VarDeclarationListContext);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE TreeConstDeclList parseConstDeclarationList(TreeBuilder&amp;);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ES6_ARROWFUNCTION_SYNTAX)
</span><span class="lines">@@ -817,10 +817,10 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeExpression parseArrowFunctionExpression(TreeBuilder&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern createBindingPattern(TreeBuilder&amp;, DeconstructionKind, const Identifier&amp;, int depth, JSToken);
-    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern parseDeconstructionPattern(TreeBuilder&amp;, DeconstructionKind, int depth = 0);
-    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDeconstructionPattern tryParseDeconstructionPatternExpression(TreeBuilder&amp;);
-    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeExpression parseDefaultValueForDeconstructionPattern(TreeBuilder&amp;);
</del><ins>+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDestructuringPattern createBindingPattern(TreeBuilder&amp;, DestructuringKind, const Identifier&amp;, int depth, JSToken);
+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDestructuringPattern parseDestructuringPattern(TreeBuilder&amp;, DestructuringKind, int depth = 0);
+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeDestructuringPattern tryParseDestructuringPatternExpression(TreeBuilder&amp;);
+    template &lt;class TreeBuilder&gt; NEVER_INLINE TreeExpression parseDefaultValueForDestructuringPattern(TreeBuilder&amp;);
</ins><span class="cx"> 
</span><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE bool parseFunctionInfo(TreeBuilder&amp;, FunctionRequirements, FunctionParseMode, bool nameIsInContainingScope, ConstructorKind, SuperBinding, int functionKeywordStart, ParserFunctionInfo&lt;TreeBuilder&gt;&amp;, FunctionParseType);
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSyntaxCheckerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/SyntaxChecker.h (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SyntaxChecker.h        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/parser/SyntaxChecker.h        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -76,12 +76,12 @@
</span><span class="cx">         FunctionExpr, ClassExpr, SuperExpr, BracketExpr, DotExpr, CallExpr,
</span><span class="cx">         NewExpr, PreExpr, PostExpr, UnaryExpr, BinaryExpr,
</span><span class="cx">         ConditionalExpr, AssignmentExpr, TypeofExpr,
</span><del>-        DeleteExpr, ArrayLiteralExpr, BindingDeconstruction,
-        ArrayDeconstruction, ObjectDeconstruction, SourceElementsResult,
</del><ins>+        DeleteExpr, ArrayLiteralExpr, BindingDestructuring,
+        ArrayDestructuring, ObjectDestructuring, SourceElementsResult,
</ins><span class="cx">         FunctionBodyResult, SpreadExpr, ArgumentsResult,
</span><span class="cx">         PropertyListResult, ArgumentsListResult, ElementsListResult,
</span><span class="cx">         StatementResult, FormalParameterListResult, ClauseResult,
</span><del>-        ClauseListResult, CommaExpr, DeconstructingAssignment,
</del><ins>+        ClauseListResult, CommaExpr, DestructuringAssignment,
</ins><span class="cx">         TemplateStringResult, TemplateStringListResult,
</span><span class="cx">         TemplateExpressionListResult, TemplateExpr,
</span><span class="cx">         TaggedTemplateExpr
</span><span class="lines">@@ -130,9 +130,9 @@
</span><span class="cx">     typedef int Clause;
</span><span class="cx">     typedef int ConstDeclList;
</span><span class="cx">     typedef int BinaryOperand;
</span><del>-    typedef int DeconstructionPattern;
-    typedef DeconstructionPattern ArrayPattern;
-    typedef DeconstructionPattern ObjectPattern;
</del><ins>+    typedef int DestructuringPattern;
+    typedef DestructuringPattern ArrayPattern;
+    typedef DestructuringPattern ObjectPattern;
</ins><span class="cx"> 
</span><span class="cx">     static const bool CreatesAST = false;
</span><span class="cx">     static const bool NeedsFreeVariableInfo = false;
</span><span class="lines">@@ -220,8 +220,8 @@
</span><span class="cx">     int createPropertyList(const JSTokenLocation&amp;, Property, int) { return PropertyListResult; }
</span><span class="cx">     int createElementList(int, int) { return ElementsListResult; }
</span><span class="cx">     int createElementList(int, int, int) { return ElementsListResult; }
</span><del>-    int createFormalParameterList(DeconstructionPattern) { return FormalParameterListResult; }
-    int createFormalParameterList(int, DeconstructionPattern) { return FormalParameterListResult; }
</del><ins>+    int createFormalParameterList(DestructuringPattern) { return FormalParameterListResult; }
+    int createFormalParameterList(int, DestructuringPattern) { return FormalParameterListResult; }
</ins><span class="cx">     int createClause(int, int) { return ClauseResult; }
</span><span class="cx">     int createClauseList(int) { return ClauseListResult; }
</span><span class="cx">     int createClauseList(int, int) { return ClauseListResult; }
</span><span class="lines">@@ -300,22 +300,22 @@
</span><span class="cx">     const Identifier* getName(const Property&amp; property) const { return property.name; }
</span><span class="cx">     PropertyNode::Type getType(const Property&amp; property) const { return property.type; }
</span><span class="cx">     bool isResolve(ExpressionType expr) const { return expr == ResolveExpr || expr == ResolveEvalExpr; }
</span><del>-    ExpressionType createDeconstructingAssignment(const JSTokenLocation&amp;, int, ExpressionType)
</del><ins>+    ExpressionType createDestructuringAssignment(const JSTokenLocation&amp;, int, ExpressionType)
</ins><span class="cx">     {
</span><del>-        return DeconstructingAssignment;
</del><ins>+        return DestructuringAssignment;
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     ArrayPattern createArrayPattern(const JSTokenLocation&amp;)
</span><span class="cx">     {
</span><del>-        return ArrayDeconstruction;
</del><ins>+        return ArrayDestructuring;
</ins><span class="cx">     }
</span><span class="cx">     void appendArrayPatternSkipEntry(ArrayPattern, const JSTokenLocation&amp;)
</span><span class="cx">     {
</span><span class="cx">     }
</span><del>-    void appendArrayPatternEntry(ArrayPattern, const JSTokenLocation&amp;, DeconstructionPattern, int)
</del><ins>+    void appendArrayPatternEntry(ArrayPattern, const JSTokenLocation&amp;, DestructuringPattern, int)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><del>-    void appendArrayPatternRestEntry(ArrayPattern, const JSTokenLocation&amp;, DeconstructionPattern)
</del><ins>+    void appendArrayPatternRestEntry(ArrayPattern, const JSTokenLocation&amp;, DestructuringPattern)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     void finishArrayPattern(ArrayPattern, const JSTextPosition&amp;, const JSTextPosition&amp;, const JSTextPosition&amp;)
</span><span class="lines">@@ -323,19 +323,19 @@
</span><span class="cx">     }
</span><span class="cx">     ObjectPattern createObjectPattern(const JSTokenLocation&amp;)
</span><span class="cx">     {
</span><del>-        return ObjectDeconstruction;
</del><ins>+        return ObjectDestructuring;
</ins><span class="cx">     }
</span><del>-    void appendObjectPatternEntry(ArrayPattern, const JSTokenLocation&amp;, bool, const Identifier&amp;, DeconstructionPattern, int)
</del><ins>+    void appendObjectPatternEntry(ArrayPattern, const JSTokenLocation&amp;, bool, const Identifier&amp;, DestructuringPattern, int)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><del>-    DeconstructionPattern createBindingLocation(const JSTokenLocation&amp;, const Identifier&amp;, const JSTextPosition&amp;, const JSTextPosition&amp;)
</del><ins>+    DestructuringPattern createBindingLocation(const JSTokenLocation&amp;, const Identifier&amp;, const JSTextPosition&amp;, const JSTextPosition&amp;)
</ins><span class="cx">     {
</span><del>-        return BindingDeconstruction;
</del><ins>+        return BindingDestructuring;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    bool isBindingNode(DeconstructionPattern pattern)
</del><ins>+    bool isBindingNode(DestructuringPattern pattern)
</ins><span class="cx">     {
</span><del>-        return pattern == BindingDeconstruction;
</del><ins>+        return pattern == BindingDestructuring;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void setEndOffset(int, int) { }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressreservedwordwithescapejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/stress/reserved-word-with-escape.js (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/reserved-word-with-escape.js        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/tests/stress/reserved-word-with-escape.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx"> testSyntaxError(String.raw`var v\u0061r = 2000000;`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`var v\u{0061}r = 2000000`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`var {var} = obj)`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`var {v\u0061r} = obj`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`var {v\u{0061}r} = obj`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`var {var} = obj)`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`var {v\u0061r} = obj`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`var {v\u{0061}r} = obj`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`var {var:var} = obj)`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`var {var:v\u0061r} = obj`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="lines">@@ -56,9 +56,9 @@
</span><span class="cx"> testSyntaxError(String.raw`function a(v\u0061r) { }`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`function a(v\u{0061}r) { }`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`function a({var}) { }`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`function a({v\u0061r}) { }`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`function a({v\u{0061}r}) { }`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`function a({var}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`function a({v\u0061r}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`function a({v\u{0061}r}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`function a({var:var}) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`function a({var:v\u0061r}) { }`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="lines">@@ -76,9 +76,9 @@
</span><span class="cx"> testSyntaxError(String.raw`(function a(v\u0061r) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a(v\u{0061}r) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`(function a({var}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({v\u0061r}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({v\u{0061}r}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`(function a({var}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({v\u0061r}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({v\u{0061}r}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`(function a({var:var}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a({var:v\u0061r}) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="lines">@@ -88,9 +88,9 @@
</span><span class="cx"> testSyntaxError(String.raw`(function a([v\u0061r]) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a([v\u{0061}r]) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`(function a([{var}]) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a([{v\u0061r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a([{v\u{0061}r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`(function a([{var}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a([{v\u0061r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a([{v\u{0061}r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`(function a([{var:var}]) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a([{var:v\u0061r}]) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="lines">@@ -100,9 +100,9 @@
</span><span class="cx"> testSyntaxError(String.raw`(function a([[v\u0061r]]) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a([[v\u{0061}r]]) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`(function a({ hello: {var}}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({ hello: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({ hello: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`(function a({ hello: {var}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({ hello: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({ hello: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`(function a({ hello: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a({ hello: {var:v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="lines">@@ -112,9 +112,9 @@
</span><span class="cx"> testSyntaxError(String.raw`(function a({ hello: [v\u0061r]}) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a({ hello: [v\u{0061}r]}) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u{0061}r' as a variable name.`);
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`(function a({ 0: {var} }) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({ 0: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
-testSyntaxError(String.raw`(function a({ 0: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated deconstruction syntax for keyword 'var'.`);
</del><ins>+testSyntaxError(String.raw`(function a({ 0: {var} }) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({ 0: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
+testSyntaxError(String.raw`(function a({ 0: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
</ins><span class="cx"> 
</span><span class="cx"> testSyntaxError(String.raw`(function a({ 0: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
</span><span class="cx"> testSyntaxError(String.raw`(function a({ 0: {var:v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'v\u0061r' as a variable name.`);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressrestelementsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/stress/rest-elements.js (186245 => 186246)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/rest-elements.js        2015-07-02 23:40:59 UTC (rev 186245)
+++ trunk/Source/JavaScriptCore/tests/stress/rest-elements.js        2015-07-02 23:53:10 UTC (rev 186246)
</span><span class="lines">@@ -95,19 +95,19 @@
</span><span class="cx">     shouldBe(JSON.stringify(c), String.raw`[]`);
</span><span class="cx"> }(&quot;C&quot;));
</span><span class="cx"> 
</span><del>-testSyntaxError(String.raw`var [a, ...b, c] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`var [a, ...b,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`var [a, ...b,,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`var [a, ...b = 20] = 20`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`var [a, ...[b, c]] = 20`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`var [a, ...{ b, c }] = 20`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element deconstruction pattern.`);
</del><ins>+testSyntaxError(String.raw`var [a, ...b, c] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`var [a, ...b,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`var [a, ...b,,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`var [a, ...b = 20] = 20`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`var [a, ...[b, c]] = 20`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element destructuring pattern.`);
+testSyntaxError(String.raw`var [a, ...{ b, c }] = 20`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element destructuring pattern.`);
</ins><span class="cx"> 
</span><del>-testSyntaxError(String.raw`(function ([a, ...b, c]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`(function ([a, ...b,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`(function ([a, ...b,,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`(function ([a, ...b = 20,,]) { })`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`(function ([a, ...[b, c]]) { })`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element deconstruction pattern.`);
-testSyntaxError(String.raw`(function ([a, ...{ b, c }]) { })`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element deconstruction pattern.`);
</del><ins>+testSyntaxError(String.raw`(function ([a, ...b, c]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`(function ([a, ...b,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`(function ([a, ...b,,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`(function ([a, ...b = 20,,]) { })`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.`);
+testSyntaxError(String.raw`(function ([a, ...[b, c]]) { })`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element destructuring pattern.`);
+testSyntaxError(String.raw`(function ([a, ...{ b, c }]) { })`, String.raw`SyntaxError: Unexpected token ']'. Expected identifier for a rest element destructuring pattern.`);
</ins><span class="cx"> 
</span><span class="cx"> shouldThrow(function () {
</span><span class="cx">     [a, ...b, c] = 20;
</span></span></pre>
</div>
</div>

</body>
</html>