]> rtime.felk.cvut.cz Git - boost-statechart-viewer.git/commitdiff
Fix inner initial state.
authorPetr Silhavik <silhavik.p@gmail.com>
Fri, 28 Dec 2012 15:52:25 +0000 (16:52 +0100)
committerPetr Silhavik <silhavik.p@gmail.com>
Fri, 28 Dec 2012 15:52:25 +0000 (16:52 +0100)
There was a bug when finding inner initial states. If there was inner initial state, his name was ignored. As inner initial state was fixly used the second template argument. This argument means the outer context.

src/visualizer.cpp

index 8a39b55442b21eb4623ec761942c4f4d84e28768..60308f7c9ba0ec80a340f7d058917c7fdfe494d4 100644 (file)
@@ -376,18 +376,19 @@ public:
            if (TST->getNumArgs() >= ArgNum+1) {
                return TST->getArgLoc(ArgNum);
            } else
-               Diag(TST->getBeginLoc(), diag_warning) << TST->getType()->getTypeClassName() << "has not enough arguments" << TST->getSourceRange();
+               if(ArgNum!=2)
+                   Diag(TST->getBeginLoc(), diag_warning) << TST->getType()->getTypeClassName() << "has not enough arguments" << TST->getSourceRange();
        } else
            Diag(T.getBeginLoc(), diag_warning) << T.getType()->getTypeClassName() << "type as template argument is not supported" << T.getSourceRange();
        return TemplateArgumentLoc();
     }
 
     TemplateArgumentLoc getTemplateArgLocOfBase(const CXXBaseSpecifier *Base, unsigned ArgNum) {
-       return getTemplateArgLoc(Base->getTypeSourceInfo()->getTypeLoc(), 1);
+       return getTemplateArgLoc(Base->getTypeSourceInfo()->getTypeLoc(), ArgNum);
     }
 
     CXXRecordDecl *getTemplateArgDeclOfBase(const CXXBaseSpecifier *Base, unsigned ArgNum, TemplateArgumentLoc &Loc) {
-       Loc = getTemplateArgLocOfBase(Base, 1);
+       Loc = getTemplateArgLocOfBase(Base, ArgNum);
        switch (Loc.getArgument().getKind()) {
        case TemplateArgument::Type:
            return Loc.getTypeSourceInfo()->getType()->getAsCXXRecordDecl();