- if (CXXRecordDecl *InnerInitialState = getTemplateArgDecl(Base->getType().getTypePtr(), 2))
- state->setInitialInnerState(InnerInitialState->getName());
+ if (MyCXXRecordDecl *InnerInitialState =
+ static_cast<MyCXXRecordDecl*>(getTemplateArgDeclOfBase(Base, 2))) {
+ if (InnerInitialState->isDerivedFrom("boost::statechart::simple_state") ||
+ InnerInitialState->isDerivedFrom("boost::statechart::state_machine"))
+ state->setInitialInnerState(InnerInitialState->getName());
+ else
+ Diag(Base->getTypeSourceInfo()->getTypeLoc().getLocStart(), diag_warning)
+ << InnerInitialState->getQualifiedNameAsString() << " as inner initial state is not supported";
+ }