Add a test case for overlapping IF/ENDC and REPT/ENDR

This trips an asserton in the Rust rewrite because of its different
conditional stack design
This commit is contained in:
Rangi42
2025-09-25 11:39:49 -04:00
committed by Rangi
parent 0670c03bc2
commit 96b953fe51
4 changed files with 13 additions and 7 deletions

View File

@@ -0,0 +1,4 @@
IF 1
REPT 1
ENDC ; misleading indentation!
ENDR

View File

@@ -0,0 +1,2 @@
FATAL: Found `ENDC` outside of a conditional (not after an `IF`/`ELIF`/`ELSE` block)
at misleading-indentation.asm::REPT~1(3) <- misleading-indentation.asm(2)

View File

@@ -62,7 +62,7 @@ fi
for i in *.asm notexist.asm; do for i in *.asm notexist.asm; do
flags=${i%.asm}.flags flags=${i%.asm}.flags
RGBASMFLAGS="-Weverything -B collapse" RGBASMFLAGS="-Weverything -Bcollapse"
if [ -f "$flags" ]; then if [ -f "$flags" ]; then
RGBASMFLAGS="$RGBASMFLAGS $(head -n 1 "$flags")" # Allow other lines to serve as comments RGBASMFLAGS="$RGBASMFLAGS $(head -n 1 "$flags")" # Allow other lines to serve as comments
fi fi
@@ -163,7 +163,7 @@ done
# These tests do their own thing # These tests do their own thing
i="continues-after-missing-include" i="continues-after-missing-include"
RGBASMFLAGS="-Weverything -B collapse -M - -MG -MC" RGBASMFLAGS="-Weverything -Bcollapse -M - -MG -MC"
# Piping the .asm file to rgbasm would not make sense for dependency generation, # Piping the .asm file to rgbasm would not make sense for dependency generation,
# so just test the normal variant # so just test the normal variant
(( tests++ )) (( tests++ ))
@@ -193,9 +193,9 @@ i="state-file"
if which cygpath &>/dev/null; then if which cygpath &>/dev/null; then
# MinGW translates path names before passing them as command-line arguments, # MinGW translates path names before passing them as command-line arguments,
# but does not do so when they are prefixed, so we have to do it ourselves. # but does not do so when they are prefixed, so we have to do it ourselves.
RGBASMFLAGS="-Weverything -B collapse -s all:$(cygpath -w "$o")" RGBASMFLAGS="-Weverything -Bcollapse -s all:$(cygpath -w "$o")"
else else
RGBASMFLAGS="-Weverything -B collapse -s all:$o" RGBASMFLAGS="-Weverything -Bcollapse -s all:$o"
fi fi
for variant in '' '.pipe'; do for variant in '' '.pipe'; do
(( tests++ )) (( tests++ ))

View File

@@ -73,7 +73,7 @@ tryCmpRomSize () {
} }
rgblinkQuiet () { rgblinkQuiet () {
out="$(env "$RGBLINK" -Weverything -B collapse "$@")" || return $? out="$(env "$RGBLINK" -Weverything -Bcollapse "$@")" || return $?
if [[ -n "$out" ]]; then if [[ -n "$out" ]]; then
echo "$bold${red}Linking shouldn't produce anything on stdout!${rescolors}${resbold}" echo "$bold${red}Linking shouldn't produce anything on stdout!${rescolors}${resbold}"
false false
@@ -266,8 +266,8 @@ evaluateTest
test="pipeline" test="pipeline"
startTest startTest
continueTest continueTest
("$RGBASM" -Weverything -B collapse -o - - | \ ("$RGBASM" -Weverything -Bcollapse -o - - | \
"$RGBLINK" -Weverything -B collapse -o - - | \ "$RGBLINK" -Weverything -Bcollapse -o - - | \
"$RGBFIX" -Weverything -v -p 0xff -) < "$test"/a.asm > "$gbtemp" "$RGBFIX" -Weverything -v -p 0xff -) < "$test"/a.asm > "$gbtemp"
# This test does not trim its output with 'dd' because it needs to verify the correct output size # This test does not trim its output with 'dd' because it needs to verify the correct output size
tryCmp "$test"/out.gb "$gbtemp" tryCmp "$test"/out.gb "$gbtemp"