Prevent passing assertions that RGBASM passed to RGBLINK

This commit is contained in:
ISSOtm
2020-03-22 10:46:26 +01:00
parent e233c5d256
commit 46a402f7d7
5 changed files with 17 additions and 10 deletions

View File

@@ -814,7 +814,11 @@ assert_type : /* empty */ { $$ = ASSERT_ERROR; }
assert : T_POP_ASSERT assert_type relocexpr assert : T_POP_ASSERT assert_type relocexpr
{ {
if (rpn_isKnown(&$3) && $3.nVal == 0) { if (!rpn_isKnown(&$3)) {
if (!out_CreateAssert($2, &$3, ""))
yyerror("Assertion creation failed: %s",
strerror(errno));
} else if ($3.nVal == 0) {
switch ($2) { switch ($2) {
case ASSERT_FATAL: case ASSERT_FATAL:
fatalerror("Assertion failed"); fatalerror("Assertion failed");
@@ -826,16 +830,16 @@ assert : T_POP_ASSERT assert_type relocexpr
"Assertion failed"); "Assertion failed");
break; break;
} }
} else {
if (!out_CreateAssert($2, &$3, ""))
yyerror("Assertion creation failed: %s",
strerror(errno));
} }
rpn_Free(&$3); rpn_Free(&$3);
} }
| T_POP_ASSERT assert_type relocexpr ',' string | T_POP_ASSERT assert_type relocexpr ',' string
{ {
if (rpn_isKnown(&$3) && $3.nVal == 0) { if (!rpn_isKnown(&$3)) {
if (!out_CreateAssert($2, &$3, $5))
yyerror("Assertion creation failed: %s",
strerror(errno));
} else if ($3.nVal == 0) {
switch ($2) { switch ($2) {
case ASSERT_FATAL: case ASSERT_FATAL:
fatalerror("Assertion failed: %s", fatalerror("Assertion failed: %s",
@@ -850,10 +854,6 @@ assert : T_POP_ASSERT assert_type relocexpr
$5); $5);
break; break;
} }
} else {
if (!out_CreateAssert($2, &$3, $5))
yyerror("Assertion creation failed: %s",
strerror(errno));
} }
rpn_Free(&$3); rpn_Free(&$3);
} }

View File

@@ -0,0 +1,7 @@
; The following link-time assertion is known by RGBASM to be okay.
; This previously caused it to still pass the assertion to RGBLINK with an empty
; RPN expression
SECTION "rgbasm passing asserts", ROM0[0]
db 0
assert @

View File

View File

Binary file not shown.