| Index: test/cctest/test-parsing.cc
|
| diff --git a/test/cctest/test-parsing.cc b/test/cctest/test-parsing.cc
|
| index c4846633381d9488c5e6d62bf2c708844a2eed71..858354dc836e3b087004b8cedefe28fa783a3fb3 100644
|
| --- a/test/cctest/test-parsing.cc
|
| +++ b/test/cctest/test-parsing.cc
|
| @@ -31,6 +31,7 @@
|
|
|
| #include "src/v8.h"
|
|
|
| +#include "src/ast-value-factory.h"
|
| #include "src/compiler.h"
|
| #include "src/execution.h"
|
| #include "src/isolate.h"
|
| @@ -796,8 +797,12 @@ void TestScanRegExp(const char* re_source, const char* expected) {
|
| CHECK(start == i::Token::DIV || start == i::Token::ASSIGN_DIV);
|
| CHECK(scanner.ScanRegExpPattern(start == i::Token::ASSIGN_DIV));
|
| scanner.Next(); // Current token is now the regexp literal.
|
| + i::Zone zone(CcTest::i_isolate());
|
| + i::AstValueFactory ast_value_factory(&zone,
|
| + CcTest::i_isolate()->heap()->HashSeed());
|
| + ast_value_factory.Internalize(CcTest::i_isolate());
|
| i::Handle<i::String> val =
|
| - scanner.AllocateInternalizedString(CcTest::i_isolate());
|
| + scanner.CurrentSymbol(&ast_value_factory)->string();
|
| i::DisallowHeapAllocation no_alloc;
|
| i::String::FlatContent content = val->GetFlatContent();
|
| CHECK(content.IsAscii());
|
| @@ -2587,3 +2592,20 @@ TEST(FuncNameInferrerEscaped) {
|
| i::DeleteArray(two_byte_source);
|
| i::DeleteArray(two_byte_name);
|
| }
|
| +
|
| +
|
| +TEST(RegressionLazyFunctionWithErrorWithArg) {
|
| + // The bug occurred when a lazy function had an error which requires a
|
| + // parameter (such as "unknown label" here). The error message was processed
|
| + // before the AstValueFactory containing the error message string was
|
| + // internalized.
|
| + v8::Isolate* isolate = CcTest::isolate();
|
| + v8::HandleScope scope(isolate);
|
| + LocalContext env;
|
| + i::FLAG_lazy = true;
|
| + i::FLAG_min_preparse_length = 0;
|
| + CompileRun("function this_is_lazy() {\n"
|
| + " break p;\n"
|
| + "}\n"
|
| + "this_is_lazy();\n");
|
| +}
|
|
|