1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using Jint.Native;
- namespace Jint.Runtime.Interpreter.Expressions
- {
- internal sealed class JintSequenceExpression : JintExpression
- {
- private JintExpression[] _expressions = Array.Empty<JintExpression>();
- private bool _initialized;
- public JintSequenceExpression(SequenceExpression expression) : base(expression)
- {
- }
- private void Initialize()
- {
- var expression = (SequenceExpression) _expression;
- ref readonly var expressions = ref expression.Expressions;
- var temp = new JintExpression[expressions.Count];
- for (var i = 0; i < (uint) temp.Length; i++)
- {
- temp[i] = Build(expressions[i]);
- }
- _expressions = temp;
- }
- protected override object EvaluateInternal(EvaluationContext context)
- {
- if (!_initialized)
- {
- Initialize();
- _initialized = true;
- }
-
- var result = JsValue.Undefined;
- foreach (var expression in _expressions)
- {
- result = expression.GetValue(context);
- }
- return result;
- }
- }
- }
|