Add assertions

Closes #292
This commit is contained in:
ISSOtm
2020-03-05 02:58:48 +01:00
parent 03967bd623
commit fb58166e5d
18 changed files with 506 additions and 82 deletions

23
test/asm/assert.asm Normal file
View File

@@ -0,0 +1,23 @@
SECTION "fixed", ROM0[0]
FixedBase:
assert FixedBase ; This should eval (and fail) at compile time
ds 0
static_assert @ == 0, "@ ain't 0 now? (Hint: it's {@})"
ds 42
assert WARN, @ - FixedBase != 42 ; This should also eval at compile time
SECTION "floating", ROM0
FloatingBase:
assert FAIL, FloatingBase == 0 ; This shouldn't eval at compile time
ds 4
static_assert FAIL, FloatingBase != 0 ; This is not constant!
ds 69
static_assert FATAL, FixedBase != 0 ; This will fail... ↓
; The point of `FATAL` is for stuff that can, say, cause division by 0!
static_assert FAIL, 1 / FixedBase, "You dun goofed, son" ; Won't be read

10
test/asm/assert.err Normal file
View File

@@ -0,0 +1,10 @@
ERROR: assert.asm(4):
Assertion failed
warning: assert.asm(10): [-Wassert]
Assertion failed
ERROR: assert.asm(18):
Expected constant expression: 'FloatingBase' is not constant at assembly time
ERROR: assert.asm(18):
Assertion failed
ERROR: assert.asm(21):
Assertion failed

0
test/asm/assert.out Normal file
View File