Skip to content

Commit 1c6c4bb

Browse files
authored
Merge pull request #264 from dtolnay/errortraitpath
Delete elaborate spans on path of error trait
2 parents ae3d41d + d1efad1 commit 1c6c4bb

File tree

2 files changed

+3
-29
lines changed

2 files changed

+3
-29
lines changed

impl/src/ast.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,13 @@ pub enum Input<'a> {
1212
}
1313

1414
pub struct Struct<'a> {
15-
pub original: &'a DeriveInput,
1615
pub attrs: Attrs<'a>,
1716
pub ident: Ident,
1817
pub generics: &'a Generics,
1918
pub fields: Vec<Field<'a>>,
2019
}
2120

2221
pub struct Enum<'a> {
23-
pub original: &'a DeriveInput,
2422
pub attrs: Attrs<'a>,
2523
pub ident: Ident,
2624
pub generics: &'a Generics,
@@ -65,7 +63,6 @@ impl<'a> Struct<'a> {
6563
display.expand_shorthand(&fields);
6664
}
6765
Ok(Struct {
68-
original: node,
6966
attrs,
7067
ident: node.ident.clone(),
7168
generics: &node.generics,
@@ -96,7 +93,6 @@ impl<'a> Enum<'a> {
9693
})
9794
.collect::<Result<_>>()?;
9895
Ok(Enum {
99-
original: node,
10096
attrs,
10197
ident: node.ident.clone(),
10298
generics: &node.generics,

impl/src/expand.rs

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ use crate::span::MemberSpan;
55
use proc_macro2::TokenStream;
66
use quote::{format_ident, quote, quote_spanned, ToTokens};
77
use std::collections::BTreeSet as Set;
8-
use syn::{
9-
Data, DeriveInput, GenericArgument, Member, PathArguments, Result, Token, Type, Visibility,
10-
};
8+
use syn::{DeriveInput, GenericArgument, Member, PathArguments, Result, Token, Type};
119

1210
pub fn derive(node: &DeriveInput) -> Result<TokenStream> {
1311
let input = Input::from_syn(node)?;
@@ -168,7 +166,6 @@ fn impl_struct(input: Struct) -> TokenStream {
168166
}
169167
});
170168

171-
let error_trait = spanned_error_trait(input.original);
172169
if input.generics.type_params().next().is_some() {
173170
let self_token = <Token![Self]>::default();
174171
error_inferred_bounds.insert(self_token, Trait::Debug);
@@ -178,7 +175,7 @@ fn impl_struct(input: Struct) -> TokenStream {
178175

179176
quote! {
180177
#[allow(unused_qualifications)]
181-
impl #impl_generics #error_trait for #ty #ty_generics #error_where_clause {
178+
impl #impl_generics std::error::Error for #ty #ty_generics #error_where_clause {
182179
#source_method
183180
#provide_method
184181
}
@@ -425,7 +422,6 @@ fn impl_enum(input: Enum) -> TokenStream {
425422
})
426423
});
427424

428-
let error_trait = spanned_error_trait(input.original);
429425
if input.generics.type_params().next().is_some() {
430426
let self_token = <Token![Self]>::default();
431427
error_inferred_bounds.insert(self_token, Trait::Debug);
@@ -435,7 +431,7 @@ fn impl_enum(input: Enum) -> TokenStream {
435431

436432
quote! {
437433
#[allow(unused_qualifications)]
438-
impl #impl_generics #error_trait for #ty #ty_generics #error_where_clause {
434+
impl #impl_generics std::error::Error for #ty #ty_generics #error_where_clause {
439435
#source_method
440436
#provide_method
441437
}
@@ -528,21 +524,3 @@ fn type_parameter_of_option(ty: &Type) -> Option<&Type> {
528524
_ => None,
529525
}
530526
}
531-
532-
fn spanned_error_trait(input: &DeriveInput) -> TokenStream {
533-
let vis_span = match &input.vis {
534-
Visibility::Public(vis) => Some(vis.span),
535-
Visibility::Restricted(vis) => Some(vis.pub_token.span),
536-
Visibility::Inherited => None,
537-
};
538-
let data_span = match &input.data {
539-
Data::Struct(data) => data.struct_token.span,
540-
Data::Enum(data) => data.enum_token.span,
541-
Data::Union(data) => data.union_token.span,
542-
};
543-
let first_span = vis_span.unwrap_or(data_span);
544-
let last_span = input.ident.span();
545-
let path = quote_spanned!(first_span=> std::error::);
546-
let error = quote_spanned!(last_span=> Error);
547-
quote!(#path #error)
548-
}

0 commit comments

Comments
 (0)