visitConditionalExpression method

  1. @override
Object? visitConditionalExpression(
  1. SConditionalExpression node
)
override

Implementation

@override
Object? visitConditionalExpression(SConditionalExpression node) {
  final conditionValue = node.condition!.accept<Object?>(this);
  bool conditionResult;
  final bridgedInstance = toBridgedInstance(conditionValue);
  if (conditionValue is bool) {
    conditionResult = conditionValue;
  } else if (bridgedInstance.$2 && bridgedInstance.$1?.nativeObject is bool) {
    conditionResult = bridgedInstance.$1!.nativeObject as bool;
  } else {
    throw RuntimeD4rtException(
      "The condition of a conditional expression must be a boolean, but was ${conditionValue?.runtimeType}.",
    );
  }

  if (conditionResult) {
    return node.thenExpression!.accept<Object?>(this);
  } else {
    return node.elseExpression!.accept<Object?>(this);
  }
}