forked from koniifer/ableos
fixed confused shift tokens (I still dont know which side is left)
This commit is contained in:
parent
c0e5447ddd
commit
d8875ecdca
|
@ -517,3 +517,29 @@ foo := fn(): Foo {
|
||||||
|
|
||||||
Foo := struct {x: int, y: u32, z: u32}
|
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_module_name = module_name;
|
||||||
last_start = i + m.len() + module_name.len() + 1;
|
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| {
|
let loader = |path: &str, _: &str| {
|
||||||
module_map
|
module_map
|
||||||
|
@ -3338,5 +3339,6 @@ mod tests {
|
||||||
arrays => README;
|
arrays => README;
|
||||||
struct_return_from_module_function => README;
|
struct_return_from_module_function => README;
|
||||||
comptime_pointers => README;
|
comptime_pointers => README;
|
||||||
|
sort_something_viredly => README;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,9 +98,9 @@ pub enum TokenKind {
|
||||||
Dot = b'.',
|
Dot = b'.',
|
||||||
Div = b'/',
|
Div = b'/',
|
||||||
// Unused = 2-6
|
// Unused = 2-6
|
||||||
Shr = b'<' - 5,
|
Shl = b'<' - 5,
|
||||||
// Unused = 8
|
// Unused = 8
|
||||||
Shl = b'>' - 5,
|
Shr = b'>' - 5,
|
||||||
Colon = b':',
|
Colon = b':',
|
||||||
Semi = b';',
|
Semi = b';',
|
||||||
Lt = b'<',
|
Lt = b'<',
|
||||||
|
@ -159,14 +159,14 @@ pub enum TokenKind {
|
||||||
ModAss = b'%' + 128,
|
ModAss = b'%' + 128,
|
||||||
XorAss = b'^' + 128,
|
XorAss = b'^' + 128,
|
||||||
BandAss = b'&' + 128,
|
BandAss = b'&' + 128,
|
||||||
ShlAss = b'0' + 128,
|
ShrAss = b'>' - 5 + 128,
|
||||||
ShrAss = b'1' + 128,
|
ShlAss = b'<' - 5 + 128,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TokenKind {
|
impl TokenKind {
|
||||||
pub fn ass_op(self) -> Option<Self> {
|
pub fn ass_op(self) -> Option<Self> {
|
||||||
let id = (self as u8).saturating_sub(128);
|
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;
|
return None;
|
||||||
}
|
}
|
||||||
Some(unsafe { std::mem::transmute::<u8, Self>(id) })
|
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