Files
rust/tests/ui
Matthias Krüger c1ed1f133e Rollup merge of #131381 - Nadrieril:min-match-ergonomics, r=pnkfelix
Implement edition 2024 match ergonomics restrictions

This implements the minimalest version of [match ergonomics for edition 2024](https://rust-lang.github.io/rfcs/3627-match-ergonomics-2024.html). This minimal version makes it an error to ever reset the default binding mode. The implemented proposal is described precisely [here](https://hackmd.io/zUqs2ISNQ0Wrnxsa9nhD0Q#RFC-3627-nano), where it is called "RFC 3627-nano".

Rules:
- Rule 1C: When the DBM (default binding mode) is not `move` (whether or not behind a reference), writing `mut`, `ref`, or `ref mut` on a binding is an error.
- Rule 2C: Reference patterns can only match against references in the scrutinee when the DBM is `move`.

This minimal version is forward-compatible with the main proposals for match ergonomics 2024: [RFC3627](https://rust-lang.github.io/rfcs/3627-match-ergonomics-2024.html) itself, the alternative [rule 4-early variant](https://rust-lang.github.io/rfcs/3627-match-ergonomics-2024.html), and [others](https://hackmd.io/zUqs2ISNQ0Wrnxsa9nhD0Q). The idea is to give us more time to iron out a final proposal.

This includes a migration lint that desugars any offending pattern into one that doesn't make use of match ergonomics. Such patterns have identical meaning across editions.

This PR insta-stabilizes the proposed behavior onto edition 2024.

r? `@ghost`

Tracking:

- https://github.com/rust-lang/rust/issues/123076
2024-10-16 19:18:30 +02:00
..
2024-07-18 00:00:04 +00:00
2024-08-10 12:07:17 +02:00
2024-10-15 13:26:59 +02:00
2024-08-11 09:58:11 +01:00
2024-09-20 10:02:14 -07:00
2024-10-04 23:38:41 +00:00
2024-04-21 15:43:43 -03:00
2024-09-30 22:21:45 +08:00
2024-08-10 12:07:17 +02:00
2024-10-11 11:30:08 -04:00
2024-10-15 13:26:59 +02:00
2024-09-20 01:20:10 +03:00
2024-09-05 06:37:38 -04:00
2024-06-01 09:40:46 +08:00
2024-09-15 09:51:32 +02:00
2024-07-12 03:22:32 +00:00
2024-09-06 10:32:48 -04:00
2024-09-20 10:02:14 -07:00
2024-04-29 14:53:38 +02:00
2024-04-07 17:38:07 -03:00
2024-08-18 19:46:53 +02:00
2024-05-28 12:31:12 +02:00
2024-08-02 11:34:54 +00:00
2024-10-04 23:38:41 +00:00
2024-08-03 07:57:31 -04:00
2024-09-09 19:39:43 -07:00
2024-10-12 13:01:36 +02:00
2024-10-11 11:30:08 -04:00
2024-09-26 13:21:15 +02:00
2024-08-31 23:56:45 +02:00
2024-10-04 23:38:41 +00:00
2024-10-01 13:55:46 -04:00
2024-10-01 13:55:46 -04:00
2024-09-18 16:45:48 -04:00
2024-06-25 18:06:22 +02:00
2024-10-07 14:45:49 -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 intepret a test.

As part of an on-going 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 an legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.