Implement runtime part of dynamic-import

* Implement one of parsing error of module
* Fix one of stack usage error on FunctionObjectInlines

Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
This commit is contained in:
Seonghyun Kim 2020-07-27 17:13:41 +09:00 committed by Boram Bae
commit ba4763e888
12 changed files with 181 additions and 347 deletions

View file

@ -40,6 +40,7 @@
#include "runtime/NumberObject.h"
#include "runtime/BooleanObject.h"
#include "runtime/RegExpObject.h"
#include "runtime/ModuleNamespaceObject.h"
#include "runtime/Job.h"
#include "runtime/JobQueue.h"
#include "runtime/PromiseObject.h"
@ -596,6 +597,11 @@ public:
}
}
virtual void hostImportModuleDynamically(Context* relatedContext, Script* referrer, String* src, PromiseObject* promise) override
{
m_platform->hostImportModuleDynamically(toRef(relatedContext), toRef(referrer), toRef(src), toRef(promise));
}
PlatformRef* m_platform;
};
@ -2858,6 +2864,21 @@ StringRef* ScriptRef::moduleRequest(size_t i)
return toRef(toImpl(this)->moduleRequest(i));
}
ObjectRef* ScriptRef::moduleNamespace(ExecutionStateRef* state)
{
return toRef(toImpl(this)->getModuleNamespace(*toImpl(state))->asObject());
}
bool ScriptRef::wasThereErrorOnModuleEvaluation()
{
return toImpl(this)->wasThereErrorOnModuleEvaluation();
}
ValueRef* ScriptRef::moduleEvaluationError()
{
return toRef(toImpl(this)->moduleEvaluationError());
}
PlatformRef::LoadModuleResult::LoadModuleResult(ScriptRef* result)
: script(result)
, errorMessage(StringRef::emptyString())

View file

@ -1601,8 +1601,12 @@ public:
StringRef* sourceCode();
ValueRef* execute(ExecutionStateRef* state);
// only module can use these functions
size_t moduleRequestsLength();
StringRef* moduleRequest(size_t i);
ObjectRef* moduleNamespace(ExecutionStateRef* state);
bool wasThereErrorOnModuleEvaluation();
ValueRef* moduleEvaluationError();
};
class ESCARGOT_EXPORT PlatformRef {
@ -1635,6 +1639,9 @@ public:
};
virtual LoadModuleResult onLoadModule(ContextRef* relatedContext, ScriptRef* whereRequestFrom, StringRef* moduleSrc) = 0;
virtual void didLoadModule(ContextRef* relatedContext, OptionalRef<ScriptRef> whereRequestFrom, ScriptRef* loadedModule) = 0;
// Dynamic Import
virtual void hostImportModuleDynamically(ContextRef* relatedContext, ScriptRef* referrer, StringRef* src, PromiseObjectRef* promise) = 0;
};
} // namespace Escargot

View file

