Arrow functions do not infer name from computed property but normal functions do
authorjoepeck@webkit.org <joepeck@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Sep 2016 20:33:21 +0000 (20:33 +0000)
committerjoepeck@webkit.org <joepeck@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Sep 2016 20:33:21 +0000 (20:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=162720

Reviewed by Saam Barati.

JSTests:

* stress/inferred-names.js:

Source/JavaScriptCore:

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded):
Set function name on arrow functions as well.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@206610 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JSTests/ChangeLog
JSTests/stress/inferred-names.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

index 8fb8045..24c63aa 100644 (file)
@@ -1,3 +1,12 @@
+2016-09-29  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Arrow functions do not infer name from computed property but normal functions do
+        https://bugs.webkit.org/show_bug.cgi?id=162720
+
+        Reviewed by Saam Barati.
+
+        * stress/inferred-names.js:
+
 2016-09-29  Mark Lam  <mark.lam@apple.com>
 
         Break some slow running tests into smaller bits so they don't time out.
index 6f7e3e0..c69f9ae 100644 (file)
@@ -70,9 +70,8 @@ assert( ({*[funcName()](){}}).func.name === "func" );
 
 assert( ({"func": ()=>{}}).func.name === "func" );
 assert( ({func: ()=>{}}).func.name === "func" );
-// FIXME: <https://webkit.org/b/162720> Arrow functions do not infer name from computed property but normal functions do
-// assert( ({["func"]: ()=>{}}).func.name === "func" );
-// assert( ({[funcName()]: ()=>{}}).func.name === "func" );
+assert( ({["func"]: ()=>{}}).func.name === "func" );
+assert( ({[funcName()]: ()=>{}}).func.name === "func" );
 
 assert( ({"klass": class{}}).klass.name === "klass" );
 assert( ({klass: class{}}).klass.name === "klass" );
index 9ddafb5..7db6bc8 100644 (file)
@@ -1,5 +1,16 @@
 2016-09-29  Joseph Pecoraro  <pecoraro@apple.com>
 
+        Arrow functions do not infer name from computed property but normal functions do
+        https://bugs.webkit.org/show_bug.cgi?id=162720
+
+        Reviewed by Saam Barati.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded):
+        Set function name on arrow functions as well.
+
+2016-09-29  Joseph Pecoraro  <pecoraro@apple.com>
+
         test262: class and function names should be inferred in assignment
         https://bugs.webkit.org/show_bug.cgi?id=146262
 
index cc71723..39119d4 100644 (file)
@@ -3044,8 +3044,8 @@ RegisterID* BytecodeGenerator::emitNewFunction(RegisterID* dst, FunctionMetadata
 
 void BytecodeGenerator::emitSetFunctionNameIfNeeded(ExpressionNode* valueNode, RegisterID* value, RegisterID* name)
 {
-    if (valueNode->isFuncExprNode()) {
-        FunctionMetadataNode* metadata = static_cast<FuncExprNode*>(valueNode)->metadata();
+    if (valueNode->isBaseFuncExprNode()) {
+        FunctionMetadataNode* metadata = static_cast<BaseFuncExprNode*>(valueNode)->metadata();
         if (!metadata->ecmaName().isNull())
             return;
     } else if (valueNode->isClassExprNode()) {