diff --git a/Userland/js.cpp b/Userland/js.cpp index 9cc0f6ab322..baf54a037fe 100644 --- a/Userland/js.cpp +++ b/Userland/js.cpp @@ -57,10 +57,22 @@ int main(int argc, char** argv) } auto file_contents = file->read_all(); + StringView source; + if (file_contents.size() >= 2 && file_contents[0] == '#' && file_contents[1] == '!') { + size_t i = 0; + for (i = 2; i < file_contents.size(); ++i) { + if (file_contents[i] == '\n') + break; + } + source = StringView((const char*)file_contents.data() + i, file_contents.size() - i); + } else { + source = file_contents; + } + JS::Interpreter interpreter; interpreter.heap().set_should_collect_on_every_allocation(gc_on_every_allocation); - auto program = JS::Parser(JS::Lexer(file_contents)).parse_program(); + auto program = JS::Parser(JS::Lexer(source)).parse_program(); if (dump_ast) program->dump(0);