@ -2903,6 +2903,10 @@ NEVER_INLINE void ByteCodeInterpreter::callFunctionComplexCase(ExecutionState& s
// Let referencingScriptOrModule be ! GetActiveScriptOrModule().
Script* referencingScriptOrModule = byteCodeBlock->m_codeBlock->script();
while (referencingScriptOrModule->topCodeBlock()->isEvalCode() || referencingScriptOrModule->topCodeBlock()->isEvalCodeInFunction()) {
referencingScriptOrModule = referencingScriptOrModule->topCodeBlock()->parent()->script();
}
// Let argRef be the result of evaluating AssignmentExpression.
// Let specifier be ? GetValue(argRef).
const Value& specifier = registerFile[code->m_argumentsStartIndex];
@ -2923,6 +2927,8 @@ NEVER_INLINE void ByteCodeInterpreter::callFunctionComplexCase(ExecutionState& s
break;
}
// Perform ! HostImportModuleDynamically(referencingScriptOrModule, specifierString, promiseCapability).
state.context()->vmInstance()->platform()->hostImportModuleDynamically(byteCodeBlock->m_codeBlock->context(),
referencingScriptOrModule, specifierString, promiseCapability.m_promise->asPromiseObject());
// Return promiseCapability.[[Promise]].
registerFile[code->m_resultIndex] = promiseCapability.m_promise;
break;

View file

@ -37,9 +37,22 @@ namespace Escargot {
bool Script::isExecuted()
{
if (isModule()) {
return m_moduleData->m_status != ModuleData::ModuleStatus::Uninstantiated;
}
return m_topCodeBlock->byteCodeBlock() == nullptr;
}
bool Script::wasThereErrorOnModuleEvaluation()
{
return m_moduleData && m_moduleData->m_hasEvaluationError;
}
Value Script::moduleEvaluationError()
{
return m_moduleData ? Value(m_moduleData->m_evaluationError) : Value();
}
Context* Script::context()
{
return m_topCodeBlock->context();
@ -687,6 +700,7 @@ Script::ModuleExecutionResult Script::moduleEvaluate(ExecutionState& state)
// Assert: module.[[Status]] is "evaluated" and module.[[EvaluationError]] is result.
stack[i]->moduleData()->m_status = ModuleData::Evaluated;
stack[i]->moduleData()->m_evaluationError = result.value;
stack[i]->moduleData()->m_hasEvaluationError = true;
}
// Return result.
return result;

View file

@ -99,6 +99,7 @@ public:
// [[Status]]
ModuleStatus m_status;
// [[EvaluationError]]
bool m_hasEvaluationError;
EncodedValue m_evaluationError;
// [[DFSIndex]]
Optional<uint32_t> m_dfsIndex;
@ -113,6 +114,7 @@ public:
: m_didCallLoadedCallback(false)
, m_moduleRecord(nullptr)
, m_status(Uninstantiated)
, m_hasEvaluationError(false)
{
}
};
@ -149,10 +151,15 @@ public:
String* moduleRequest(size_t i);
bool isExecuted();
bool wasThereErrorOnModuleEvaluation();
Value moduleEvaluationError();
// https://www.ecma-international.org/ecma-262/#sec-meta-properties-runtime-semantics-evaluation
Object* importMetaProperty(ExecutionState& state);
// https://www.ecma-international.org/ecma-262/#sec-getmodulenamespace
ModuleNamespaceObject* getModuleNamespace(ExecutionState& state);
#if defined(ENABLE_CODE_CACHE)
void setCodeCacheMetaInfo(CodeCacheMetaInfoMap* map)
{
@ -243,9 +250,6 @@ private:
// returns gotExecption and Value
ModuleExecutionResult moduleExecute(ExecutionState& state);
// https://www.ecma-international.org/ecma-262/#sec-getmodulenamespace
ModuleNamespaceObject* getModuleNamespace(ExecutionState& state);
bool m_canExecuteAgain;
String* m_src;
String* m_sourceCode;

View file

@ -0,0 +1,64 @@
/*
* Copyright (c) 2020-present Samsung Electronics Co., Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*/
#ifndef ImportCallNode_h
#define ImportCallNode_h
#include "ExpressionNode.h"
namespace Escargot {
class ImportCallNode : public ExpressionNode {
public:
ImportCallNode(Node* expr)
: ExpressionNode()
, m_expr(expr)
{
}
virtual ASTNodeType type() override { return ASTNodeType::ImportCall; }
virtual void generateExpressionByteCode(ByteCodeBlock* codeBlock, ByteCodeGenerateContext* context, ByteCodeRegisterIndex dstRegister) override
{
ByteCodeRegisterIndex reg = context->getRegister();
m_expr->generateExpressionByteCode(codeBlock, context, reg);
codeBlock->pushCode(CallFunctionComplexCase(ByteCodeLOC(m_loc.index), CallFunctionComplexCase::Import, false, false, false,
SIZE_MAX, SIZE_MAX, reg, dstRegister, 1),
context, this);
context->giveUpRegister();
}
virtual void iterateChildrenIdentifier(const std::function<void(AtomicString name, bool isAssignment)>& fn) override
{
m_expr->iterateChildrenIdentifier(fn);
}
virtual void iterateChildren(const std::function<void(Node* node)>& fn) override
{
fn(this);
m_expr->iterateChildren(fn);
}
private:
Node* m_expr;
};
}
#endif

View file

@ -4742,7 +4742,7 @@ public:
// https://www.ecma-international.org/ecma-262/10.0/#sec-web-compat-functiondeclarationinstantiation
bool isTopScope = (!this->lexicalBlockIndex || this->currentScopeContext->m_functionBodyBlockIndex == this->lexicalBlockIndex);
if (this->context->strict) {
if (isTopScope) {
if (isTopScope && UNLIKELY(this->sourceType != SourceType::Module)) {
addDeclaredNameIntoContext(fnName, this->lexicalBlockIndex, KeywordKind::VarKeyword);
} else {
addDeclaredNameIntoContext(fnName, this->lexicalBlockIndex, KeywordKind::LetKeyword);
@ -5240,6 +5240,7 @@ public:
case KeywordKind::TypeofKeyword:
case KeywordKind::VoidKeyword:
case KeywordKind::YieldKeyword:
case KeywordKind::ImportKeyword:
start = true;
break;
default:
@ -5825,7 +5826,7 @@ public:
entry.m_exportName = this->escargotContext->staticStrings().stringDefault;
AtomicString fnName = declaration->asFunctionDeclaration()->functionName();
entry.m_localName = fnName.string()->length() ? fnName : this->escargotContext->staticStrings().stringStarDefaultStar;
addDeclaredNameIntoContext(entry.m_localName.value(), this->lexicalBlockIndex, KeywordKind::VarKeyword);
// addDeclaredNameIntoContext(entry.m_localName.value(), this->lexicalBlockIndex, KeywordKind::LetKeyword);
checkDuplicateExportName(this->moduleData->m_localExportEntries, entry.m_exportName.value());
addExportDeclarationEntry(entry);
exportDeclaration = this->finalize(node, builder.createExportDefaultDeclarationNode(declaration, entry.m_exportName.value(), entry.m_localName.value()));

View file

@ -125,7 +125,7 @@ public:
if (LIKELY(codeBlock->canAllocateEnvironmentOnStack())) {
// no capture, very simple case
record = new (alloca(sizeof(FunctionEnvironmentRecord))) FunctionEnvironmentRecordOnStack<canBindThisValueOnEnvironment, hasNewTargetOnEnvironment>(self);
record = new (alloca(sizeof(FunctionEnvironmentRecordOnStack<canBindThisValueOnEnvironment, hasNewTargetOnEnvironment>))) FunctionEnvironmentRecordOnStack<canBindThisValueOnEnvironment, hasNewTargetOnEnvironment>(self);
lexEnv = new (alloca(sizeof(LexicalEnvironment))) LexicalEnvironment(record, self->outerEnvironment()
#ifndef NDEBUG
,

View file

@ -25,6 +25,7 @@
namespace Escargot {
class ArrayBufferObject;
class PromiseObject;
class Context;
class Job;
@ -46,6 +47,7 @@ public:
};
virtual LoadModuleResult onLoadModule(Context* relatedContext, Script* whereRequestFrom, String* moduleSrc) = 0;
virtual void didLoadModule(Context* relatedContext, Optional<Script*> whereRequestFrom, Script* loadedModule) = 0;
virtual void hostImportModuleDynamically(Context* relatedContext, Script* referrer, String* src, PromiseObject* promise) = 0;
};
}

View file

@ -530,6 +530,37 @@ public:
}
loadedModules.push_back(std::make_tuple(path, relatedContext, PersistentRefHolder<ScriptRef>(loadedModule)));
}
virtual void hostImportModuleDynamically(ContextRef* relatedContext, ScriptRef* referrer, StringRef* src, PromiseObjectRef* promise) override
{
LoadModuleResult loadedModuleResult = onLoadModule(relatedContext, referrer, src);
Evaluator::EvaluatorResult executionResult = Evaluator::execute(relatedContext, [](ExecutionStateRef* state, LoadModuleResult loadedModuleResult, PromiseObjectRef* promise) -> ValueRef* {
if (loadedModuleResult.script) {
if (loadedModuleResult.script.value()->isExecuted()) {
if (loadedModuleResult.script.value()->wasThereErrorOnModuleEvaluation()) {
state->throwException(loadedModuleResult.script.value()->moduleEvaluationError());
}
} else {
loadedModuleResult.script.value()->execute(state);
}
} else {
state->throwException(ErrorObjectRef::create(state, loadedModuleResult.errorCode, loadedModuleResult.errorMessage));
}
return loadedModuleResult.script.value()->moduleNamespace(state);
},
loadedModuleResult, promise);
Evaluator::execute(relatedContext, [](ExecutionStateRef* state, bool isSuccessful, ValueRef* value, PromiseObjectRef* promise) -> ValueRef* {
if (isSuccessful) {
promise->fulfill(state, value);
} else {
promise->reject(state, value);
}
return ValueRef::createUndefined();
},
executionResult.isSuccessful(), executionResult.isSuccessful() ? executionResult.result : executionResult.error.value(), promise);
}
};
static bool evalScript(ContextRef* context, StringRef* str, StringRef* fileName, bool shouldPrintScriptResult, bool isModule)

View file

@ -298,6 +298,31 @@ public:
}
loadedModules.push_back(std::make_tuple(path, relatedContext, PersistentRefHolder<ScriptRef>(loadedModule)));
}
virtual void hostImportModuleDynamically(ContextRef* relatedContext, ScriptRef* referrer, StringRef* src, PromiseObjectRef* promise) override
{
LoadModuleResult loadedModuleResult = onLoadModule(relatedContext, referrer, src);
Evaluator::EvaluatorResult executionResult = Evaluator::execute(relatedContext, [](ExecutionStateRef* state, LoadModuleResult loadedModuleResult, PromiseObjectRef* promise) -> ValueRef* {
if (loadedModuleResult.script) {
if (!loadedModuleResult.script.value()->isExecuted()) {
loadedModuleResult.script.value()->execute(state);
}
} else {
state->throwException(ErrorObjectRef::create(state, loadedModuleResult.errorCode, loadedModuleResult.errorMessage));
}
return loadedModuleResult.script.value()->moduleNamespace(state);
}, loadedModuleResult, promise);
Evaluator::execute(relatedContext, [](ExecutionStateRef* state, bool isSuccessful, ValueRef* value, PromiseObjectRef* promise) -> ValueRef* {
if (isSuccessful) {
promise->reject(state, value);
} else {
promise->fulfill(state, value);
}
return ValueRef::createUndefined();
}, executionResult.isSuccessful(), executionResult.isSuccessful() ? executionResult.result : executionResult.error.value(), promise);
}
};
PersistentRefHolder<VMInstanceRef> g_instance;

