applying your patch to trunk and build the whole C::B.

Than I do the following steps:

1, open the project

F:\cb\codeblocks_trunk\src\plugins\codecompletion\parser\parsertest.cbp

2, edit the file "test.h"

to below:

`aaa & f();`

aaa const & g();

3, run the project, here is the log:

`...`

--------------L-i-s-t--L-o-g--------------

000055. function aaa & f() [9,0]

000056. function aaa const & g() [11,0]

it seems the log is correctly.

Note that the List log comes from: parsertest.cpp

`void ParserTest::PrintList()`

{

TokenList& tokens = m_tokensTree->m_Tokens;

for (TokenList::iterator it = tokens.begin(); it != tokens.end(); it++)

{

wxString log;

log << (*it)->GetTokenKindString() << _T(" ") << (*it)->DisplayName() << _T("\t[") << (*it)->m_Line;

log << _T(",") << (*it)->m_ImplLine << _T("]");

ParserTrace(log);

}

}

then, DisplayName() will internally call the function:

`wxString Token::DisplayName() const`

{

wxString result;

if (m_TokenKind == tkClass)

return result << _T("class ") << m_Name << m_BaseArgs << _T(" {...}");

else if (m_TokenKind == tkNamespace)

return result << _T("namespace ") << m_Name << _T(" {...}");

else if (m_TokenKind == tkEnum)

return result << _T("enum ") << m_Name << _T(" {...}");

else if (m_TokenKind == tkTypedef)

{

result << _T("typedef");

if (!m_Type.IsEmpty())

result << _T(" ") << m_Type;

if (result.Find('*', true) != wxNOT_FOUND)

{

result.RemoveLast();

return result << m_Name << _T(")") << GetFormattedArgs();

}

if (!m_TemplateArgument.IsEmpty())

result << m_TemplateArgument;

return result << _T(" ") << m_Name;

}

else if (m_TokenKind == tkPreprocessor)

{

result << _T("#define ") << m_Name << GetFormattedArgs();

if (!m_Type.IsEmpty())

return result << _T(" ") << m_Type;

}

// else

if (!m_Type.IsEmpty())

result << m_Type << m_TemplateArgument << _T(" ");

if (m_TokenKind == tkEnumerator)

return result << GetNamespace() << m_Name << _T("=") << GetFormattedArgs();

return result << GetNamespace() << m_Name << GetStrippedArgs();

}

Then, I check the

**m_Type** here, it is correct too.

not sure why your problem happens....