@@ -5707,7 +5707,7 @@ static const Token * parsedecl(const Token *type, ValueType * const valuetype, V
57075707 } else
57085708 valuetype->type = ValueType::Type::RECORD ;
57095709 bool par = false ;
5710- while (Token::Match (type, " %name%|*|&|::|(" ) && !Token::Match (type, " typename|template" ) &&
5710+ while (Token::Match (type, " %name%|*|&|::|(" ) && !Token::Match (type, " typename|template" ) && type-> varId () == 0 &&
57115711 !type->variable () && !type->function ()) {
57125712 if (type->str () == " (" ) {
57135713 if (Token::Match (type->link (), " ) const| {" ))
@@ -6058,7 +6058,11 @@ void SymbolDatabase::setValueTypeInTokenList(bool reportDebugWarnings, Token *to
60586058 const std::string& typestr (mSettings ->library .returnValueType (tok->previous ()));
60596059 if (!typestr.empty ()) {
60606060 ValueType valuetype;
6061- if (valuetype.fromLibraryType (typestr, mSettings )) {
6061+ TokenList tokenList (mSettings );
6062+ std::istringstream istr (typestr+" ;" );
6063+ tokenList.createTokens (istr);
6064+ if (parsedecl (tokenList.front (), &valuetype, mDefaultSignedness , mSettings )) {
6065+ valuetype.originalTypeName = typestr;
60626066 setValueType (tok, valuetype);
60636067 }
60646068 }
@@ -6091,6 +6095,7 @@ void SymbolDatabase::setValueTypeInTokenList(bool reportDebugWarnings, Token *to
60916095 tokenList.simplifyPlatformTypes ();
60926096 tokenList.simplifyStdType ();
60936097 if (parsedecl (tokenList.front (), &vt, mDefaultSignedness , mSettings )) {
6098+ vt.originalTypeName = typestr;
60946099 setValueType (tok, vt);
60956100 }
60966101 }
@@ -6352,7 +6357,7 @@ std::string ValueType::dump() const
63526357 ret << " valueType-typeScope=\" " << typeScope << ' \" ' ;
63536358
63546359 if (!originalTypeName.empty ())
6355- ret << " valueType-originalTypeName=\" " << originalTypeName << ' \" ' ;
6360+ ret << " valueType-originalTypeName=\" " << ErrorLogger::toxml ( originalTypeName) << ' \" ' ;
63566361
63576362 return ret.str ();
63586363}
0 commit comments