Files
rust/tests/ui
Matthias Krüger 3e968c7e9f Rollup merge of #139075 - oli-obk:resolver-item-lifetime, r=compiler-errors
Do not treat lifetimes from parent items as influencing child items

```rust
struct A;
impl Bar<'static> for A {
    const STATIC: &str = "";
    //            ^ no future incompat warning
}
```

has no future incompat warning, because there is no ambiguity. But

```rust
struct C;
impl Bar<'_> for C {
//       ^^ this lifeimte
    const STATIC: &'static str = {
        struct B;
        impl Bar<'static> for B {
            const STATIC: &str = "";
            // causes     ^ to emit a future incompat warning
        }
        ""
    };
}
```

had one before this PR, because the impl for `B` (which is just a copy of `A`) thought it was influenced by a lifetime on the impl for `C`.

I double checked all other `lifetime_ribs` iterations and all of them do check for `Item` boundaries. This feels very fragile tho, and ~~I think we should do not even be able to see ribs from parent items, but that's a different refactoring that I'd rather not do at the same time as a bugfix~~. EDIT: ah nevermind, this is needed for improving diagnostics like "use of undeclared lifetime" being "can't use generic parameters from outer item" instead.

r? `@compiler-errors`
2025-03-28 21:18:32 +01:00
..
2025-03-24 16:57:07 +00:00
2025-02-21 00:41:17 +00:00
2025-03-03 08:52:07 +01:00
2025-02-27 10:26:33 +00:00
2024-12-12 23:36:27 +00:00
2025-02-28 08:42:14 +11:00
2024-12-31 23:46:39 +08:00
2025-02-24 14:31:19 +01:00
2025-02-24 18:48:40 +00:00
2024-12-12 23:36:27 +00:00
2025-03-27 17:45:02 +00:00
2025-01-28 19:35:51 +00:00
2025-01-07 16:04:14 +01:00
2025-01-26 13:55:59 +00:00
2025-02-25 16:56:04 +00:00
2025-02-27 20:02:25 +00:00
2025-03-07 17:55:08 +00:00
2025-01-29 15:45:13 +00:00
2025-03-27 14:11:11 +01:00
2025-02-27 10:26:33 +00:00
2025-02-27 10:26:33 +00:00
2025-01-23 10:55:01 +00:00
2025-02-04 21:42:43 +05:30
2024-12-02 03:43:50 -07:00

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and interpret a test.

As part of an ongoing effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as a legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.