LibJS: Let JS::Script remember whether its code is strict mode

We don't want to rely on having the AST node just to answer the question
"is this script strict mode?"
This commit is contained in:
Andreas Kling 2025-10-26 12:33:54 +01:00 committed by Andreas Kling
parent b712caf855
commit 892c7d980e
Notes: github-actions[bot] 2025-10-27 20:15:42 +00:00
3 changed files with 11 additions and 4 deletions

View file

@ -25,15 +25,18 @@ Result<GC::Ref<Script>, Vector<ParserError>> Script::parse(StringView source_tex
if (parser.has_errors())
return parser.errors();
bool strict_mode = script->is_strict_mode();
// 3. Return Script Record { [[Realm]]: realm, [[ECMAScriptCode]]: script, [[HostDefined]]: hostDefined }.
return realm.heap().allocate<Script>(realm, filename, move(script), host_defined);
return realm.heap().allocate<Script>(realm, filename, move(script), host_defined, strict_mode);
}
Script::Script(Realm& realm, StringView filename, NonnullRefPtr<Program> parse_node, HostDefined* host_defined)
Script::Script(Realm& realm, StringView filename, NonnullRefPtr<Program> parse_node, HostDefined* host_defined, bool strict_mode)
: m_realm(realm)
, m_parse_node(move(parse_node))
, m_filename(filename)
, m_host_defined(host_defined)
, m_strict_mode(strict_mode)
{
}