From d2469bc9e84a30190295ef2af0a85f4bb4802dd0 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Fri, 5 Jul 2013 18:04:23 +0200
Subject: [PATCH] CppRewriter: Treat libc++'s std::__1:: as std:: for debugger
 display

Change-Id: Iabc1330633e5568b7c94059d4286c93adfecb1a2
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
---
 src/libs/cplusplus/CppRewriter.cpp                         | 1 +
 .../auto/cplusplus/simplifytypes/tst_simplifytypestest.cpp | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/src/libs/cplusplus/CppRewriter.cpp b/src/libs/cplusplus/CppRewriter.cpp
index 008249344c..65191194e2 100644
--- a/src/libs/cplusplus/CppRewriter.cpp
+++ b/src/libs/cplusplus/CppRewriter.cpp
@@ -527,6 +527,7 @@ CPLUSPLUS_EXPORT QString simplifySTLType(const QString &typeIn)
     if (type.startsWith(QLatin1String("struct ")))
         type.remove(0, 7);
 
+    type.replace(QLatin1String("std::__1::"), QLatin1String("std::"));
     type.replace(QLatin1Char('*'), QLatin1Char('@'));
 
     for (int i = 0; i < 10; ++i) {
diff --git a/tests/auto/cplusplus/simplifytypes/tst_simplifytypestest.cpp b/tests/auto/cplusplus/simplifytypes/tst_simplifytypestest.cpp
index e13a1ba841..5f8349b54f 100644
--- a/tests/auto/cplusplus/simplifytypes/tst_simplifytypestest.cpp
+++ b/tests/auto/cplusplus/simplifytypes/tst_simplifytypestest.cpp
@@ -42,6 +42,7 @@ const char *description[] =
     "g++_stringset",
     "g++_stringvector",
     "g++_wstringvector",
+    "libc++_stringvector",
     "msvc_stdstring",
     "msvc_stdwstring",
     "msvc_stringmap",
@@ -63,6 +64,8 @@ const char *input[] =
 "std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >",
 "std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >",
 "std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >",
+// libc++
+"std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >",
 // MSVC
 "class std::basic_string<char,std::char_traits<char>,std::allocator<char> >",
 "class std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >",
@@ -76,6 +79,7 @@ const char *input[] =
 
 const char *output[] =
 {
+    // Gcc
     "std::string",
     "std::wstring",
     "std::map<std::string, std::string>",
@@ -84,6 +88,9 @@ const char *output[] =
     "std::set<std::string>",
     "std::vector<std::string>",
     "std::vector<std::wstring>",
+    // libc++
+    "std::vector<std::string>",
+    // MSVC
     "std::string",
     "std::wstring",
     "std::map<std::string, std::string>",
-- 
GitLab