Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 8 pull requests #119634

Merged
merged 22 commits into from
Jan 5, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5c0e62c
Hide foreign `#[doc(hidden)]` paths in import suggestions
Jules-Bertholet Dec 20, 2023
5f56465
Make feature `negative_bounds` internal
fmease Dec 27, 2023
a251974
Deny parenthetical notation for negative bounds
fmease Dec 27, 2023
32cea61
Don't elaborate `!Sized` to `!Sized + Sized`
fmease Dec 27, 2023
977546d
rustc_middle: Pretty-print negative bounds correctly
fmease Dec 27, 2023
90d6fe2
Imply outlives-bounds on lazy type aliases
fmease Dec 27, 2023
1d48f69
Check yield terminator's resume type in borrowck
compiler-errors Jan 4, 2024
4bc3552
cstore: Remove unnecessary locking from `CrateMetadata`
petrochenkov Jan 4, 2024
407cb24
Remove `hir::Guard`
matthewjasper Sep 21, 2023
a549711
Remove `thir::Guard`
matthewjasper Sep 21, 2023
1a267e3
Restore if let guard temporary scoping difference
matthewjasper Jan 3, 2024
44bba54
Update clippy for hir::Guard removal
matthewjasper Jan 4, 2024
6a2bd5a
Use `resolutions(()).effective_visiblities` to avoid cycle errors
compiler-errors Jan 4, 2024
718a433
Document behavior of `!` with MbE
Nadrieril Jan 5, 2024
3a0536a
Rollup merge of #119151 - Jules-Bertholet:no-foreign-doc-hidden-sugge…
matthiaskrgr Jan 5, 2024
fc591db
Rollup merge of #119350 - fmease:lazy-ty-aliases-implied-bounds, r=co…
matthiaskrgr Jan 5, 2024
ea61290
Rollup merge of #119354 - fmease:negative_bounds-fixes, r=compiler-er…
matthiaskrgr Jan 5, 2024
8309063
Rollup merge of #119506 - compiler-errors:visibilities-for-object-saf…
matthiaskrgr Jan 5, 2024
958417f
Rollup merge of #119554 - matthewjasper:remove-guard-distinction, r=c…
matthiaskrgr Jan 5, 2024
ad7aabd
Rollup merge of #119563 - compiler-errors:coroutine-resume, r=oli-obk
matthiaskrgr Jan 5, 2024
60a2b43
Rollup merge of #119589 - petrochenkov:cdatalock, r=Mark-Simulacrum
matthiaskrgr Jan 5, 2024
a060ed2
Rollup merge of #119622 - Nadrieril:never_patterns_macros, r=compiler…
matthiaskrgr Jan 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Document behavior of ! with MbE
  • Loading branch information
Nadrieril committed Jan 5, 2024
commit 718a4337acfd2f28682bfaf9179a9e18bf4040b9
49 changes: 49 additions & 0 deletions tests/ui/rfcs/rfc-0000-never_patterns/macros.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// check-pass
// revisions: e2018 e2021
//[e2018] edition:2018
//[e2021] edition:2021
#![feature(never_patterns)]
#![allow(incomplete_features)]

#[derive(Debug, PartialEq, Eq)]
struct Pattern;
#[derive(Debug, PartialEq, Eq)]
struct Never;
#[derive(Debug, PartialEq, Eq)]
struct Other;

macro_rules! detect_pat {
($p:pat) => {
Pattern
};
(!) => {
Never
};
($($x:tt)*) => {
Other
};
}

// For backwards-compatibility, all the cases that parse as `Pattern` under the feature gate must
// have been parse errors before.
fn main() {
// For backwards compatibility this does not match `$p:pat`.
assert_eq!(detect_pat!(!), Never);

// Edition 2018 parses both of these cases as `Other`. Both editions have been parsing the
// first case as `Other` before, so we mustn't change that.
assert_eq!(detect_pat!(! | true), Other);
#[cfg(e2018)]
assert_eq!(detect_pat!(true | !), Other);
#[cfg(e2021)]
assert_eq!(detect_pat!(true | !), Pattern);

// These are never patterns; they take no body when they're in a match arm.
assert_eq!(detect_pat!((!)), Pattern);
assert_eq!(detect_pat!((true, !)), Pattern);
assert_eq!(detect_pat!(Some(!)), Pattern);

// These count as normal patterns.
assert_eq!(detect_pat!((! | true)), Pattern);
assert_eq!(detect_pat!((Ok(x) | Err(&!))), Pattern);
}
5 changes: 5 additions & 0 deletions tests/ui/rfcs/rfc-0000-never_patterns/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,9 @@ fn parse(x: Void) {
//~^ ERROR top-level or-patterns are not allowed in `let` bindings
let (Ok(_) | Err(!)) = &res;
let (Ok(_) | Err(&!)) = res.as_ref();

let ! = x;
let y @ ! = x;
}

fn foo(!: Void) {}