View file

@ -4170,345 +4170,6 @@
<test id="language/expressions/does-not-equals/bigint-and-number-extremes"><reason>TODO</reason></test>
<test id="language/expressions/does-not-equals/bigint-and-object"><reason>TODO</reason></test>
<test id="language/expressions/does-not-equals/bigint-and-string"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/additive-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/array-literal"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/arrow-function"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/await-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/await-identifier"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/call-expr-arguments"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/call-expr-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/call-expr-identifier"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/cover-call-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/cover-parenthesized-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/identifier"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/import-meta"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/lhs-assign-operator-assign-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/lhs-eq-assign-expr-nostrict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/logical-and-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/logical-or-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/member-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/new-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/object-literal"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/tagged-function-call"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/ternary"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/this"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/yield-assign-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/yield-expr"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/assignment-expression/yield-identifier"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/await-import-evaluation"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-arrow-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-arrow-function-return-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-return-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-function-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-async-gen-return-await-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-block-labeled-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-do-while-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-else-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-function-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-if-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/nested-while-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-typeerror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-eval-rqstd-abrupt-urierror"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-eval-script-code-target"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-file-does-not-exist"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-ambiguous-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-instn-iee-err-circular"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/catch/top-level-import-catch-specifier-tostring-abrupt-rejects"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/custom-primitive"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-cls-anon"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-cls-name-meth"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-cls-named"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-cls-anon"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-cls-name-meth"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-cls-named"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-fn-anon"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-fn-named"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-gen-anon"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-gen-named"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-export-dflt-expr-in"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-rqstd-once"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-self-once-module"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/eval-self-once-script"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/for-await-resolution-and-error"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/for-await-resolution-and-error-agen"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/for-await-resolution-and-error-agen-yield"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/imported-self-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/indirect-resolution"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-Symbol-toStringTag"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-define-own-property"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-delete-exported-init-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-delete-non-exported-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-extensible"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-direct"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-dflt-indirect"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-nested-namespace-props-nrml"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-found-init"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-own-property-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-own-property-sym"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-str-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-sym-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-get-sym-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-has-property-str-found-init"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-has-property-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-has-property-sym-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-has-property-sym-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-no-iterator"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-object"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-prevent-extensions-reflect"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-prop-descs"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-prototype"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-prototype-of"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-prototype-of-null"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-same-values-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-same-values-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/await-ns-set-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/default-property-not-set-own"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-Symbol-toStringTag"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-define-own-property"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-delete-exported-init-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-delete-non-exported-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-extensible"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-direct"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-dflt-indirect"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-nested-namespace-props-nrml"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-found-init"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-own-property-sym"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-str-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-get-sym-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-found-init"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-has-property-str-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-has-property-sym-not-found"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-no-iterator"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-object"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-prevent-extensions-reflect"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-prop-descs"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-prototype"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-prototype-of-null"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-no-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-same-values-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/namespace/promise-then-ns-set-strict"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/reuse-namespace-object"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/reuse-namespace-object-from-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/reuse-namespace-object-from-script"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/update-to-dynamic-import"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage-from-eval"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-assignment-expression-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-arrow-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-arrow-function-return-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-return-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-function-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-async-gen-return-await-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-block-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-do-while-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-else-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-function-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-braceless-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-if-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/nested-while-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/syntax-nested-block-labeled-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-eval-gtbndng-indirect-update-dflt"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-eval-script-code-host-resolves-module-code"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-is-call-expression-square-brackets"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-returns-thenable"><reason>TODO</reason></test>
<test id="language/expressions/dynamic-import/usage/top-level-import-then-specifier-tostring"><reason>TODO</reason></test>
<test id="language/expressions/equals/bigint-and-bigint"><reason>TODO</reason></test>
<test id="language/expressions/equals/bigint-and-boolean"><reason>TODO</reason></test>
<test id="language/expressions/equals/bigint-and-incomparable-primitive"><reason>TODO</reason></test>
@ -4866,8 +4527,6 @@
<test id="language/module-code/early-import-eval"><reason>TODO</reason></test>
<test id="language/module-code/eval-rqstd-once"><reason>TODO</reason></test>
<test id="language/module-code/export-star-as-dflt"><reason>TODO</reason></test>
<test id="language/module-code/parse-err-hoist-lex-fun"><reason>TODO</reason></test>
<test id="language/module-code/parse-err-hoist-lex-gen"><reason>TODO</reason></test>
<test id="language/module-code/privatename-valid-no-earlyerr"><reason>TODO</reason></test>
<test id="language/module-code/top-level-await/await-awaits-thenable-not-callable"><reason>TODO</reason></test>
<test id="language/module-code/top-level-await/await-awaits-thenables"><reason>TODO</reason></test>