summaryrefslogtreecommitdiffstats
path: root/vendor/thiserror-impl/src/valid.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/thiserror-impl/src/valid.rs')
-rw-r--r--vendor/thiserror-impl/src/valid.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/vendor/thiserror-impl/src/valid.rs b/vendor/thiserror-impl/src/valid.rs
index 7657265ef..cf5b8592c 100644
--- a/vendor/thiserror-impl/src/valid.rs
+++ b/vendor/thiserror-impl/src/valid.rs
@@ -180,7 +180,11 @@ fn check_field_attrs(fields: &[Field]) -> Result<()> {
}
}
if let Some(from_field) = from_field {
- if fields.len() > 1 + has_backtrace as usize {
+ let max_expected_fields = match backtrace_field {
+ Some(backtrace_field) => 1 + !same_member(from_field, backtrace_field) as usize,
+ None => 1 + has_backtrace as usize,
+ };
+ if fields.len() > max_expected_fields {
return Err(Error::new_spanned(
from_field.attrs.from,
"deriving From requires no fields other than source and backtrace",