JintArrowFunctionExpression.cs 1019 B

1234567891011121314151617181920212223242526272829303132333435
  1. using Jint.Native;
  2. using Jint.Native.Function;
  3. namespace Jint.Runtime.Interpreter.Expressions;
  4. internal sealed class JintArrowFunctionExpression : JintExpression
  5. {
  6. private readonly JintFunctionDefinition _function;
  7. public JintArrowFunctionExpression(ArrowFunctionExpression function) : base(function)
  8. {
  9. _function = new JintFunctionDefinition(function);
  10. }
  11. protected override object EvaluateInternal(EvaluationContext context)
  12. {
  13. var engine = context.Engine;
  14. var env = engine.ExecutionContext.LexicalEnvironment;
  15. var privateEnv = engine.ExecutionContext.PrivateEnvironment;
  16. var closure = engine.Realm.Intrinsics.Function.OrdinaryFunctionCreate(
  17. engine.Realm.Intrinsics.Function.PrototypeObject,
  18. _function,
  19. FunctionThisMode.Lexical,
  20. env,
  21. privateEnv);
  22. if (_function.Name is null)
  23. {
  24. closure.SetFunctionName(JsString.Empty);
  25. }
  26. return closure;
  27. }
  28. }