fixed confused shift tokens (I still dont know which side is left)
This commit is contained in:
parent
5a6474f066
commit
9af7bf559f
|
@ -517,3 +517,29 @@ foo := fn(): Foo {
|
|||
|
||||
Foo := struct {x: int, y: u32, z: u32}
|
||||
```
|
||||
|
||||
#### sort_something_viredly
|
||||
```hb
|
||||
main := fn(): int {
|
||||
foo := sqrt
|
||||
return 0
|
||||
}
|
||||
|
||||
sqrt := fn(x: int): int {
|
||||
temp := 0
|
||||
g := 0
|
||||
b := 32768
|
||||
bshift := 15
|
||||
loop if b == 0 break else {
|
||||
bshift -= 1
|
||||
temp = b + (g << 1)
|
||||
temp <<= bshift
|
||||
if x >= temp {
|
||||
g += b
|
||||
x -= temp
|
||||
}
|
||||
b >>= 1
|
||||
}
|
||||
return g
|
||||
}
|
||||
```
|
||||
|
|
|
@ -3247,7 +3247,8 @@ mod tests {
|
|||
last_module_name = module_name;
|
||||
last_start = i + m.len() + module_name.len() + 1;
|
||||
}
|
||||
module_map.push((last_module_name, &input[last_start..]));
|
||||
parser::test::format(ident, input[last_start..].trim());
|
||||
module_map.push((last_module_name, input[last_start..].trim()));
|
||||
|
||||
let loader = |path: &str, _: &str| {
|
||||
module_map
|
||||
|
@ -3338,5 +3339,6 @@ mod tests {
|
|||
arrays => README;
|
||||
struct_return_from_module_function => README;
|
||||
comptime_pointers => README;
|
||||
sort_something_viredly => README;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,9 +98,9 @@ pub enum TokenKind {
|
|||
Dot = b'.',
|
||||
Div = b'/',
|
||||
// Unused = 2-6
|
||||
Shr = b'<' - 5,
|
||||
Shl = b'<' - 5,
|
||||
// Unused = 8
|
||||
Shl = b'>' - 5,
|
||||
Shr = b'>' - 5,
|
||||
Colon = b':',
|
||||
Semi = b';',
|
||||
Lt = b'<',
|
||||
|
@ -159,14 +159,14 @@ pub enum TokenKind {
|
|||
ModAss = b'%' + 128,
|
||||
XorAss = b'^' + 128,
|
||||
BandAss = b'&' + 128,
|
||||
ShlAss = b'0' + 128,
|
||||
ShrAss = b'1' + 128,
|
||||
ShrAss = b'>' - 5 + 128,
|
||||
ShlAss = b'<' - 5 + 128,
|
||||
}
|
||||
|
||||
impl TokenKind {
|
||||
pub fn ass_op(self) -> Option<Self> {
|
||||
let id = (self as u8).saturating_sub(128);
|
||||
if ascii_mask(b"|+-*/%^&01") & (1u128 << id) == 0 {
|
||||
if ascii_mask(b"|+-*/%^&79") & (1u128 << id) == 0 {
|
||||
return None;
|
||||
}
|
||||
Some(unsafe { std::mem::transmute::<u8, Self>(id) })
|
||||
|
|
3
hblang/tests/codegen_tests_sort_something_viredly.txt
Normal file
3
hblang/tests/codegen_tests_sort_something_viredly.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
code size: 357
|
||||
ret: 0
|
||||
status: Ok(())
|
Loading…
Reference in a new issue