<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>158575</bug_id>
          
          <creation_ts>2016-06-09 13:09:03 -0700</creation_ts>
          <short_desc>ES5: Reusing function name as a parameter name shouldn&apos;t throw Syntax Error</short_desc>
          <delta_ts>2016-06-09 20:30:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>erights</cc>
    
    <cc>keith_miller</cc>
    
    <cc>ljharb</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1200940</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 13:09:03 -0700</bug_when>
    <thetext>According to the ES6 spec, &lt;http://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions-static-semantics-early-errors&gt;, reusing the function name of a function as a parameter name should not throw a Syntax Error.  This is was pointed out on the es-discuss mailing list &lt;https://esdiscuss.org/topic/can-strict-parameters-shadow-strict-function-names&gt;, specifically how we differ from V8 and SpiderMonkey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201015</commentid>
    <comment_count>1</comment_count>
      <attachid>280959</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 15:36:59 -0700</bug_when>
    <thetext>Created attachment 280959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201017</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-06-09 15:37:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/26729710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201019</commentid>
    <comment_count>3</comment_count>
      <attachid>280959</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-09 15:39:25 -0700</bug_when>
    <thetext>Comment on attachment 280959
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=280959&amp;action=review

r=me with comments

&gt; Source/JavaScriptCore/parser/Parser.h:483
&gt; +        bool isValidStrictMode = (addResult.isNewEntry || !addResult.iterator-&gt;value.isParameter())
&gt; +            &amp;&amp; m_vm-&gt;propertyNames-&gt;eval != *ident &amp;&amp; !isArgumentsIdent;

Style: one line

&gt; LayoutTests/js/script-tests/basic-strict-mode.js:89
&gt; +shouldBe(&quot;(function a(a){&apos;use strict&apos;; return a+2; })(40)&quot;, &quot;42&quot;);
&gt; +shouldBe(&quot;var foo = function a(a){&apos;use strict&apos;; return a+2; }; foo(40)&quot;, &quot;42&quot;);

Can you also add tests for method style syntax?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201020</commentid>
    <comment_count>4</comment_count>
      <attachid>280959</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-06-09 15:40:05 -0700</bug_when>
    <thetext>Comment on attachment 280959
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=280959&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        The check for a parameter with a duplicate name doesn&apos;t take into account the
&gt; +        type of the prior variable.  Added a check that the duplicate is also a
&gt; +        parameter.

Can you add the URL to the spec as a ref here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201032</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 16:03:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 280959 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280959&amp;action=review
&gt; 
&gt; r=me with comments
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Parser.h:483
&gt; &gt; +        bool isValidStrictMode = (addResult.isNewEntry || !addResult.iterator-&gt;value.isParameter())
&gt; &gt; +            &amp;&amp; m_vm-&gt;propertyNames-&gt;eval != *ident &amp;&amp; !isArgumentsIdent;
&gt; 
&gt; Style: one line

Our style guide doesn&apos;t talk about whether or not we should break long line.  I believe this is more readable.  The breaking is in line with the style guide.
 
&gt; &gt; LayoutTests/js/script-tests/basic-strict-mode.js:89
&gt; &gt; +shouldBe(&quot;(function a(a){&apos;use strict&apos;; return a+2; })(40)&quot;, &quot;42&quot;);
&gt; &gt; +shouldBe(&quot;var foo = function a(a){&apos;use strict&apos;; return a+2; }; foo(40)&quot;, &quot;42&quot;);
&gt; 
&gt; Can you also add tests for method style syntax?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201033</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 16:04:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 280959 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280959&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:10
&gt; &gt; +        The check for a parameter with a duplicate name doesn&apos;t take into account the
&gt; &gt; +        type of the prior variable.  Added a check that the duplicate is also a
&gt; &gt; +        parameter.
&gt; 
&gt; Can you add the URL to the spec as a ref here?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201045</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-09 16:29:08 -0700</bug_when>
    <thetext>Committed r201892: &lt;http://trac.webkit.org/changeset/201892&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280959</attachid>
            <date>2016-06-09 15:36:59 -0700</date>
            <delta_ts>2016-06-09 15:39:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>158575.patch</filename>
            <type>text/plain</type>
            <size>4431</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE2LTA2LTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEVTNjogUmV1c2luZyBmdW5jdGlvbiBuYW1lIGFzIGEgcGFyYW1ldGVyIG5hbWUgc2hvdWxk
bid0IHRocm93IFN5bnRheCBFcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4NTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGNoZWNrIGZvciBhIHBhcmFtZXRlciB3aXRoIGEgZHVwbGljYXRl
IG5hbWUgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUKKyAgICAgICAgdHlwZSBvZiB0aGUg
cHJpb3IgdmFyaWFibGUuICBBZGRlZCBhIGNoZWNrIHRoYXQgdGhlIGR1cGxpY2F0ZSBpcyBhbHNv
IGEKKyAgICAgICAgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAg
ICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVBhcmFtZXRlcik6CisKIDIwMTYtMDYtMDkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjAxODM2LCByMjAxODQ1LCBhbmQgcjIwMTg0OC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAkocmV2aXNpb24gMjAxODYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDc5LDkgKzQ3OSwxMCBA
QCBwdWJsaWM6CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJh
dGlvblJlc3VsdDo6VmFsaWQ7CiAgICAgICAgIGJvb2wgaXNBcmd1bWVudHNJZGVudCA9IGlzQXJn
dW1lbnRzKG1fdm0sIGlkZW50KTsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2RlY2xhcmVk
VmFyaWFibGVzLmFkZChpZGVudC0+aW1wbCgpKTsKKyAgICAgICAgYm9vbCBpc1ZhbGlkU3RyaWN0
TW9kZSA9IChhZGRSZXN1bHQuaXNOZXdFbnRyeSB8fCAhYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5pc1BhcmFtZXRlcigpKQorICAgICAgICAgICAgJiYgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZh
bCAhPSAqaWRlbnQgJiYgIWlzQXJndW1lbnRzSWRlbnQ7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuY2xlYXJJc1ZhcigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNldElzUGFyYW1ldGVyKCk7Ci0gICAgICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUgPSBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsICE9ICppZGVu
dCAmJiAhaXNBcmd1bWVudHNJZGVudDsKICAgICAgICAgbV9pc1ZhbGlkU3RyaWN0TW9kZSA9IG1f
aXNWYWxpZFN0cmljdE1vZGUgJiYgaXNWYWxpZFN0cmljdE1vZGU7CiAgICAgICAgIG1fZGVjbGFy
ZWRQYXJhbWV0ZXJzLmFkZChpZGVudC0+aW1wbCgpKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkU3Ry
aWN0TW9kZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg2MykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA2LTA5ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEVTNjogUmV1c2luZyBmdW5j
dGlvbiBuYW1lIGFzIGEgcGFyYW1ldGVyIG5hbWUgc2hvdWxkbid0IHRocm93IFN5bnRheCBFcnJv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
YSBuZXcgdGVzdCBjYXNlLgorCisgICAgICAgICoganMvYmFzaWMtc3RyaWN0LW1vZGUtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qczoK
KwogMjAxNi0wNi0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZSBkbyBub3QgaGFuZGxlIGRh
bmdsaW5nIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9iYXNpYy1z
dHJpY3QtbW9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvYmFz
aWMtc3RyaWN0LW1vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDE4NjIpCisrKyBMYXlvdXRU
ZXN0cy9qcy9iYXNpYy1zdHJpY3QtbW9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDggQEAgUEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5hcgog
UEFTUyAoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7IH0pKCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicg
Y2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLi4KIFBBU1MgKGZ1bmN0aW9uIGYoYXJn
KXsndXNlIHN0cmljdCc7IGYuYXJndW1lbnRzPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vz
c2VkIGluIHN0cmljdCBtb2RlLi4KIFBBU1MgKGZ1bmN0aW9uIGYoYXJnKXsndXNlIHN0cmljdCc7
IGYuY2FsbGVyPTU7IH0pKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ2FyZ3VtZW50cycs
ICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2Rl
Li4KK1BBU1MgKGZ1bmN0aW9uIGEoYSl7J3VzZSBzdHJpY3QnOyByZXR1cm4gYSsyOyB9KSg0MCkg
aXMgNDIKK1BBU1MgdmFyIGZvbyA9IGZ1bmN0aW9uIGEoYSl7J3VzZSBzdHJpY3QnOyByZXR1cm4g
YSsyOyB9OyBmb28oNDApIGlzIDQyCiBQQVNTICJjYWxsZXIiIGluIGZ1bmN0aW9uKCl7InVzZSBz
dHJpY3QifSBpcyB0cnVlCiBQQVNTIChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt9KS5oYXNPd25Q
cm9wZXJ0eSgiY2FsbGVyIikgaXMgdHJ1ZQogUEFTUyAiYXJndW1lbnRzIiBpbiBmdW5jdGlvbigp
eyJ1c2Ugc3RyaWN0In0gaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Jhc2ljLXN0cmljdC1tb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9iYXNpYy1zdHJpY3QtbW9kZS5qcwkocmV2aXNpb24gMjAxODYyKQorKysgTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXN0cmljdC1tb2RlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw2ICs4NSw4IEBAIHNob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3Ry
aWMKIHNob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5jYWxsZXI7
IH0pKCkiKTsKIHNob3VsZFRocm93KCIoZnVuY3Rpb24gZihhcmcpeyd1c2Ugc3RyaWN0JzsgZi5h
cmd1bWVudHM9NTsgfSkoKSIpOwogc2hvdWxkVGhyb3coIihmdW5jdGlvbiBmKGFyZyl7J3VzZSBz
dHJpY3QnOyBmLmNhbGxlcj01OyB9KSgpIik7CitzaG91bGRCZSgiKGZ1bmN0aW9uIGEoYSl7J3Vz
ZSBzdHJpY3QnOyByZXR1cm4gYSsyOyB9KSg0MCkiLCAiNDIiKTsKK3Nob3VsZEJlKCJ2YXIgZm9v
ID0gZnVuY3Rpb24gYShhKXsndXNlIHN0cmljdCc7IHJldHVybiBhKzI7IH07IGZvbyg0MCkiLCAi
NDIiKTsKIAogLy8gYXJndW1lbnRzL2NhbGxlciBwb2lzb25pbmcgc2hvdWxkIGJlIHZpc2libGUg
YnV0IG5vdCB0aHJvdyB3aXRoICdpbicgJiAnaGFzT3duUHJvcGVydHknLgogc2hvdWxkQmVUcnVl
KCciY2FsbGVyIiBpbiBmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0In0nKTsK
</data>
<flag name="review"
          id="304821"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>