JintSequenceExpression.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using Esprima.Ast;
  2. using Jint.Native;
  3. namespace Jint.Runtime.Interpreter.Expressions
  4. {
  5. internal sealed class JintSequenceExpression : JintExpression
  6. {
  7. private JintExpression[] _expressions = Array.Empty<JintExpression>();
  8. public JintSequenceExpression(SequenceExpression expression) : base(expression)
  9. {
  10. _initialized = false;
  11. }
  12. protected override void Initialize(EvaluationContext context)
  13. {
  14. var expression = (SequenceExpression) _expression;
  15. ref readonly var expressions = ref expression.Expressions;
  16. var temp = new JintExpression[expressions.Count];
  17. for (var i = 0; i < (uint) temp.Length; i++)
  18. {
  19. temp[i] = Build(expressions[i]);
  20. }
  21. _expressions = temp;
  22. }
  23. protected override object EvaluateInternal(EvaluationContext context)
  24. {
  25. var result = JsValue.Undefined;
  26. foreach (var expression in _expressions)
  27. {
  28. result = expression.GetValue(context);
  29. }
  30. return result;
  31. }
  32. }
  33. }