// rustfmt-fn_args_layout: Block
// rustfmt-fn_call_style: Block
// rustfmt-generics_indent: Block
// rustfmt-where_style: Rfc

// #1357
impl<
    'a,
    Select,
    From,
    Distinct,
    Where,
    Order,
    Limit,
    Offset,
    Groupby,
    DB,
> InternalBoxedDsl<'a, DB>
    for SelectStatement<
        Select,
        From,
        Distinct,
        Where,
        Order,
        Limit,
        Offset,
        GroupBy,
    > where
        DB: Backend,
        Select: QueryFragment<DB> + SelectableExpression<From> + 'a,
        Distinct: QueryFragment<DB> + 'a,
        Where: Into<Option<Box<QueryFragment<DB> + 'a>>>,
        Order: QueryFragment<DB> + 'a,
        Limit: QueryFragment<DB> + 'a,
        Offset: QueryFragment<DB> + 'a,
{
    type Output = BoxedSelectStatement<'a, Select::SqlTypeForSelect, From, DB>;

    fn internal_into_boxed(self) -> Self::Output {
        BoxedSelectStatement::new(
            Box::new(self.select),
            self.from,
            Box::new(self.distinct),
            self.where_clause.into(),
            Box::new(self.order),
            Box::new(self.limit),
            Box::new(self.offset),
        )
    }
}

// #1369
impl<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> Foo for Bar {
    fn foo() {}
}
impl Foo<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> for Bar {
    fn foo() {}
}
impl<
    ExcessivelyLongGenericName,
    ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> Foo<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> for Bar {
    fn foo() {}
}
impl<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> Foo for Bar<
    ExcessivelyLongGenericName,
    ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> {
    fn foo() {}
}
impl Foo<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> for Bar<
    ExcessivelyLongGenericName,
    ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> {
    fn foo() {}
}
impl<
    ExcessivelyLongGenericName,
      ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> Foo<
    ExcessivelyLongGenericName,
    ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> for Bar<
    ExcessivelyLongGenericName,
    ExcessivelyLongGenericName,
    AnotherExcessivelyLongGenericName,
> {
    fn foo() {}
}

// #1689
impl<M, S, F, X> SubSelectDirect<M, S, F, X>
    where
    M: select::Selector,
    S: event::Stream,
    F: for<'t> FnMut(transform::Api<
            't,
        Stream<ContentStream<S>>,
        >)
                     -> transform::Api<'t, X>,
    X: event::Stream,
{
}