MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / skipDecl

Function skipDecl

lib/tokenlist.cpp:451–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

449}
450
451static Token* skipDecl(Token* tok, std::vector<Token*>* inner = nullptr)
452{
453 auto isDecltypeFuncParam = [](const Token* tok) -> bool {
454 if (!Token::simpleMatch(tok, ")"))
455 return false;
456 tok = tok->next();
457 while (Token::Match(tok, "*|&|&&|const"))
458 tok = tok->next();
459 if (Token::simpleMatch(tok, "("))
460 tok = tok->link()->next();
461 return Token::Match(tok, "%name%| ,|)");
462 };
463
464 if (!Token::Match(tok->previous(), "( %name%"))
465 return tok;
466 Token *vartok = tok;
467 while (Token::Match(vartok, "%name%|*|&|&&|::|<")) {
468 if (vartok->str() == "<") {
469 if (vartok->link())
470 vartok = vartok->link();
471 else
472 return tok;
473 } else if (Token::Match(vartok, "%var% [:=({]")) {
474 return vartok;
475 } else if (Token::Match(vartok, "decltype|typeof (") && !isDecltypeFuncParam(tok->linkAt(1))) {
476 if (inner)
477 inner->push_back(vartok->tokAt(2));
478 return vartok->linkAt(1)->next();
479 }
480 vartok = vartok->next();
481 }
482 return tok;
483}
484
485static bool iscast(const Token *tok, bool cpp)
486{

Callers 2

compileTermFunction · 0.85
createAstAtTokenFunction · 0.85

Calls 6

nextMethod · 0.80
linkAtMethod · 0.80
simpleMatchFunction · 0.70
strMethod · 0.45
push_backMethod · 0.45
tokAtMethod · 0.45

Tested by

no test coverage detected