diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc index a20afd61fb10..8e93a5329479 100644 --- a/src/parsing/parser.cc +++ b/src/parsing/parser.cc @@ -3622,6 +3622,7 @@ Expression* Parser::RewriteClassLiteral(const AstRawString* name, } do_block->set_scope(scope()->FinalizeBlockScope()); do_expr->set_represented_function(class_info->constructor); + AddFunctionForNameInference(class_info->constructor); return do_expr; } diff --git a/test/cctest/test-func-name-inference.cc b/test/cctest/test-func-name-inference.cc index 4b16c031d9bc..8c43bbfa54e2 100644 --- a/test/cctest/test-func-name-inference.cc +++ b/test/cctest/test-func-name-inference.cc @@ -141,6 +141,19 @@ TEST(LocalVar) { CheckFunctionName(script, "return 2", "fun2"); } +TEST(ObjectProperty) { + CcTest::InitializeVM(); + v8::HandleScope scope(CcTest::isolate()); + + v8::Local script = + Compile(CcTest::isolate(), + "var obj = {\n" + " fun1: function() { return 1; },\n" + " fun2: class { constructor() { return 2; } }\n" + "}"); + CheckFunctionName(script, "return 1", "obj.fun1"); + CheckFunctionName(script, "return 2", "obj.fun2"); +} TEST(InConstructor) { CcTest::InitializeVM();