Skip to content

Commit b4f4eda

Browse files
mat-kiestadelmanma
authored andcommitted
Revert "propose discriminant check. Array should never contain values of differing discriminants"
This reverts commit 4fb4407.
1 parent a6f45d1 commit b4f4eda

File tree

1 file changed

+1
-23
lines changed

1 file changed

+1
-23
lines changed

fitparser/src/de/parser.rs

+1-23
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ use nom::sequence::tuple;
1212
use nom::{Err, IResult, Needed};
1313
use std::collections::HashMap;
1414
use std::convert::From;
15-
use std::mem::discriminant;
1615
use std::sync::Arc;
1716

1817
/// Define an is_valid function needed for parsing here, this function is not needed for normal use
@@ -37,23 +36,7 @@ impl Value {
3736
Value::SInt64(val) => *val != 0x7FFF_FFFF_FFFF_FFFF,
3837
Value::UInt64(val) => *val != 0xFFFF_FFFF_FFFF_FFFF,
3938
Value::UInt64z(val) => *val != 0x0,
40-
Value::Array(vals) => {
41-
if let Some(first) = vals
42-
.iter()
43-
.find(|&v| !matches!(v, Value::Invalid))
44-
.map(discriminant)
45-
{
46-
let mut same_type = true;
47-
let mut any_valid = false;
48-
for v in vals {
49-
same_type &= matches!(v, Value::Invalid) || discriminant(v) == first;
50-
any_valid |= v.is_valid();
51-
}
52-
same_type && any_valid
53-
} else {
54-
false
55-
}
56-
}
39+
Value::Array(vals) => !vals.is_empty() && vals.iter().any(|v| v.is_valid()),
5740
Value::Invalid => false,
5841
}
5942
}
@@ -827,10 +810,5 @@ mod tests {
827810
!val.is_valid(),
828811
"This Value array should be invalid since it contains no valid values"
829812
);
830-
let val = Value::Array(vec![Value::Byte(0x12), Value::UInt8(42u8)]);
831-
assert!(
832-
!val.is_valid(),
833-
"This Value array should be invalid since it contains differing discriminants"
834-
);
835813
}
836814
}

0 commit comments

Comments
 (0)