Skip to content

Commit c93a0f3

Browse files
authored
Merge pull request #2499 from dtolnay/strsuffix
Reject suffixed string literals inside serde attrs
2 parents 3fb5e71 + 8264e00 commit c93a0f3

File tree

5 files changed

+30
-2
lines changed

5 files changed

+30
-2
lines changed

serde_derive/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ proc-macro = true
2424
[dependencies]
2525
proc-macro2 = "1.0"
2626
quote = "1.0"
27-
syn = "2.0.24"
27+
syn = "2.0.25"
2828

2929
[dev-dependencies]
3030
serde = { version = "1.0", path = "../serde" }

serde_derive/src/internals/attr.rs

+7
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,13 @@ fn get_lit_str2(
14181418
..
14191419
}) = value
14201420
{
1421+
let suffix = lit.suffix();
1422+
if !suffix.is_empty() {
1423+
cx.error_spanned_by(
1424+
lit,
1425+
format!("unexpected suffix `{}` on string literal", suffix),
1426+
);
1427+
}
14211428
Ok(Some(lit.clone()))
14221429
} else {
14231430
cx.error_spanned_by(

serde_derive_internals/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ path = "lib.rs"
1717
[dependencies]
1818
proc-macro2 = "1.0"
1919
quote = "1.0"
20-
syn = { version = "2.0.24", default-features = false, features = ["clone-impls", "derive", "parsing", "printing"] }
20+
syn = { version = "2.0.25", default-features = false, features = ["clone-impls", "derive", "parsing", "printing"] }
2121

2222
[package.metadata.docs.rs]
2323
targets = ["x86_64-unknown-linux-gnu"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use serde::Serialize;
2+
3+
#[derive(Serialize)]
4+
#[serde(bound = ""huh)]
5+
pub struct Struct {
6+
#[serde(rename = ""what)]
7+
pub field: i32,
8+
}
9+
10+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
error: unexpected suffix `huh` on string literal
2+
--> tests/ui/malformed/str_suffix.rs:4:17
3+
|
4+
4 | #[serde(bound = ""huh)]
5+
| ^^^^^
6+
7+
error: unexpected suffix `what` on string literal
8+
--> tests/ui/malformed/str_suffix.rs:6:22
9+
|
10+
6 | #[serde(rename = ""what)]
11+
| ^^^^^^

0 commit comments

Comments
 (0)