when<T> method

T? when<T>({
  1. T isExpression(
    1. DartExpressionPlaceholder
    )?,
  2. T isLimit(
    1. DartLimitPlaceholder
    )?,
  3. T isOrderingTerm(
    1. DartOrderingTermPlaceholder
    )?,
  4. T isOrderBy(
    1. DartOrderByPlaceholder
    )?,
  5. T isInsertable(
    1. DartInsertablePlaceholder
    )?,
})

Implementation

T? when<T>({
  T Function(DartExpressionPlaceholder)? isExpression,
  T Function(DartLimitPlaceholder)? isLimit,
  T Function(DartOrderingTermPlaceholder)? isOrderingTerm,
  T Function(DartOrderByPlaceholder)? isOrderBy,
  T Function(DartInsertablePlaceholder)? isInsertable,
}) {
  if (this is DartExpressionPlaceholder) {
    return isExpression?.call(this as DartExpressionPlaceholder);
  } else if (this is DartLimitPlaceholder) {
    return isLimit?.call(this as DartLimitPlaceholder);
  } else if (this is DartOrderingTermPlaceholder) {
    return isOrderingTerm?.call(this as DartOrderingTermPlaceholder);
  } else if (this is DartOrderByPlaceholder) {
    return isOrderBy?.call(this as DartOrderByPlaceholder);
  } else if (this is DartInsertablePlaceholder) {
    return isInsertable?.call(this as DartInsertablePlaceholder);
  }

  throw AssertionError('Invalid placeholder: $runtimeType');
}