diff options
Diffstat (limited to 'Userland/Libraries/LibJS/SourceTextModule.cpp')
-rw-r--r-- | Userland/Libraries/LibJS/SourceTextModule.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/SourceTextModule.cpp b/Userland/Libraries/LibJS/SourceTextModule.cpp new file mode 100644 index 0000000000..1e6235f132 --- /dev/null +++ b/Userland/Libraries/LibJS/SourceTextModule.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021, Andreas Kling <kling@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <LibJS/SourceTextModule.h> + +namespace JS { + +// 16.2.1.6.1 ParseModule ( sourceText, realm, hostDefined ), https://tc39.es/ecma262/#sec-parsemodule +Result<NonnullRefPtr<SourceTextModule>, Vector<Parser::Error>> SourceTextModule::parse(StringView source_text, Realm& realm, [[maybe_unused]] StringView filename) +{ + // 1. Let body be ParseText(sourceText, Module). + auto parser = Parser(Lexer(source_text, filename), Program::Type::Module); + auto body = parser.parse_program(); + + // 2. If body is a List of errors, return body. + if (parser.has_errors()) + return parser.errors(); + + // FIXME: Implement the rest of ParseModule. + return adopt_ref(*new SourceTextModule(realm, move(body))); +} + +SourceTextModule::SourceTextModule(Realm& realm, NonnullRefPtr<Program> program) + : Module(realm) + , m_ecmascript_code(move(program)) +{ +} + +SourceTextModule::~SourceTextModule() +{ +} + +} |