mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
Make ENDL optional like ENDSECTION (#1538)
Add warning for `LOAD` without `ENDL`
This commit is contained in:
@@ -1,2 +1,5 @@
|
||||
FATAL: endsection-in-load.asm(3):
|
||||
Cannot end the section within a `LOAD` block
|
||||
warning: endsection-in-load.asm(3): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `ENDSECTION`
|
||||
error: endsection-in-load.asm(4):
|
||||
Found `ENDL` outside of a `LOAD` block
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
51
test/asm/load-endings.asm
Normal file
51
test/asm/load-endings.asm
Normal file
@@ -0,0 +1,51 @@
|
||||
MACRO data
|
||||
db SECTION(@), \#
|
||||
ENDM
|
||||
|
||||
MACRO now_in
|
||||
if strcmp("\1", "nothing")
|
||||
assert !strcmp(SECTION(@), \1)
|
||||
else
|
||||
assert !def(@)
|
||||
endc
|
||||
ENDM
|
||||
|
||||
now_in nothing
|
||||
|
||||
SECTION "A", ROM0
|
||||
now_in "A"
|
||||
data 1
|
||||
LOAD "P", WRAM0
|
||||
now_in "P"
|
||||
data 2
|
||||
|
||||
; LOAD after LOAD
|
||||
LOAD "Q", WRAM0
|
||||
now_in "Q"
|
||||
data 3
|
||||
|
||||
; SECTION after LOAD
|
||||
SECTION "B", ROM0
|
||||
now_in "B"
|
||||
data 4
|
||||
LOAD "R", WRAM0
|
||||
now_in "R"
|
||||
data 5
|
||||
|
||||
; PUSHS after LOAD
|
||||
PUSHS
|
||||
SECTION "C", ROM0
|
||||
now_in "C"
|
||||
data 6
|
||||
LOAD "S", WRAM0
|
||||
now_in "S"
|
||||
data 7
|
||||
|
||||
; POPS after LOAD
|
||||
POPS
|
||||
now_in "R"
|
||||
data 8
|
||||
|
||||
; ENDSECTION after LOAD
|
||||
ENDSECTION
|
||||
now_in nothing
|
||||
8
test/asm/load-endings.err
Normal file
8
test/asm/load-endings.err
Normal file
@@ -0,0 +1,8 @@
|
||||
warning: load-endings.asm(23): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `LOAD`
|
||||
warning: load-endings.asm(28): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `SECTION`
|
||||
warning: load-endings.asm(45): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `POPS`
|
||||
warning: load-endings.asm(50): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `ENDSECTION`
|
||||
1
test/asm/load-endings.out.bin
Normal file
1
test/asm/load-endings.out.bin
Normal file
@@ -0,0 +1 @@
|
||||
BRRAPQCS
|
||||
@@ -1,5 +1,5 @@
|
||||
SECTION "outer", ROM0
|
||||
LOAD "inner", WRAM0
|
||||
LOAD "matryoshka", HRAM
|
||||
ENDL
|
||||
ENDL
|
||||
LOAD "inner1", WRAM0 ; starts "inner1"
|
||||
LOAD "inner2", HRAM ; ends "inner1", starts "inner2"
|
||||
ENDL ; ends "inner2"
|
||||
ENDL ; error
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: load-in-load.asm(3):
|
||||
`LOAD` blocks cannot be nested
|
||||
warning: load-in-load.asm(3): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `LOAD`
|
||||
error: load-in-load.asm(5):
|
||||
Found `ENDL` outside of a `LOAD` block
|
||||
error: Assembly aborted (2 errors)!
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
def p = {{a}}
|
||||
def q = "{b}"
|
||||
def r = "{{c}}"
|
||||
def r = "{{c}}"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SECTION "outer", ROM0
|
||||
SECTION "outer1", ROM0
|
||||
LOAD "ram", WRAM0
|
||||
SECTION "inner", ROM0
|
||||
SECTION "outer2", ROM0
|
||||
ENDL
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
FATAL: section-in-load.asm(3):
|
||||
Cannot change the section within a `LOAD` block
|
||||
warning: section-in-load.asm(3): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by `SECTION`
|
||||
error: section-in-load.asm(4):
|
||||
Found `ENDL` outside of a `LOAD` block
|
||||
error: Assembly aborted (1 error)!
|
||||
|
||||
2
test/asm/unterminated-load.asm
Normal file
2
test/asm/unterminated-load.asm
Normal file
@@ -0,0 +1,2 @@
|
||||
SECTION "rom", ROM0
|
||||
LOAD "ram", WRAM0
|
||||
2
test/asm/unterminated-load.err
Normal file
2
test/asm/unterminated-load.err
Normal file
@@ -0,0 +1,2 @@
|
||||
warning: unterminated-load.asm(3): [-Wunterminated-load]
|
||||
`LOAD` block without `ENDL` terminated by EOF
|
||||
Reference in New Issue
Block a user