forked from extern/nushell
fix conflict between filesize and hexadecimal numbers (#9309)
closes #9278 # Description removes ambiguity between the `b` the filesize `bytes` unit and `b` the hex digit
This commit is contained in:
parent
3005fe10e5
commit
cc04b9a916
@ -2217,6 +2217,12 @@ pub fn parse_filesize(working_set: &mut StateWorkingSet, span: Span) -> Expressi
|
|||||||
|
|
||||||
let bytes = working_set.get_span_contents(span);
|
let bytes = working_set.get_span_contents(span);
|
||||||
|
|
||||||
|
// the hex digit `b` might be mistaken for the unit `b`, so check that first
|
||||||
|
if bytes.starts_with(b"0x") {
|
||||||
|
working_set.error(ParseError::Expected("filesize with valid units", span));
|
||||||
|
return garbage(span);
|
||||||
|
}
|
||||||
|
|
||||||
match parse_unit_value(bytes, span, FILESIZE_UNIT_GROUPS, Type::Filesize, |x| {
|
match parse_unit_value(bytes, span, FILESIZE_UNIT_GROUPS, Type::Filesize, |x| {
|
||||||
x.to_uppercase()
|
x.to_uppercase()
|
||||||
}) {
|
}) {
|
||||||
|
@ -561,3 +561,8 @@ fn filesize_with_underscores_2() -> TestResult {
|
|||||||
fn filesize_with_underscores_3() -> TestResult {
|
fn filesize_with_underscores_3() -> TestResult {
|
||||||
fail_test("42m_b", "executable was not found")
|
fail_test("42m_b", "executable was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn filesize_is_not_hex() -> TestResult {
|
||||||
|
run_test("0x42b", "1067")
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user