JintConditionalExpression.cs 836 B

12345678910111213141516171819202122232425
  1. using Esprima.Ast;
  2. namespace Jint.Runtime.Interpreter.Expressions
  3. {
  4. internal sealed class JintConditionalExpression : JintExpression
  5. {
  6. private readonly JintExpression _test;
  7. private readonly JintExpression _consequent;
  8. private readonly JintExpression _alternate;
  9. public JintConditionalExpression(Engine engine, ConditionalExpression expression) : base(engine, expression)
  10. {
  11. _test = Build(engine, expression.Test);
  12. _consequent = Build(engine, expression.Consequent);
  13. _alternate = Build(engine, expression.Alternate);
  14. }
  15. protected override object EvaluateInternal()
  16. {
  17. return TypeConverter.ToBoolean(_test.GetValue())
  18. ? _consequent.GetValue()
  19. : _alternate.GetValue();
  20. }
  21. }
  22. }