Merge pull request #94 from jadziamd/main

Adds Diagnostic Directives & Fixes comparison between different enumeration types
This commit is contained in:
drmortalwombat 2024-09-15 12:16:24 +02:00 committed by GitHub
commit 163354b33e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 1 deletions

View File

@ -33490,7 +33490,7 @@ bool NativeCodeBasicBlock::MoveLoadLogicStoreAbsUp(int at)
if (mIns[j].ChangesZeroPage(mIns[at + 0].mAddress)) if (mIns[j].ChangesZeroPage(mIns[at + 0].mAddress))
return false; return false;
if (mIns[at + 1].mType == ASMIM_ZERO_PAGE && mIns[j].ChangesZeroPage(mIns[at + 1].mAddress)) if (mIns[at + 1].mMode == ASMIM_ZERO_PAGE && mIns[j].ChangesZeroPage(mIns[at + 1].mAddress))
return false; return false;
if (mIns[j].UsesMemoryOf(mIns[at + 2])) if (mIns[j].UsesMemoryOf(mIns[at + 2]))

View File

@ -143,6 +143,8 @@ const char* TokenNames[] =
"'#endif'", "'#endif'",
"'#ifdef'", "'#ifdef'",
"'#ifndef'", "'#ifndef'",
"'#error'",
"'#warning'",
"'#pragma'", "'#pragma'",
"'#line'", "'#line'",
@ -769,6 +771,33 @@ void Scanner::NextPreToken(void)
mOffset++; mOffset++;
} }
} }
else if (mToken == TK_PREP_ERROR)
{
NextRawToken();
if (mToken == TK_STRING)
{
mErrors->Error(mLocation, ERRR_PREPROCESSOR, (const char*)mTokenString);
}
else
{
mErrors->Error(mLocation, EERR_INVALID_PREPROCESSOR, "Missing or invalid error message");
}
exit(EXIT_FAILURE);
}
else if (mToken == TK_PREP_WARN)
{
NextRawToken();
if (mToken == TK_STRING)
{
this->Warning((const char*)mTokenString);
}
else
{
this->Warning("Missing or invalid warning message");
}
}
else if (mToken == TK_PREP_IDENT) else if (mToken == TK_PREP_IDENT)
{ {
Macro* def = nullptr; Macro* def = nullptr;
@ -1149,6 +1178,10 @@ void Scanner::NextSkipRawToken(void)
if (!strcmp(tkprep, "define")) if (!strcmp(tkprep, "define"))
mToken = TK_PREP_DEFINE; mToken = TK_PREP_DEFINE;
else if (!strcmp(tkprep, "error"))
mToken = TK_PREP_ERROR;
else if (!strcmp(tkprep, "warning"))
mToken = TK_PREP_WARN;
else if (!strcmp(tkprep, "undef")) else if (!strcmp(tkprep, "undef"))
mToken = TK_PREP_UNDEF; mToken = TK_PREP_UNDEF;
else if (!strcmp(tkprep, "include")) else if (!strcmp(tkprep, "include"))
@ -1537,6 +1570,10 @@ void Scanner::NextRawToken(void)
if (!strcmp(tkprep, "define")) if (!strcmp(tkprep, "define"))
mToken = TK_PREP_DEFINE; mToken = TK_PREP_DEFINE;
else if (!strcmp(tkprep, "error"))
mToken = TK_PREP_ERROR;
else if (!strcmp(tkprep, "warning"))
mToken = TK_PREP_WARN;
else if (!strcmp(tkprep, "undef")) else if (!strcmp(tkprep, "undef"))
mToken = TK_PREP_UNDEF; mToken = TK_PREP_UNDEF;
else if (!strcmp(tkprep, "include")) else if (!strcmp(tkprep, "include"))

View File

@ -141,6 +141,8 @@ enum Token
TK_PREP_ENDIF, TK_PREP_ENDIF,
TK_PREP_IFDEF, TK_PREP_IFDEF,
TK_PREP_IFNDEF, TK_PREP_IFNDEF,
TK_PREP_ERROR,
TK_PREP_WARN,
TK_PREP_PRAGMA, TK_PREP_PRAGMA,
TK_PREP_LINE, TK_PREP_LINE,