@@ -239,11 +239,6 @@ namespace
239239
240240 static DemangledTypeNode::NodeRef CachedNamedIntegerType (size_t width, bool isSigned, const string& altName)
241241 {
242- if (width == 1 && isSigned && altName == " char" )
243- {
244- static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (1 , true , " char" ));
245- return node;
246- }
247242 if (width == 1 && isSigned && altName == " signed char" )
248243 {
249244 static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (1 , true , " signed char" ));
@@ -254,16 +249,6 @@ namespace
254249 static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (1 , true , " char8_t" ));
255250 return node;
256251 }
257- if (width == 2 && isSigned && altName == " char16_t" )
258- {
259- static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (2 , true , " char16_t" ));
260- return node;
261- }
262- if (width == 4 && isSigned && altName == " char32_t" )
263- {
264- static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (4 , true , " char32_t" ));
265- return node;
266- }
267252 if (width == 4 && isSigned && altName == " long" )
268253 {
269254 static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (4 , true , " long" ));
@@ -274,11 +259,6 @@ namespace
274259 static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (4 , false , " unsigned long" ));
275260 return node;
276261 }
277- if (width == 4 && !isSigned && altName == " wchar_t" )
278- {
279- static const auto node = MakeSharedNode (DemangledTypeNode::IntegerType (4 , false , " wchar_t" ));
280- return node;
281- }
282262 return nullptr ;
283263 }
284264
@@ -308,7 +288,29 @@ namespace
308288 static DemangledTypeNode::NodeRef CachedWideCharType (size_t width, const string& altName)
309289 {
310290 if (!altName.empty ())
291+ {
292+ if (width == 2 && altName == " char16_t" )
293+ {
294+ static const auto node = MakeSharedNode (DemangledTypeNode::WideCharType (2 , " char16_t" ));
295+ return node;
296+ }
297+ if (width == 4 && altName == " char32_t" )
298+ {
299+ static const auto node = MakeSharedNode (DemangledTypeNode::WideCharType (4 , " char32_t" ));
300+ return node;
301+ }
302+ if (width == 2 && altName == " wchar_t" )
303+ {
304+ static const auto node = MakeSharedNode (DemangledTypeNode::WideCharType (2 , " wchar_t" ));
305+ return node;
306+ }
307+ if (width == 4 && altName == " wchar_t" )
308+ {
309+ static const auto node = MakeSharedNode (DemangledTypeNode::WideCharType (4 , " wchar_t" ));
310+ return node;
311+ }
311312 return nullptr ;
313+ }
312314 switch (width)
313315 {
314316 case 2 : { static const auto node = MakeSharedNode (DemangledTypeNode::WideCharType (2 )); return node; }
@@ -572,10 +574,18 @@ DemangledTypeNode DemangledTypeNode::BoolType()
572574DemangledTypeNode DemangledTypeNode::IntegerType (size_t width, bool isSigned, const string& altName)
573575{
574576 DemangledTypeNode n;
577+ if (altName == " char16_t" || altName == " char32_t" || altName == " wchar_t" )
578+ {
579+ n.m_typeClass = WideCharTypeClass;
580+ n.m_width = width;
581+ n.m_altName = altName;
582+ return n;
583+ }
575584 n.m_typeClass = IntegerTypeClass;
576585 n.m_width = width;
577586 n.m_signed = isSigned;
578- n.m_altName = altName;
587+ if (!(width == 1 && isSigned && altName == " char" ))
588+ n.m_altName = altName;
579589 return n;
580590}
581591
0 commit comments