when<T> method

T when<T>({
  1. required T isTable(
    1. TableReference
    ),
  2. required T isSelect(
    1. SelectStatementAsSource
    ),
  3. required T isJoin(
    1. JoinClause
    ),
  4. required T isTableFunction(
    1. TableValuedFunction
    ),
})

Implementation

T when<T>({
  required T Function(TableReference) isTable,
  required T Function(SelectStatementAsSource) isSelect,
  required T Function(JoinClause) isJoin,
  required T Function(TableValuedFunction) isTableFunction,
}) {
  if (this is TableReference) {
    return isTable(this as TableReference);
  } else if (this is SelectStatementAsSource) {
    return isSelect(this as SelectStatementAsSource);
  } else if (this is JoinClause) {
    return isJoin(this as JoinClause);
  } else if (this is TableValuedFunction) {
    return isTableFunction(this as TableValuedFunction);
  }

  throw StateError('Unknown subclass');
}