JintSequenceExpression.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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;
  8. public JintSequenceExpression(Engine engine, SequenceExpression expression) : base(engine, expression)
  9. {
  10. _initialized = false;
  11. }
  12. protected override void Initialize()
  13. {
  14. var expression = (SequenceExpression) _expression;
  15. _expressions = new JintExpression[expression.Expressions.Count];
  16. for (var i = 0; i < expression.Expressions.Count; i++)
  17. {
  18. _expressions[i] = Build(_engine, expression.Expressions[i]);
  19. }
  20. }
  21. protected override object EvaluateInternal()
  22. {
  23. var result = Undefined.Instance;
  24. var expressions = _expressions;
  25. for (var i = 0; i < (uint) expressions.Length; i++)
  26. {
  27. var expression = expressions[i];
  28. result = expression.GetValue();
  29. }
  30. return result;
  31. }
  32. }
  33. }