JintImportDeclaration.cs 1.1 KB

1234567891011121314151617181920212223242526272829
  1. #nullable enable
  2. using Esprima.Ast;
  3. using Jint.Native.Promise;
  4. namespace Jint.Runtime.Interpreter.Statements;
  5. internal sealed class JintImportDeclaration : JintStatement<ImportDeclaration>
  6. {
  7. public JintImportDeclaration(ImportDeclaration statement) : base(statement)
  8. {
  9. }
  10. protected override void Initialize(EvaluationContext context)
  11. {
  12. }
  13. protected override Completion ExecuteInternal(EvaluationContext context)
  14. {
  15. var module = context.Engine.GetActiveScriptOrModule().AsModule(context.Engine, context.LastSyntaxNode.Location);
  16. var specifier = _statement.Source.StringValue;
  17. var promiseCapability = PromiseConstructor.NewPromiseCapability(context.Engine, context.Engine.Realm.Intrinsics.Promise);
  18. var specifierString = TypeConverter.ToString(specifier);
  19. // TODO: This comment was in @lahma's code: 6.IfAbruptRejectPromise(specifierString, promiseCapability);
  20. context.Engine._host.ImportModuleDynamically(module, specifierString, promiseCapability);
  21. return NormalCompletion(promiseCapability.PromiseInstance);
  22. }
  23. }