Index: test/cctest/interpreter/generate-bytecode-expectations.cc |
diff --git a/test/cctest/interpreter/generate-bytecode-expectations.cc b/test/cctest/interpreter/generate-bytecode-expectations.cc |
index ed1c692050ce3c0f792e2dae4c7dc25a912aa548..1adfc6a89966a50b755516dcd832645ddc73e193 100644 |
--- a/test/cctest/interpreter/generate-bytecode-expectations.cc |
+++ b/test/cctest/interpreter/generate-bytecode-expectations.cc |
@@ -40,6 +40,7 @@ class ProgramOptions final { |
read_from_stdin_(false), |
rebaseline_(false), |
wrap_(true), |
+ module_(false), |
top_level_(false), |
do_expressions_(false), |
verbose_(false) {} |
@@ -57,6 +58,7 @@ class ProgramOptions final { |
} |
bool rebaseline() const { return rebaseline_; } |
bool wrap() const { return wrap_; } |
+ bool module() const { return module_; } |
bool top_level() const { return top_level_; } |
bool do_expressions() const { return do_expressions_; } |
bool verbose() const { return verbose_; } |
@@ -72,6 +74,7 @@ class ProgramOptions final { |
bool read_from_stdin_; |
bool rebaseline_; |
bool wrap_; |
+ bool module_; |
bool top_level_; |
bool do_expressions_; |
bool verbose_; |
@@ -157,6 +160,8 @@ ProgramOptions ProgramOptions::FromCommandLine(int argc, char** argv) { |
options.rebaseline_ = true; |
} else if (strcmp(argv[i], "--no-wrap") == 0) { |
options.wrap_ = false; |
+ } else if (strcmp(argv[i], "--module") == 0) { |
+ options.module_ = true; |
} else if (strcmp(argv[i], "--top-level") == 0) { |
options.top_level_ = true; |
} else if (strcmp(argv[i], "--do-expressions") == 0) { |
@@ -235,6 +240,12 @@ bool ProgramOptions::Validate() const { |
return false; |
} |
+ if (module_ && (!top_level_ || wrap_)) { |
+ REPORT_ERROR( |
+ "The flag --module currently requires --top-level and --no-wrap."); |
+ return false; |
+ } |
+ |
return true; |
} |
@@ -247,7 +258,9 @@ void ProgramOptions::UpdateFromHeader(std::istream& stream) { |
} |
while (std::getline(stream, line)) { |
- if (line.compare(0, 6, "wrap: ") == 0) { |
+ if (line.compare(0, 8, "module: ") == 0) { |
+ module_ = ParseBoolean(line.c_str() + 8); |
+ } else if (line.compare(0, 6, "wrap: ") == 0) { |
wrap_ = ParseBoolean(line.c_str() + 6); |
} else if (line.compare(0, 20, "test function name: ") == 0) { |
test_function_name_ = line.c_str() + 20; |
@@ -274,6 +287,7 @@ void ProgramOptions::PrintHeader(std::ostream& stream) const { // NOLINT |
stream << "\ntest function name: " << test_function_name_; |
} |
+ if (module_) stream << "\nmodule: yes"; |
if (top_level_) stream << "\ntop level: yes"; |
if (do_expressions_) stream << "\ndo expressions: yes"; |
@@ -373,6 +387,7 @@ void GenerateExpectationsFile(std::ostream& stream, // NOLINT |
BytecodeExpectationsPrinter printer(platform.isolate()); |
printer.set_wrap(options.wrap()); |
+ printer.set_module(options.module()); |
printer.set_top_level(options.top_level()); |
if (!options.test_function_name().empty()) { |
printer.set_test_function_name(options.test_function_name()); |
@@ -426,6 +441,7 @@ void PrintUsage(const char* exec_path) { |
" --stdin Read from standard input instead of file.\n" |
" --rebaseline Rebaseline input snippet file.\n" |
" --no-wrap Do not wrap the snippet in a function.\n" |
+ " --module Compile as JavaScript module.\n" |
" --test-function-name=foo " |
"Specify the name of the test function.\n" |
" --top-level Process top level code, not the top-level function.\n" |