Added semantic checks for Q_ENUMS.

This commit is contained in:
Erik Verbruggen
2010-02-06 14:32:25 +01:00
parent ac6aba5ec3
commit 21488e8898
15 changed files with 184 additions and 77 deletions

View File

@@ -539,3 +539,48 @@ bool CheckUndefinedSymbols::visit(ObjCPropertyDeclarationAST *ast)
return false;
}
bool CheckUndefinedSymbols::visit(QtDeclareFlagsDeclarationAST *ast)
{
// ### check flags name too?
if (ast->enum_name && ast->enum_name->name) {
const Identifier *enumId = ast->enum_name->name->identifier();
if (!isType(enumId)) // ### we're only checking if the enum name is known as a type name, not as an *enum*.
translationUnit()->warning(ast->enum_name->firstToken(),
"unknown enum '%s'",
enumId->chars());
}
return false;
}
bool CheckUndefinedSymbols::visit(QtEnumDeclarationAST *ast)
{
for (NameListAST *iter = ast->enumerator_list; iter; iter = iter->next) {
if (! iter->value)
continue;
if (SimpleNameAST *enumName = iter->value->asSimpleName()) {
if (enumName->name) {
const Identifier *enumId = enumName->name->identifier();
if (!isType(enumId))// ### we're only checking if the enum name is known as a type name, not as an *enum*.
translationUnit()->warning(enumName->firstToken(),
"unknown enum '%s'",
enumId->chars());
}
}
}
return false;
}
bool CheckUndefinedSymbols::visit(QtFlagsDeclarationAST *)
{
// ### TODO
return false;
}
bool CheckUndefinedSymbols::visit(QtPropertyDeclarationAST *)
{
// ### TODO
return false;
}