JintLogicalOrExpression.cs 751 B

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