Skip to content

"Regression" - some static bounds incorrectly compiled in 1.63..=1.67 #112283

Description

@QuineDot

Heads-up

The example below should not compile and currently does not compile, so this is going to be low priority.

However, the example compiled for 1.63 -- 1.67 inclusive (it doesn't compile in 1.62 or in 1.68 to current).

I didn't see anything that looked relevant in the release notes, and I figure there should at least be a test somewhere, so it doesn't start compiling again.

So this issue is primarily about making sure a test exists.

Code

I tried this code:

pub trait Trait {}

pub trait Assoc<'x> {
    type A: ?Sized;
}

impl<'x> Assoc<'x> for str { type A = &'x dyn Trait; }

pub fn assoc<T: 'static>() {}
pub fn assoc_helper<'a: 'a>() {
    assoc::< <str as Assoc<'a>>::A >();
}

I expected to see this happen: Inexplicably compile like it did during some exploration months ago. (Search for "this all works" for more examples with probably irrelevant variations if you're curious.)

Instead, this happened: Failed to compile, which makes more sense.

Version it worked on

It most recently worked on: Rust 1.67, and also 1.63, 1.64, 1.65, and 1.66.

Version with regression

1.68 to present.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.P-lowLow priorityregression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions