@loaden:
rev7176, you add a function call
// After add a variable token, we should skip to semicolon
SkipToOneOfChars(ParserConsts::semicolonclbrace, true);
m_Str.Clear();
But look at the DoParse() code:
case ParserConsts::semicolon_chr:
{
m_Str.Clear();
m_PointerOrRef.Clear();
// Notice: clears the queue "m_EncounteredTypeNamespaces"
while (!m_EncounteredTypeNamespaces.empty())
m_EncounteredTypeNamespaces.pop();
m_TemplateArgument.Clear();
}
break;
So, if you Get(eat) the semicolon too earlier, you have no change to clear the context.