JintExpressionStatement.cs 1018 B

1234567891011121314151617181920212223242526272829303132
  1. using Esprima.Ast;
  2. using Jint.Runtime.Interpreter.Expressions;
  3. using Jint.Runtime.References;
  4. namespace Jint.Runtime.Interpreter.Statements
  5. {
  6. internal sealed class JintExpressionStatement : JintStatement<ExpressionStatement>
  7. {
  8. private JintExpression _expression = null!;
  9. public JintExpressionStatement(ExpressionStatement statement) : base(statement)
  10. {
  11. }
  12. protected override void Initialize(EvaluationContext context)
  13. {
  14. _expression = JintExpression.Build(context.Engine, _statement.Expression);
  15. }
  16. protected override Completion ExecuteInternal(EvaluationContext context)
  17. {
  18. var result = _expression.Evaluate(context);
  19. if (result.Type != ExpressionCompletionType.Reference)
  20. {
  21. return new Completion(result);
  22. }
  23. return new Completion(CompletionType.Normal, context.Engine.GetValue((Reference) result.Value, true), null, _statement);
  24. }
  25. }
  26. }