[Fix] BitPos can be negative

This commit is contained in:
Maik Klein 2018-08-20 09:55:41 +02:00
parent 8521f01488
commit e546fbbb5d
2 changed files with 1958 additions and 2043 deletions

File diff suppressed because it is too large Load diff

View file

@ -810,12 +810,13 @@ pub fn generate_extension_constants<'a>(
offset,
extends,
extnumber,
..
dir: positive,
} => {
let ext_base = 1_000_000_000;
let ext_block_size = 1000;
let extnumber = extnumber.unwrap_or_else(|| extension_number);
let value = ext_base + (extnumber - 1) * ext_block_size + offset;
let value = if *positive { value } else { -value };
Some((Constant::Number(value as i32), Some(extends.clone())))
}
_ => None,