Skip to content

Commit b060f64

Browse files
authored
Merge pull request #2471 from topecongiro/issue-2470
Return the original snippet if the attribute contains invalid syntax
2 parents 42af132 + b4c85d1 commit b060f64

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

rustfmt-core/src/visitor.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -813,9 +813,11 @@ impl Rewrite for ast::Attribute {
813813
}
814814
// 1 = `[`
815815
let shape = shape.offset_left(prefix.len() + 1)?;
816-
self.meta()?
817-
.rewrite(context, shape)
818-
.map(|rw| format!("{}[{}]", prefix, rw))
816+
Some(
817+
self.meta()
818+
.and_then(|meta| meta.rewrite(context, shape))
819+
.map_or_else(|| snippet.to_owned(), |rw| format!("{}[{}]", prefix, rw)),
820+
)
819821
}
820822
}
821823
}

rustfmt-core/tests/source/macro_rules.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,11 @@ macro_rules! m (
7777
macro_rules! m [
7878
() => ()
7979
];
80+
81+
// #2470
82+
macro foo($type_name: ident, $docs: expr) {
83+
#[allow(non_camel_case_types)]
84+
#[doc=$docs]
85+
#[derive(Debug, Clone, Copy)]
86+
pub struct $type_name;
87+
}

rustfmt-core/tests/target/macro_rules.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,11 @@ macro_rules! m (
6868
macro_rules! m [
6969
() => ()
7070
];
71+
72+
// #2470
73+
macro foo($type_name: ident, $docs: expr) {
74+
#[allow(non_camel_case_types)]
75+
#[doc=$docs]
76+
#[derive(Debug, Clone, Copy)]
77+
pub struct $type_name;
78+
}

0 commit comments

Comments
 (0)