JintReturnStatement.cs 875 B

123456789101112131415161718192021222324252627
  1. using Esprima.Ast;
  2. using Jint.Native;
  3. using Jint.Runtime.Interpreter.Expressions;
  4. namespace Jint.Runtime.Interpreter.Statements
  5. {
  6. /// <summary>
  7. /// http://www.ecma-international.org/ecma-262/5.1/#sec-12.9
  8. /// </summary>
  9. internal sealed class JintReturnStatement : JintStatement<ReturnStatement>
  10. {
  11. private readonly JintExpression _argument;
  12. public JintReturnStatement(Engine engine, ReturnStatement statement) : base(engine, statement)
  13. {
  14. _argument = _statement.Argument != null
  15. ? JintExpression.Build(engine, _statement.Argument)
  16. : null;
  17. }
  18. protected override Completion ExecuteInternal()
  19. {
  20. var jsValue = _argument?.GetValue() ?? Undefined.Instance;
  21. return new Completion(CompletionType.Return, jsValue, null, Location);
  22. }
  23. }
  24. }