forked from qt-creator/qt-creator
Added semantic checks for Q_ENUMS.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user