shithub: rgbds

Download patch

ref: 92134d7684dd4cf4753eac184ad940f80acee943
parent: 4877bb783cfd7ef9ec8190c71663c68530024026
author: ISSOtm <eldredhabert0@gmail.com>
date: Sun Mar 22 06:59:12 EDT 2020

Add testing for assertions inside unionized sections

--- /dev/null
+++ b/test/link/section-union/assert.asm
@@ -1,0 +1,18 @@
+IF !DEF(SECOND)
+OFS = 42
+ELSE
+OFS = 69
+ENDC
+
+BASE = $C0DE
+
+SECTION UNION "assertions in unions", WRAM0
+IF DEF(SECOND)
+	assert @ != BASE, "Force failing the build" ; Force failure in RGBLINK, though
+ENDC
+	ds OFS
+	assert @ == BASE + OFS, "This assertion should not trigger"
+
+; Only make RGBASM aware of the section's location *after* it sees the assertion
+; This forces it to pass it to RGBLINK
+SECTION UNION "assertions in unions", WRAM0[BASE]
--- /dev/null
+++ b/test/link/section-union/assert.out
@@ -1,0 +1,6 @@
+section-union/assert.asm(11): Force failing the build
+error: 1 assertions failed!
+---
+ERROR: -(30):
+    Assertion failed: Force failing the build
+error: Assembly aborted (1 errors)!
--- a/test/link/test.sh
+++ b/test/link/test.sh
@@ -84,7 +84,7 @@
 $RGBASM -o $gbtemp2 section-union/good/b.asm
 $RGBLINK -o $gbtemp -l section-union/good/script.link $otemp $gbtemp2
 dd if=$gbtemp count=1 bs=$(printf %s $(wc -c < section-union/good/ref.out.bin)) > $otemp 2>/dev/null
-i="section-union.asm" tryCmp section-union/good/ref.out.bin $otemp
+i="section-union/good.asm" tryCmp section-union/good/ref.out.bin $otemp
 rc=$(($? || $rc))
 for i in section-union/*.asm; do
 	$RGBASM -o $otemp   $i