Skip to content

Commit db7825e

Browse files
authored
Merge pull request #369 from dtolnay/stdpath
Access all std types through absolute path
2 parents 12b8c27 + 2f92680 commit db7825e

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

impl/src/expand.rs

+23-23
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn fallback(input: &DeriveInput, error: syn::Error) -> TokenStream {
3737

3838
#[allow(unused_qualifications)]
3939
#[automatically_derived]
40-
impl #impl_generics std::error::Error for #ty #ty_generics #where_clause
40+
impl #impl_generics ::std::error::Error for #ty #ty_generics #where_clause
4141
where
4242
// Work around trivial bounds being unstable.
4343
// https://github.com/rust-lang/rust/issues/48214
@@ -62,17 +62,17 @@ fn impl_struct(input: Struct) -> TokenStream {
6262
let source_body = if let Some(transparent_attr) = &input.attrs.transparent {
6363
let only_field = &input.fields[0];
6464
if only_field.contains_generic {
65-
error_inferred_bounds.insert(only_field.ty, quote!(std::error::Error));
65+
error_inferred_bounds.insert(only_field.ty, quote!(::std::error::Error));
6666
}
6767
let member = &only_field.member;
6868
Some(quote_spanned! {transparent_attr.span=>
69-
std::error::Error::source(self.#member.as_dyn_error())
69+
::std::error::Error::source(self.#member.as_dyn_error())
7070
})
7171
} else if let Some(source_field) = input.source_field() {
7272
let source = &source_field.member;
7373
if source_field.contains_generic {
7474
let ty = unoptional_type(source_field.ty);
75-
error_inferred_bounds.insert(ty, quote!(std::error::Error + 'static));
75+
error_inferred_bounds.insert(ty, quote!(::std::error::Error + 'static));
7676
}
7777
let asref = if type_is_option(source_field.ty) {
7878
Some(quote_spanned!(source.span()=> .as_ref()?))
@@ -90,7 +90,7 @@ fn impl_struct(input: Struct) -> TokenStream {
9090
};
9191
let source_method = source_body.map(|body| {
9292
quote! {
93-
fn source(&self) -> ::core::option::Option<&(dyn std::error::Error + 'static)> {
93+
fn source(&self) -> ::core::option::Option<&(dyn ::std::error::Error + 'static)> {
9494
use ::thiserror::__private::AsDynError as _;
9595
#body
9696
}
@@ -118,12 +118,12 @@ fn impl_struct(input: Struct) -> TokenStream {
118118
} else if type_is_option(backtrace_field.ty) {
119119
Some(quote! {
120120
if let ::core::option::Option::Some(backtrace) = &self.#backtrace {
121-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
121+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
122122
}
123123
})
124124
} else {
125125
Some(quote! {
126-
#request.provide_ref::<std::backtrace::Backtrace>(&self.#backtrace);
126+
#request.provide_ref::<::std::backtrace::Backtrace>(&self.#backtrace);
127127
})
128128
};
129129
quote! {
@@ -134,16 +134,16 @@ fn impl_struct(input: Struct) -> TokenStream {
134134
} else if type_is_option(backtrace_field.ty) {
135135
quote! {
136136
if let ::core::option::Option::Some(backtrace) = &self.#backtrace {
137-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
137+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
138138
}
139139
}
140140
} else {
141141
quote! {
142-
#request.provide_ref::<std::backtrace::Backtrace>(&self.#backtrace);
142+
#request.provide_ref::<::std::backtrace::Backtrace>(&self.#backtrace);
143143
}
144144
};
145145
quote! {
146-
fn provide<'_request>(&'_request self, #request: &mut std::error::Request<'_request>) {
146+
fn provide<'_request>(&'_request self, #request: &mut ::std::error::Request<'_request>) {
147147
#body
148148
}
149149
}
@@ -218,7 +218,7 @@ fn impl_struct(input: Struct) -> TokenStream {
218218
quote! {
219219
#[allow(unused_qualifications)]
220220
#[automatically_derived]
221-
impl #impl_generics std::error::Error for #ty #ty_generics #error_where_clause {
221+
impl #impl_generics ::std::error::Error for #ty #ty_generics #error_where_clause {
222222
#source_method
223223
#provide_method
224224
}
@@ -238,11 +238,11 @@ fn impl_enum(input: Enum) -> TokenStream {
238238
if let Some(transparent_attr) = &variant.attrs.transparent {
239239
let only_field = &variant.fields[0];
240240
if only_field.contains_generic {
241-
error_inferred_bounds.insert(only_field.ty, quote!(std::error::Error));
241+
error_inferred_bounds.insert(only_field.ty, quote!(::std::error::Error));
242242
}
243243
let member = &only_field.member;
244244
let source = quote_spanned! {transparent_attr.span=>
245-
std::error::Error::source(transparent.as_dyn_error())
245+
::std::error::Error::source(transparent.as_dyn_error())
246246
};
247247
quote! {
248248
#ty::#ident {#member: transparent} => #source,
@@ -251,7 +251,7 @@ fn impl_enum(input: Enum) -> TokenStream {
251251
let source = &source_field.member;
252252
if source_field.contains_generic {
253253
let ty = unoptional_type(source_field.ty);
254-
error_inferred_bounds.insert(ty, quote!(std::error::Error + 'static));
254+
error_inferred_bounds.insert(ty, quote!(::std::error::Error + 'static));
255255
}
256256
let asref = if type_is_option(source_field.ty) {
257257
Some(quote_spanned!(source.span()=> .as_ref()?))
@@ -272,7 +272,7 @@ fn impl_enum(input: Enum) -> TokenStream {
272272
}
273273
});
274274
Some(quote! {
275-
fn source(&self) -> ::core::option::Option<&(dyn std::error::Error + 'static)> {
275+
fn source(&self) -> ::core::option::Option<&(dyn ::std::error::Error + 'static)> {
276276
use ::thiserror::__private::AsDynError as _;
277277
#[allow(deprecated)]
278278
match self {
@@ -309,12 +309,12 @@ fn impl_enum(input: Enum) -> TokenStream {
309309
let self_provide = if type_is_option(backtrace_field.ty) {
310310
quote! {
311311
if let ::core::option::Option::Some(backtrace) = backtrace {
312-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
312+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
313313
}
314314
}
315315
} else {
316316
quote! {
317-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
317+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
318318
}
319319
};
320320
quote! {
@@ -357,12 +357,12 @@ fn impl_enum(input: Enum) -> TokenStream {
357357
let body = if type_is_option(backtrace_field.ty) {
358358
quote! {
359359
if let ::core::option::Option::Some(backtrace) = backtrace {
360-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
360+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
361361
}
362362
}
363363
} else {
364364
quote! {
365-
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
365+
#request.provide_ref::<::std::backtrace::Backtrace>(backtrace);
366366
}
367367
};
368368
quote! {
@@ -377,7 +377,7 @@ fn impl_enum(input: Enum) -> TokenStream {
377377
}
378378
});
379379
Some(quote! {
380-
fn provide<'_request>(&'_request self, #request: &mut std::error::Request<'_request>) {
380+
fn provide<'_request>(&'_request self, #request: &mut ::std::error::Request<'_request>) {
381381
#[allow(deprecated)]
382382
match self {
383383
#(#arms)*
@@ -483,7 +483,7 @@ fn impl_enum(input: Enum) -> TokenStream {
483483
quote! {
484484
#[allow(unused_qualifications)]
485485
#[automatically_derived]
486-
impl #impl_generics std::error::Error for #ty #ty_generics #error_where_clause {
486+
impl #impl_generics ::std::error::Error for #ty #ty_generics #error_where_clause {
487487
#source_method
488488
#provide_method
489489
}
@@ -532,11 +532,11 @@ fn from_initializer(
532532
let backtrace_member = &backtrace_field.member;
533533
if type_is_option(backtrace_field.ty) {
534534
quote! {
535-
#backtrace_member: ::core::option::Option::Some(std::backtrace::Backtrace::capture()),
535+
#backtrace_member: ::core::option::Option::Some(::std::backtrace::Backtrace::capture()),
536536
}
537537
} else {
538538
quote! {
539-
#backtrace_member: ::core::convert::From::from(std::backtrace::Backtrace::capture()),
539+
#backtrace_member: ::core::convert::From::from(::std::backtrace::Backtrace::capture()),
540540
}
541541
}
542542
});

0 commit comments

Comments
 (0)