Procházet zdrojové kódy

LibJS: Name functions created by "Function" "anonymous"

...as it is supposed to be.
Linus Groh před 5 roky
rodič
revize
ae05dc8abc

+ 1 - 1
Libraries/LibJS/Runtime/FunctionConstructor.cpp

@@ -66,7 +66,7 @@ Value FunctionConstructor::construct(Interpreter& interpreter)
         parameters_source = parameters_builder.build();
         body_source = interpreter.argument(interpreter.argument_count() - 1).to_string();
     }
-    auto source = String::format("function (%s) { %s }", parameters_source.characters(), body_source.characters());
+    auto source = String::format("function anonymous(%s) { %s }", parameters_source.characters(), body_source.characters());
     auto parser = Parser(Lexer(source));
     auto function_expression = parser.parse_function_node<FunctionExpression>();
     if (parser.has_errors()) {

+ 4 - 0
Libraries/LibJS/Tests/Function.js

@@ -3,8 +3,10 @@ load("test-common.js");
 try {
     assert(Function.length === 1);
     assert(Function.prototype.length === 0);
+
     assert(typeof Function() === "function");
     assert(typeof new Function() === "function");
+
     assert(Function()() === undefined);
     assert(new Function()() === undefined);
     assert(Function("return 42")() === 42);
@@ -19,6 +21,8 @@ try {
     assert(new Function("return typeof Function()")() === "function");
     assert(new Function("x", "return function (y) { return x + y };")(1)(2) === 3);
 
+    assert(new Function().toString() === "function anonymous() {\n  ???\n}");
+
     console.log("PASS");
 } catch (e) {
     console.log("FAIL: " + e.message);