Fixed #8270 (Tokenizer: wrong varid (using namespace std))
This commit is contained in:
parent
432ea03f59
commit
2408f01cc0
|
@ -2917,6 +2917,11 @@ static Token * matchMemberVarName(const Member &var, const std::list<ScopeInfo2>
|
|||
static Token * matchMemberFunctionName(const Member &func, const std::list<ScopeInfo2> &scopeInfo)
|
||||
{
|
||||
Token *tok = matchMemberName(func, scopeInfo);
|
||||
if (!tok) {
|
||||
const std::list<std::string> emptyScope;
|
||||
const Member m2(emptyScope,func.tok);
|
||||
tok = matchMemberName(m2, scopeInfo);
|
||||
}
|
||||
return Token::Match(tok, "~| %name% (") ? tok : nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -180,6 +180,8 @@ private:
|
|||
|
||||
TEST_CASE(varidnamespace1);
|
||||
TEST_CASE(varidnamespace2);
|
||||
TEST_CASE(usingNamespace1);
|
||||
TEST_CASE(usingNamespace2);
|
||||
}
|
||||
|
||||
std::string tokenize(const char code[], bool simplify = false, const char filename[] = "test.cpp") {
|
||||
|
@ -2849,6 +2851,30 @@ private:
|
|||
|
||||
ASSERT_EQUALS(expected, tokenize(code));
|
||||
}
|
||||
|
||||
void usingNamespace1() {
|
||||
const char code[] = "namespace NS {\n"
|
||||
" class A { int x; void dostuff(); };\n"
|
||||
"}\n"
|
||||
"using namespace NS;\n"
|
||||
"void A::dostuff() { x = 0; }\n";
|
||||
const char expected[] = "1: namespace NS {\n"
|
||||
"2: class A { int x@1 ; void dostuff ( ) ; } ;\n"
|
||||
"3: }\n"
|
||||
"4: using namespace NS ;\n"
|
||||
"5: void A :: dostuff ( ) { x@1 = 0 ; }\n";
|
||||
ASSERT_EQUALS(expected, tokenize(code));
|
||||
}
|
||||
|
||||
void usingNamespace2() {
|
||||
const char code[] = "class A { int x; void dostuff(); };\n"
|
||||
"using namespace NS;\n"
|
||||
"void A::dostuff() { x = 0; }\n";
|
||||
const char expected[] = "1: class A { int x@1 ; void dostuff ( ) ; } ;\n"
|
||||
"2: using namespace NS ;\n"
|
||||
"3: void A :: dostuff ( ) { x@1 = 0 ; }\n";
|
||||
ASSERT_EQUALS(expected, tokenize(code));
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_TEST(TestVarID)
|
||||
|
|
Loading…
Reference in New Issue