Files
ldc/gen/warnings.cpp
kai 2dbee75523 Prefer C++-style casts.
This is based on Item 2 of "More Effective C++". In general, the C++ cast operators are more expressive and easy to find,
e.g. by grep. Using const_cast also shuts up some compiler warnings.
2012-08-02 19:55:29 +02:00

34 lines
748 B
C++

#include "mars.h"
#include "mtype.h"
#include "expression.h"
#include "gen/warnings.h"
void warnInvalidPrintfCall(Loc loc, Expression* arguments, size_t nargs)
{
Expression* arg = arguments;
// make sure first argument is a string literal, or we can't do much
// TODO make it smarter ?
if (arg->op != TOKstring)
return; // assume valid
StringExp* strexp = static_cast<StringExp*>(arg);
// not wchar or dhar
if (strexp->sz != 1)
{
warning(loc, "printf does not support wchar and dchar strings");
return;
}
#if 0
// check the format string
const char* str = static_cast<char*>(strexp->string);
for (size_t i = 0; i < strexp->len; ++i)
{
// TODO
}
#endif
}