JintThrowStatement.cs 863 B

1234567891011121314151617181920212223242526272829
  1. using Esprima.Ast;
  2. using Jint.Runtime.Interpreter.Expressions;
  3. namespace Jint.Runtime.Interpreter.Statements
  4. {
  5. /// <summary>
  6. /// http://www.ecma-international.org/ecma-262/5.1/#sec-12.13
  7. /// </summary>
  8. internal sealed class JintThrowStatement : JintStatement<ThrowStatement>
  9. {
  10. private JintExpression _argument;
  11. public JintThrowStatement(Engine engine, ThrowStatement statement) : base(engine, statement)
  12. {
  13. _initialized = false;
  14. }
  15. protected override void Initialize()
  16. {
  17. _argument = JintExpression.Build(_engine, _statement.Argument);
  18. }
  19. protected override Completion ExecuteInternal()
  20. {
  21. var jsValue = _argument.GetValue();
  22. return new Completion(CompletionType.Throw, jsValue, null, _statement.Location);
  23. }
  24. }
  25. }