| 383 | } |
| 384 | |
| 385 | void QtSupport::visitCXXConstructExpr(clang::CXXConstructExpr* e) |
| 386 | { |
| 387 | clang::CXXConstructorDecl *methodDecl = e->getConstructor(); |
| 388 | if (!methodDecl || !methodDecl->getParent()) |
| 389 | return; |
| 390 | |
| 391 | auto parent = methodDecl->getParent(); |
| 392 | if (!parent->getName().startswith("Q")) |
| 393 | return; // only Qt classes |
| 394 | |
| 395 | if (parent->getName() == "QShortcut") { |
| 396 | if (e->getNumArgs() >= 3) |
| 397 | handleSignalOrSlot(e->getArg(1), e->getArg(2)); |
| 398 | if (e->getNumArgs() >= 4) |
| 399 | handleSignalOrSlot(e->getArg(1), e->getArg(3)); |
| 400 | } |
| 401 | if (parent->getName() == "QSignalSpy" || parent->getName() == "QSignalTransition") { |
| 402 | if (e->getNumArgs() >= 2) { |
| 403 | handleSignalOrSlot(e->getArg(0), e->getArg(1)); |
| 404 | } |
| 405 | } |
| 406 | } |
| 407 |
no outgoing calls
no test coverage detected