diff --git a/src/tokenize.cpp b/src/tokenize.cpp index e02271016..71a97335e 100644 --- a/src/tokenize.cpp +++ b/src/tokenize.cpp @@ -748,7 +748,7 @@ void Tokenizer::setVarId() if (tok->str() == "const") tok = tok->next(); - if (Token::simpleMatch(tok, "std ::")) + while (Token::Match(tok, "%var% ::")) tok = tok->tokAt(2); // Skip template arguments.. @@ -756,7 +756,7 @@ void Tokenizer::setVarId() { Token *tok2 = tok->tokAt(2); - if (Token::simpleMatch(tok2, "std ::")) + while (Token::Match(tok2, "%var% ::")) tok2 = tok2->tokAt(2); while (tok2 && (tok2->isName() || tok2->str() == "*" || tok2->str() == ",")) diff --git a/test/testtokenize.cpp b/test/testtokenize.cpp index fd146838c..8cda31c49 100644 --- a/test/testtokenize.cpp +++ b/test/testtokenize.cpp @@ -1275,7 +1275,10 @@ private: const std::string code("list ints;\n" "list::iterator it;\n" "std::vector dirs;\n" - "std::map coords;\n"); + "std::map coords;\n" + "std::tr1::unordered_map xy;\n" + "std::list tokens;\n" + ); // tokenize.. Tokenizer tokenizer; @@ -1289,7 +1292,10 @@ private: "1: list < int > ints@1 ;\n" "2: list < int > :: iterator it@2 ;\n" "3: std :: vector < std :: string > dirs@3 ;\n" - "4: std :: map < int , int > coords@4 ;\n"); + "4: std :: map < int , int > coords@4 ;\n" + "5: std :: tr1 :: unordered_map < int , int > xy@5 ;\n" + "6: std :: list < boost :: wave :: token_id > tokens@6 ;\n" + ); ASSERT_EQUALS(expected, actual); }