JintExpressionStatement.cs 960 B

123456789101112131415161718192021222324252627282930
  1. using Jint.Runtime.Interpreter.Expressions;
  2. namespace Jint.Runtime.Interpreter.Statements;
  3. internal sealed class JintExpressionStatement : JintStatement<ExpressionStatement>
  4. {
  5. private JintExpression _expression = null!;
  6. // identifiers are queried the most
  7. private JintIdentifierExpression? _identifierExpression;
  8. public JintExpressionStatement(ExpressionStatement statement) : base(statement)
  9. {
  10. }
  11. protected override void Initialize(EvaluationContext context)
  12. {
  13. _expression = JintExpression.Build(_statement.Expression);
  14. _identifierExpression = _expression as JintIdentifierExpression;
  15. }
  16. protected override Completion ExecuteInternal(EvaluationContext context)
  17. {
  18. var value = _identifierExpression is not null
  19. ? _identifierExpression.GetValue(context)
  20. : _expression.GetValue(context);
  21. return new Completion(context.Completion, value, _statement);
  22. }
  23. }