diff --git a/src/script/C4AulParse.cpp b/src/script/C4AulParse.cpp index b46183d7e..a7f5c4f7a 100644 --- a/src/script/C4AulParse.cpp +++ b/src/script/C4AulParse.cpp @@ -131,7 +131,7 @@ void C4ScriptHost::Warn(const char *pMsg, ...) void C4AulParse::Warn(C4AulWarningId warning, ...) { - if (!pOrgScript->IsWarningEnabled(TokenSPos, warning)) + if (!IsWarningEnabled(TokenSPos, warning)) return; va_list args; va_start(args, warning); StdStrBuf Buf = FormatStringV(C4AulWarningMessages[static_cast(warning)], args); @@ -141,6 +141,19 @@ void C4AulParse::Warn(C4AulWarningId warning, ...) va_end(args); } +bool C4AulParse::IsWarningEnabled(const char *pos, C4AulWarningId warning) const +{ + if (pOrgScript) return pOrgScript->IsWarningEnabled(pos, warning); + // In DirectExec, the default warnings are always active. + switch (warning) + { +#define DIAG(id, text, enabled) case C4AulWarningId::id: return enabled; +#include "C4AulWarnings.h" +#undef DIAG + default: return false; + } +} + void C4AulParse::Error(const char *pMsg, ...) { va_list args; va_start(args, pMsg); diff --git a/src/script/C4AulParse.h b/src/script/C4AulParse.h index 1a018af48..1ad361988 100644 --- a/src/script/C4AulParse.h +++ b/src/script/C4AulParse.h @@ -95,6 +95,7 @@ private: NORETURN void UnexpectedToken(const char * Expected); void Warn(C4AulWarningId warning, ...); + bool IsWarningEnabled(const char *pos, C4AulWarningId warning) const; void Error(const char *pMsg, ...) GNUC_FORMAT_ATTRIBUTE_O; void AppendPosition(StdStrBuf & Buf);