Tokenizer::setVarId : fixed problem for class members
This commit is contained in:
parent
3dd504bcb2
commit
741ce40e3d
|
@ -3069,6 +3069,7 @@ void Tokenizer::setVarId()
|
||||||
}
|
}
|
||||||
else if (indentlevel > 0 &&
|
else if (indentlevel > 0 &&
|
||||||
tok2->varId() == 0 &&
|
tok2->varId() == 0 &&
|
||||||
|
!Token::simpleMatch(tok2->previous(), ".") &&
|
||||||
varlist.find(tok2->str()) != varlist.end())
|
varlist.find(tok2->str()) != varlist.end())
|
||||||
{
|
{
|
||||||
tok2->varId(varlist[tok2->str()]);
|
tok2->varId(varlist[tok2->str()]);
|
||||||
|
|
|
@ -152,7 +152,8 @@ private:
|
||||||
TEST_CASE(varid_delete);
|
TEST_CASE(varid_delete);
|
||||||
TEST_CASE(varid_functions);
|
TEST_CASE(varid_functions);
|
||||||
TEST_CASE(varid_reference_to_containers);
|
TEST_CASE(varid_reference_to_containers);
|
||||||
TEST_CASE(varid_in_class);
|
TEST_CASE(varid_in_class1);
|
||||||
|
TEST_CASE(varid_in_class2);
|
||||||
TEST_CASE(varid_operator);
|
TEST_CASE(varid_operator);
|
||||||
TEST_CASE(varid_throw);
|
TEST_CASE(varid_throw);
|
||||||
|
|
||||||
|
@ -2526,7 +2527,7 @@ private:
|
||||||
ASSERT_EQUALS(expected, actual);
|
ASSERT_EQUALS(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
void varid_in_class()
|
void varid_in_class1()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
const std::string actual = tokenizeDebugListing(
|
const std::string actual = tokenizeDebugListing(
|
||||||
|
@ -2583,6 +2584,41 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void varid_in_class2()
|
||||||
|
{
|
||||||
|
const std::string actual = tokenizeDebugListing(
|
||||||
|
"struct Foo {\n"
|
||||||
|
" int x;\n"
|
||||||
|
"};\n"
|
||||||
|
"\n"
|
||||||
|
"struct Bar {\n"
|
||||||
|
" Foo foo;\n"
|
||||||
|
" int x;\n"
|
||||||
|
" void f();\n"
|
||||||
|
"};\n"
|
||||||
|
"\n"
|
||||||
|
"void Bar::f()\n"
|
||||||
|
"{\n"
|
||||||
|
" foo.x = x;\n"
|
||||||
|
"}\n");
|
||||||
|
const std::string expected("\n\n##file 0\n"
|
||||||
|
"1: struct Foo {\n"
|
||||||
|
"2: int x@1 ;\n"
|
||||||
|
"3: } ;\n"
|
||||||
|
"4:\n"
|
||||||
|
"5: struct Bar {\n"
|
||||||
|
"6: Foo foo@2 ;\n"
|
||||||
|
"7: int x@3 ;\n"
|
||||||
|
"8: void f ( ) ;\n"
|
||||||
|
"9: } ;\n"
|
||||||
|
"10:\n"
|
||||||
|
"11: void Bar :: f ( )\n"
|
||||||
|
"12: {\n"
|
||||||
|
"13: foo@2 . x = x@3 ;\n" // TODO: it would be even better if the ". x" was ". x@4" instead
|
||||||
|
"14: }\n");
|
||||||
|
ASSERT_EQUALS(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
void varid_operator()
|
void varid_operator()
|
||||||
{
|
{
|
||||||
const std::string actual = tokenizeDebugListing(
|
const std::string actual = tokenizeDebugListing(
|
||||||
|
|
Loading…
Reference in New Issue