JintLogicalOrExpression.cs 845 B

123456789101112131415161718192021222324252627282930313233
  1. using Jint.Native;
  2. namespace Jint.Runtime.Interpreter.Expressions
  3. {
  4. internal sealed class JintLogicalOrExpression : JintExpression
  5. {
  6. private readonly JintExpression _left;
  7. private readonly JintExpression _right;
  8. public JintLogicalOrExpression(BinaryExpression expression) : base(expression)
  9. {
  10. _left = Build(expression.Left);
  11. _right = Build(expression.Right);
  12. }
  13. protected override object EvaluateInternal(EvaluationContext context)
  14. {
  15. var left = _left.GetValue(context);
  16. if (left is JsBoolean b && b._value)
  17. {
  18. return b;
  19. }
  20. if (TypeConverter.ToBoolean(left))
  21. {
  22. return left;
  23. }
  24. return _right.GetValue(context);
  25. }
  26. }
  27. }