sysgpu: Shader compiler doesn't handle hexadecimal numbers with [eEfF] correctly #1340

Open
opened 2025-01-29 10:08:23 +00:00 by msg-programs · 0 comments
msg-programs commented 2025-01-29 10:08:23 +00:00 (Migrated from github.com)

Uppercase Fs in a hex number cause an error.

null:4:26 error: expected ';', but found 'an identifier'
4 │     let x: u32 = 1234 & 0xFF;
                              ^~

Lowercase fs cause a different issue:

null:4:24 error: hexadecimal float literals not implemented
4 │     let x: u32 = 1234 & 0xff;
                            ^~~~      

The same error occurs with hex numbers containing a singular e/E:

null:4:28 error: hexadecimal float literals not implemented
4 │     let x: u32 = 1234 & 0x0E;
                            ^~~~
null:4:28 error: hexadecimal float literals not implemented
4 │     let x: u32 = 1234 & 0x0e;
                            ^~~~

Finally, numbers containing two es/Es also cause an error:

null:4:24 error: duplicate exponent 'E'
4 │     let x: u32 = 123 & 0xEE;
                           ^~~~

Putting other digits between two es doesn't change this:

null:4:24 error: duplicate exponent 'e'
4 │     let x: u32 = 123 & 0xe123e;
                           ^~~~~~~
Uppercase `F`s in a hex number cause an error. ``` null:4:26 error: expected ';', but found 'an identifier' 4 │ let x: u32 = 1234 & 0xFF; ^~ ``` Lowercase `f`s cause a different issue: ``` null:4:24 error: hexadecimal float literals not implemented 4 │ let x: u32 = 1234 & 0xff; ^~~~ ``` The same error occurs with hex numbers containing a singular `e`/`E`: ``` null:4:28 error: hexadecimal float literals not implemented 4 │ let x: u32 = 1234 & 0x0E; ^~~~ null:4:28 error: hexadecimal float literals not implemented 4 │ let x: u32 = 1234 & 0x0e; ^~~~ ``` Finally, numbers containing two `e`s/`E`s also cause an error: ``` null:4:24 error: duplicate exponent 'E' 4 │ let x: u32 = 123 & 0xEE; ^~~~ ``` Putting other digits between two `e`s doesn't change this: ``` null:4:24 error: duplicate exponent 'e' 4 │ let x: u32 = 123 & 0xe123e; ^~~~~~~ ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hexops/mach#1340
No description provided.