From 72cf4322f409f8ef1095f2d6ecd428ca02c047c5 Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Mon, 3 Sep 2012 09:23:37 +0200 Subject: [PATCH] Add more warnings --- src/visualizer.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/visualizer.cpp b/src/visualizer.cpp index ea39148..8a41710 100644 --- a/src/visualizer.cpp +++ b/src/visualizer.cpp @@ -308,14 +308,20 @@ public: // TODO: Lookup for react even in base classes - probably by using Sema::LookupQualifiedName() for (DeclContext::lookup_const_result ReactRes = SrcState->lookup(DeclarationName(&II)); ReactRes.first != ReactRes.second; ++ReactRes.first) { - if (CXXMethodDecl *React = dyn_cast(*ReactRes.first)) - if (const ParmVarDecl *p = React->getParamDecl(0)) { + if (CXXMethodDecl *React = dyn_cast(*ReactRes.first)) { + if (React->getNumParams() >= 1) { + const ParmVarDecl *p = React->getParamDecl(0); const Type *ParmType = p->getType().getTypePtr(); if (ParmType->isLValueReferenceType()) ParmType = dyn_cast(ParmType)->getPointeeType().getTypePtr(); if (ParmType == EventType) FindTransitVisitor(model, SrcState, EventType).TraverseStmt(React->getBody()); - } + } else + Diag(React->getLocStart(), diag_warning) + << React << "has not a parameter"; + } else + Diag((*ReactRes.first)->getSourceRange().getBegin(), diag_warning) + << (*ReactRes.first)->getDeclKindName() << "is not supported as react method"; } } -- 2.39.2