From 67efca8be6756422dd0a7a05807e6cbe458a1c1f Mon Sep 17 00:00:00 2001 From: yangguo Date: Thu, 30 Jul 2015 02:21:16 -0700 Subject: [PATCH] Add test for referring function name for classes. R=mvstanton@chromium.org BUG=v8:4333 LOG=N Review URL: https://codereview.chromium.org/1264603002 Cr-Commit-Position: refs/heads/master@{#29922} --- test/cctest/cctest.status | 4 ++++ test/cctest/test-func-name-inference.cc | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status index c1f4d23..611c0cd 100644 --- a/test/cctest/cctest.status +++ b/test/cctest/cctest.status @@ -100,6 +100,10 @@ # BUG(2340). Preprocessing stack traces is disabled at the moment. 'test-heap/PreprocessStackTrace': [FAIL], + # BUG(4333). Function name inferrer does not work for ES6 clases. + 'test-func-name-inference/UpperCaseClass': [FAIL], + 'test-func-name-inference/LowerCaseClass': [FAIL], + ############################################################################## # TurboFan compiler failures. diff --git a/test/cctest/test-func-name-inference.cc b/test/cctest/test-func-name-inference.cc index e423c0f..d01a938 100644 --- a/test/cctest/test-func-name-inference.cc +++ b/test/cctest/test-func-name-inference.cc @@ -87,6 +87,8 @@ static void CheckFunctionName(v8::Handle script, // Verify inferred function name. SmartArrayPointer inferred_name = shared_func_info->inferred_name()->ToCString(); + i::PrintF("expected: %s, found: %s\n", ref_inferred_name, + inferred_name.get()); CHECK_EQ(0, strcmp(ref_inferred_name, inferred_name.get())); } @@ -222,6 +224,44 @@ TEST(ObjectLiteral) { } +TEST(UpperCaseClass) { + CcTest::InitializeVM(); + v8::HandleScope scope(CcTest::isolate()); + + v8::Handle script = Compile(CcTest::isolate(), + "'use strict';\n" + "class MyClass {\n" + " constructor() {\n" + " this.value = 1;\n" + " }\n" + " method() {\n" + " this.value = 2;\n" + " }\n" + "}"); + CheckFunctionName(script, "this.value = 1", "MyClass"); + CheckFunctionName(script, "this.value = 2", "MyClass.method"); +} + + +TEST(LowerCaseClass) { + CcTest::InitializeVM(); + v8::HandleScope scope(CcTest::isolate()); + + v8::Handle script = Compile(CcTest::isolate(), + "'use strict';\n" + "class myclass {\n" + " constructor() {\n" + " this.value = 1;\n" + " }\n" + " method() {\n" + " this.value = 2;\n" + " }\n" + "}"); + CheckFunctionName(script, "this.value = 1", "myclass"); + CheckFunctionName(script, "this.value = 2", "myclass.method"); +} + + TEST(AsParameter) { CcTest::InitializeVM(); v8::HandleScope scope(CcTest::isolate()); -- 2.7.4