mirror of https://github.com/zkat/miette.git
update to syn2
This commit is contained in:
parent
78fe18e699
commit
2b69a0c874
|
|
@ -13,7 +13,7 @@ rust-version = "1.56.0"
|
||||||
exclude = ["images/", "tests/", "miette-derive/"]
|
exclude = ["images/", "tests/", "miette-derive/"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
thiserror = "1.0.26"
|
thiserror = "1.0.40"
|
||||||
miette-derive = { path = "miette-derive", version = "=5.6.0" }
|
miette-derive = { path = "miette-derive", version = "=5.6.0" }
|
||||||
once_cell = "1.8.0"
|
once_cell = "1.8.0"
|
||||||
unicode-width = "0.1.9"
|
unicode-width = "0.1.9"
|
||||||
|
|
@ -35,7 +35,7 @@ futures = { version = "0.3", default-features = false }
|
||||||
indenter = "0.3.0"
|
indenter = "0.3.0"
|
||||||
rustversion = "1.0"
|
rustversion = "1.0"
|
||||||
trybuild = { version = "1.0.19", features = ["diff"] }
|
trybuild = { version = "1.0.19", features = ["diff"] }
|
||||||
syn = { version = "1.0", features = ["full"] }
|
syn = { version = "2.0", features = ["full"] }
|
||||||
regex = "1.5"
|
regex = "1.5"
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,4 @@ proc-macro = true
|
||||||
[dependencies]
|
[dependencies]
|
||||||
proc-macro2 = "1.0"
|
proc-macro2 = "1.0"
|
||||||
quote = "1.0"
|
quote = "1.0"
|
||||||
syn = "1.0.45"
|
syn = "2.0.11"
|
||||||
|
|
|
||||||
|
|
@ -222,7 +222,7 @@ impl Diagnostic {
|
||||||
let input_attrs = input
|
let input_attrs = input
|
||||||
.attrs
|
.attrs
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|x| x.path.is_ident("diagnostic"))
|
.filter(|x| x.path().is_ident("diagnostic"))
|
||||||
.collect::<Vec<&syn::Attribute>>();
|
.collect::<Vec<&syn::Attribute>>();
|
||||||
Ok(match input.data {
|
Ok(match input.data {
|
||||||
syn::Data::Struct(data_struct) => {
|
syn::Data::Struct(data_struct) => {
|
||||||
|
|
@ -245,7 +245,7 @@ impl Diagnostic {
|
||||||
for var in variants {
|
for var in variants {
|
||||||
let mut variant_attrs = input_attrs.clone();
|
let mut variant_attrs = input_attrs.clone();
|
||||||
variant_attrs
|
variant_attrs
|
||||||
.extend(var.attrs.iter().filter(|x| x.path.is_ident("diagnostic")));
|
.extend(var.attrs.iter().filter(|x| x.path().is_ident("diagnostic")));
|
||||||
let args =
|
let args =
|
||||||
DiagnosticDefArgs::parse(&var.ident, &var.fields, &variant_attrs, true)?;
|
DiagnosticDefArgs::parse(&var.ident, &var.fields, &variant_attrs, true)?;
|
||||||
vars.push(DiagnosticDef {
|
vars.push(DiagnosticDef {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ impl DiagnosticSource {
|
||||||
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
||||||
for (i, field) in fields.iter().enumerate() {
|
for (i, field) in fields.iter().enumerate() {
|
||||||
for attr in &field.attrs {
|
for attr in &field.attrs {
|
||||||
if attr.path.is_ident("diagnostic_source") {
|
if attr.path().is_ident("diagnostic_source") {
|
||||||
let diagnostic_source = if let Some(ident) = field.ident.clone() {
|
let diagnostic_source = if let Some(ident) = field.ident.clone() {
|
||||||
syn::Member::Named(ident)
|
syn::Member::Named(ident)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -210,21 +210,21 @@ pub fn parse_token_expr(input: ParseStream, mut begin_expr: bool) -> Result<Toke
|
||||||
let delimiter = parenthesized!(content in input);
|
let delimiter = parenthesized!(content in input);
|
||||||
let nested = parse_token_expr(&content, true)?;
|
let nested = parse_token_expr(&content, true)?;
|
||||||
let mut group = Group::new(Delimiter::Parenthesis, nested);
|
let mut group = Group::new(Delimiter::Parenthesis, nested);
|
||||||
group.set_span(delimiter.span);
|
group.set_span(delimiter.span.join());
|
||||||
TokenTree::Group(group)
|
TokenTree::Group(group)
|
||||||
} else if input.peek(syn::token::Brace) {
|
} else if input.peek(syn::token::Brace) {
|
||||||
let content;
|
let content;
|
||||||
let delimiter = braced!(content in input);
|
let delimiter = braced!(content in input);
|
||||||
let nested = parse_token_expr(&content, true)?;
|
let nested = parse_token_expr(&content, true)?;
|
||||||
let mut group = Group::new(Delimiter::Brace, nested);
|
let mut group = Group::new(Delimiter::Brace, nested);
|
||||||
group.set_span(delimiter.span);
|
group.set_span(delimiter.span.join());
|
||||||
TokenTree::Group(group)
|
TokenTree::Group(group)
|
||||||
} else if input.peek(syn::token::Bracket) {
|
} else if input.peek(syn::token::Bracket) {
|
||||||
let content;
|
let content;
|
||||||
let delimiter = bracketed!(content in input);
|
let delimiter = bracketed!(content in input);
|
||||||
let nested = parse_token_expr(&content, true)?;
|
let nested = parse_token_expr(&content, true)?;
|
||||||
let mut group = Group::new(Delimiter::Bracket, nested);
|
let mut group = Group::new(Delimiter::Bracket, nested);
|
||||||
group.set_span(delimiter.span);
|
group.set_span(delimiter.span.join());
|
||||||
TokenTree::Group(group)
|
TokenTree::Group(group)
|
||||||
} else {
|
} else {
|
||||||
input.parse()?
|
input.parse()?
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ impl Help {
|
||||||
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
||||||
for (i, field) in fields.iter().enumerate() {
|
for (i, field) in fields.iter().enumerate() {
|
||||||
for attr in &field.attrs {
|
for attr in &field.attrs {
|
||||||
if attr.path.is_ident("help") {
|
if attr.path().is_ident("help") {
|
||||||
let help = if let Some(ident) = field.ident.clone() {
|
let help = if let Some(ident) = field.ident.clone() {
|
||||||
syn::Member::Named(ident)
|
syn::Member::Named(ident)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,17 @@ struct LabelAttr {
|
||||||
|
|
||||||
impl Parse for LabelAttr {
|
impl Parse for LabelAttr {
|
||||||
fn parse(input: ParseStream) -> syn::Result<Self> {
|
fn parse(input: ParseStream) -> syn::Result<Self> {
|
||||||
|
// Skip a token.
|
||||||
|
// This should receive one of:
|
||||||
|
// - label = "..."
|
||||||
|
// - label("...")
|
||||||
|
let _ = input.step(|cursor| {
|
||||||
|
if let Some((_, next)) = cursor.token_tree() {
|
||||||
|
Ok(((), next))
|
||||||
|
} else {
|
||||||
|
Err(cursor.error("unexpected empty attribute"))
|
||||||
|
}
|
||||||
|
});
|
||||||
let la = input.lookahead1();
|
let la = input.lookahead1();
|
||||||
let label = if la.peek(syn::token::Paren) {
|
let label = if la.peek(syn::token::Paren) {
|
||||||
// #[label("{}", x)]
|
// #[label("{}", x)]
|
||||||
|
|
@ -79,7 +90,7 @@ impl Labels {
|
||||||
let mut labels = Vec::new();
|
let mut labels = Vec::new();
|
||||||
for (i, field) in fields.iter().enumerate() {
|
for (i, field) in fields.iter().enumerate() {
|
||||||
for attr in &field.attrs {
|
for attr in &field.attrs {
|
||||||
if attr.path.is_ident("label") {
|
if attr.path().is_ident("label") {
|
||||||
let span = if let Some(ident) = field.ident.clone() {
|
let span = if let Some(ident) = field.ident.clone() {
|
||||||
syn::Member::Named(ident)
|
syn::Member::Named(ident)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -88,7 +99,8 @@ impl Labels {
|
||||||
span: field.span(),
|
span: field.span(),
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
let LabelAttr { label } = syn::parse2::<LabelAttr>(attr.tokens.clone())?;
|
use quote::ToTokens;
|
||||||
|
let LabelAttr { label } = syn::parse2::<LabelAttr>(attr.meta.to_token_stream())?;
|
||||||
labels.push(Label {
|
labels.push(Label {
|
||||||
label,
|
label,
|
||||||
span,
|
span,
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ impl Related {
|
||||||
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
||||||
for (i, field) in fields.iter().enumerate() {
|
for (i, field) in fields.iter().enumerate() {
|
||||||
for attr in &field.attrs {
|
for attr in &field.attrs {
|
||||||
if attr.path.is_ident("related") {
|
if attr.path().is_ident("related") {
|
||||||
let related = if let Some(ident) = field.ident.clone() {
|
let related = if let Some(ident) = field.ident.clone() {
|
||||||
syn::Member::Named(ident)
|
syn::Member::Named(ident)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ impl SourceCode {
|
||||||
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
fn from_fields_vec(fields: Vec<&syn::Field>) -> syn::Result<Option<Self>> {
|
||||||
for (i, field) in fields.iter().enumerate() {
|
for (i, field) in fields.iter().enumerate() {
|
||||||
for attr in &field.attrs {
|
for attr in &field.attrs {
|
||||||
if attr.path.is_ident("source_code") {
|
if attr.path().is_ident("source_code") {
|
||||||
let source_code = if let Some(ident) = field.ident.clone() {
|
let source_code = if let Some(ident) = field.ident.clone() {
|
||||||
syn::Member::Named(ident)
|
syn::Member::Named(ident)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue