Skip to content

Format issue on supertrait with bounds on associated types. #6316

Open
@gui1117

Description

@gui1117

For all version I could tests (master and nightly)

this code:

pub trait MyLongTraitName:
    MyLongBoundName<
        MyLongAssociatedType:
            SomeAnotherBound<
                YetAnotherType: YetAnotherBound,
                YetAnotherType2: YetAnotherBound2
            >,
        OtherType: SmallBound
            + SmallBound2
            + AnotherLongBound<
                WithSomeType: BeingBound,
                WithSomeType2: BeingBound,
                WithSomeType3: BeingBound
            >
            + SmallBound3
            + AnotherLongBound2<
                WithSomeType: BeingBound,
                WithSomeType2: BeingBound,
                WithSomeType3: BeingBound
            >,
    >
{
}

fn main() {}

gets formatted into:

pub trait MyLongTraitName:
    MyLongBoundName<
    MyLongAssociatedType: SomeAnotherBound<
        YetAnotherType: YetAnotherBound,
        YetAnotherType2: YetAnotherBound2,
    >,
    OtherType: SmallBound
                   + SmallBound2
                   + AnotherLongBound<
        WithSomeType: BeingBound,
        WithSomeType2: BeingBound,
        WithSomeType3: BeingBound,
    > + SmallBound3
                   + AnotherLongBound2<
        WithSomeType: BeingBound,
        WithSomeType2: BeingBound,
        WithSomeType3: BeingBound,
    >,
>
{
}

fn main() {}

Activity

ytmimi

ytmimi commented on Sep 9, 2024

@ytmimi
Contributor

Thanks for the report. Confirming I can reproduce this the latest master rustfmt 1.7.1-nightly (1a70f40 2024-09-03)

gui1117

gui1117 commented on Sep 10, 2024

@gui1117
Author

It seems those types are formatted with the overflow formatting, do you suggest to change the overflow formatting or change formatting so it doesn't go into overflow?

ytmimi

ytmimi commented on Sep 10, 2024

@ytmimi
Contributor

@gui1117 have you started looking into this issue?

gui1117

gui1117 commented on Sep 10, 2024

@gui1117
Author

@gui1117 have you started looking into this issue?

Not really, and I would prefer not because I struggle to understand the code.
But I look a bit when I have free time.

ytmimi

ytmimi commented on Sep 11, 2024

@ytmimi
Contributor

@gui1117 no worries. Based on #6316 (comment) I thought maybe you'd looked through the code.

Not really, and I would prefer not because I struggle to understand the code.

It's quite a tricky part of the codebase. Definitely don't feel obligated to dive in.

jrose-signal

jrose-signal commented on Feb 14, 2025

@jrose-signal

Smaller example without any nesting, though I'm sure the nesting doesn't help:

pub trait Example<Inner = ()>:
    ExampleImplementation<
    Inner,
    MoreParam,
    AnotherParam,
    AnotherParamAgain,
    YetAnotherParam,
    AFurtherParam,
>
{
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @gui1117@ytmimi@jrose-signal

        Issue actions

          Format issue on supertrait with bounds on associated types. · Issue #6316 · rust-lang/rustfmt