Reserve guarded string literals (RFC 3593)
This commit is contained in:
parent
6f4ae0f345
commit
321a5db7d4
23 changed files with 1514 additions and 9 deletions
|
@ -92,6 +92,7 @@ declare_lint_pass! {
|
|||
RUST_2021_INCOMPATIBLE_OR_PATTERNS,
|
||||
RUST_2021_PREFIXES_INCOMPATIBLE_SYNTAX,
|
||||
RUST_2021_PRELUDE_COLLISIONS,
|
||||
RUST_2024_GUARDED_STRING_INCOMPATIBLE_SYNTAX,
|
||||
RUST_2024_INCOMPATIBLE_PAT,
|
||||
RUST_2024_PRELUDE_COLLISIONS,
|
||||
SELF_CONSTRUCTOR_FROM_OUTER_ITEM,
|
||||
|
@ -4996,3 +4997,43 @@ declare_lint! {
|
|||
Warn,
|
||||
"detects pointer to integer transmutes in const functions and associated constants",
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `rust_2024_guarded_string_incompatible_syntax` lint detects `#` tokens
|
||||
/// that will be parsed as part of a guarded string literal in Rust 2024.
|
||||
///
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust,edition2021,compile_fail
|
||||
/// #![deny(rust_2024_guarded_string_incompatible_syntax)]
|
||||
///
|
||||
/// macro_rules! m {
|
||||
/// (# $x:expr #) => ();
|
||||
/// (# $x:expr) => ();
|
||||
/// }
|
||||
///
|
||||
/// m!(#"hey"#);
|
||||
/// m!(#"hello");
|
||||
/// ```
|
||||
///
|
||||
/// {{produces}}
|
||||
///
|
||||
/// ### Explanation
|
||||
///
|
||||
/// Prior to Rust 2024, `#"hey"#` is three tokens: the first `#`
|
||||
/// followed by the string literal `"hey"` then the final `#`.
|
||||
/// In Rust 2024, the whole sequence is considered a single token.
|
||||
///
|
||||
/// This lint suggests to add whitespace between the leading `#`
|
||||
/// and the string to keep them separated in Rust 2024.
|
||||
// Allow this lint -- rustdoc doesn't yet support threading edition into this lint's parser.
|
||||
#[allow(rustdoc::invalid_rust_codeblocks)]
|
||||
pub RUST_2024_GUARDED_STRING_INCOMPATIBLE_SYNTAX,
|
||||
Allow,
|
||||
"will be parsed as a guarded string in Rust 2024",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reason: FutureIncompatibilityReason::EditionError(Edition::Edition2024),
|
||||
reference: "issue #123735 <https://github.com/rust-lang/rust/issues/123735>",
|
||||
};
|
||||
crate_level_only
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue