Skip to content

Commit a215720

Browse files
authoredMar 30, 2023
feat(deps): update to syn2 (#247)
Fixes: #243
1 parent 78fe18e commit a215720

9 files changed

+27
-14
lines changed
 

‎Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ rust-version = "1.56.0"
1313
exclude = ["images/", "tests/", "miette-derive/"]
1414

1515
[dependencies]
16-
thiserror = "1.0.26"
16+
thiserror = "1.0.40"
1717
miette-derive = { path = "miette-derive", version = "=5.6.0" }
1818
once_cell = "1.8.0"
1919
unicode-width = "0.1.9"
@@ -35,7 +35,7 @@ futures = { version = "0.3", default-features = false }
3535
indenter = "0.3.0"
3636
rustversion = "1.0"
3737
trybuild = { version = "1.0.19", features = ["diff"] }
38-
syn = { version = "1.0", features = ["full"] }
38+
syn = { version = "2.0", features = ["full"] }
3939
regex = "1.5"
4040
lazy_static = "1.4"
4141

‎miette-derive/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ proc-macro = true
1313
[dependencies]
1414
proc-macro2 = "1.0"
1515
quote = "1.0"
16-
syn = "1.0.45"
16+
syn = "2.0.11"

‎miette-derive/src/diagnostic.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ impl Diagnostic {
222222
let input_attrs = input
223223
.attrs
224224
.iter()
225-
.filter(|x| x.path.is_ident("diagnostic"))
225+
.filter(|x| x.path().is_ident("diagnostic"))
226226
.collect::<Vec<&syn::Attribute>>();
227227
Ok(match input.data {
228228
syn::Data::Struct(data_struct) => {
@@ -245,7 +245,7 @@ impl Diagnostic {
245245
for var in variants {
246246
let mut variant_attrs = input_attrs.clone();
247247
variant_attrs
248-
.extend(var.attrs.iter().filter(|x| x.path.is_ident("diagnostic")));
248+
.extend(var.attrs.iter().filter(|x| x.path().is_ident("diagnostic")));
249249
let args =
250250
DiagnosticDefArgs::parse(&var.ident, &var.fields, &variant_attrs, true)?;
251251
vars.push(DiagnosticDef {

‎miette-derive/src/diagnostic_source.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ impl DiagnosticSource {
2424
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
2525
for (i, field) in fields.iter().enumerate() {
2626
for attr in &field.attrs {
27-
if attr.path.is_ident("diagnostic_source") {
27+
if attr.path().is_ident("diagnostic_source") {
2828
let diagnostic_source = if let Some(ident) = field.ident.clone() {
2929
syn::Member::Named(ident)
3030
} else {

‎miette-derive/src/fmt.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -210,21 +210,21 @@ pub fn parse_token_expr(input: ParseStream, mut begin_expr: bool) -> Result<Toke
210210
let delimiter = parenthesized!(content in input);
211211
let nested = parse_token_expr(&content, true)?;
212212
let mut group = Group::new(Delimiter::Parenthesis, nested);
213-
group.set_span(delimiter.span);
213+
group.set_span(delimiter.span.join());
214214
TokenTree::Group(group)
215215
} else if input.peek(syn::token::Brace) {
216216
let content;
217217
let delimiter = braced!(content in input);
218218
let nested = parse_token_expr(&content, true)?;
219219
let mut group = Group::new(Delimiter::Brace, nested);
220-
group.set_span(delimiter.span);
220+
group.set_span(delimiter.span.join());
221221
TokenTree::Group(group)
222222
} else if input.peek(syn::token::Bracket) {
223223
let content;
224224
let delimiter = bracketed!(content in input);
225225
let nested = parse_token_expr(&content, true)?;
226226
let mut group = Group::new(Delimiter::Bracket, nested);
227-
group.set_span(delimiter.span);
227+
group.set_span(delimiter.span.join());
228228
TokenTree::Group(group)
229229
} else {
230230
input.parse()?

‎miette-derive/src/help.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ impl Help {
6969
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
7070
for (i, field) in fields.iter().enumerate() {
7171
for attr in &field.attrs {
72-
if attr.path.is_ident("help") {
72+
if attr.path().is_ident("help") {
7373
let help = if let Some(ident) = field.ident.clone() {
7474
syn::Member::Named(ident)
7575
} else {

‎miette-derive/src/label.rs

+15-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ struct LabelAttr {
2828

2929
impl Parse for LabelAttr {
3030
fn parse(input: ParseStream) -> syn::Result<Self> {
31+
// Skip a token.
32+
// This should receive one of:
33+
// - label = "..."
34+
// - label("...")
35+
let _ = input.step(|cursor| {
36+
if let Some((_, next)) = cursor.token_tree() {
37+
Ok(((), next))
38+
} else {
39+
Err(cursor.error("unexpected empty attribute"))
40+
}
41+
});
3142
let la = input.lookahead1();
3243
let label = if la.peek(syn::token::Paren) {
3344
// #[label("{}", x)]
@@ -79,7 +90,7 @@ impl Labels {
7990
let mut labels = Vec::new();
8091
for (i, field) in fields.iter().enumerate() {
8192
for attr in &field.attrs {
82-
if attr.path.is_ident("label") {
93+
if attr.path().is_ident("label") {
8394
let span = if let Some(ident) = field.ident.clone() {
8495
syn::Member::Named(ident)
8596
} else {
@@ -88,7 +99,9 @@ impl Labels {
8899
span: field.span(),
89100
})
90101
};
91-
let LabelAttr { label } = syn::parse2::<LabelAttr>(attr.tokens.clone())?;
102+
use quote::ToTokens;
103+
let LabelAttr { label } =
104+
syn::parse2::<LabelAttr>(attr.meta.to_token_stream())?;
92105
labels.push(Label {
93106
label,
94107
span,

‎miette-derive/src/related.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ impl Related {
2424
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
2525
for (i, field) in fields.iter().enumerate() {
2626
for attr in &field.attrs {
27-
if attr.path.is_ident("related") {
27+
if attr.path().is_ident("related") {
2828
let related = if let Some(ident) = field.ident.clone() {
2929
syn::Member::Named(ident)
3030
} else {

‎miette-derive/src/source_code.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ impl SourceCode {
2626
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
2727
for (i, field) in fields.iter().enumerate() {
2828
for attr in &field.attrs {
29-
if attr.path.is_ident("source_code") {
29+
if attr.path().is_ident("source_code") {
3030
let source_code = if let Some(ident) = field.ident.clone() {
3131
syn::Member::Named(ident)
3232
} else {

0 commit comments

Comments
 (0)
Please sign in to comment.