[Lldb-commits] [lldb] r248421 - Revert 248366 "Testcase and fix for bug 24074"

Enrico Granata via lldb-commits lldb-commits at lists.llvm.org
Wed Sep 23 12:32:56 PDT 2015


Author: enrico
Date: Wed Sep 23 14:32:56 2015
New Revision: 248421

URL: http://llvm.org/viewvc/llvm-project?rev=248421&view=rev
Log:
Revert 248366 "Testcase and fix for bug 24074"

This commit introduced regressions in several test cases on FreeBSD and Mac OS X


Removed:
    lldb/trunk/include/lldb/Symbol/TypeMap.h
    lldb/trunk/source/Symbol/TypeMap.cpp
    lldb/trunk/test/lang/c/typedef/
Modified:
    lldb/trunk/include/lldb/Core/Module.h
    lldb/trunk/include/lldb/Symbol/SymbolContext.h
    lldb/trunk/include/lldb/Symbol/SymbolFile.h
    lldb/trunk/include/lldb/Symbol/SymbolVendor.h
    lldb/trunk/include/lldb/Symbol/TypeList.h
    lldb/trunk/include/lldb/lldb-forward.h
    lldb/trunk/lldb.xcodeproj/project.pbxproj
    lldb/trunk/source/Commands/CommandObjectTarget.cpp
    lldb/trunk/source/Core/Module.cpp
    lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
    lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
    lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
    lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
    lldb/trunk/source/Symbol/CMakeLists.txt
    lldb/trunk/source/Symbol/SymbolContext.cpp
    lldb/trunk/source/Symbol/SymbolFile.cpp
    lldb/trunk/source/Symbol/SymbolVendor.cpp
    lldb/trunk/source/Symbol/TypeList.cpp

Modified: lldb/trunk/include/lldb/Core/Module.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Module.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Module.h (original)
+++ lldb/trunk/include/lldb/Core/Module.h Wed Sep 23 14:32:56 2015
@@ -1193,7 +1193,7 @@ private:
                     const CompilerDeclContext *parent_decl_ctx,
                     bool append, 
                     size_t max_matches,
-                    TypeMap& types);
+                    TypeList& types);
 
     
     DISALLOW_COPY_AND_ASSIGN (Module);

Modified: lldb/trunk/include/lldb/Symbol/SymbolContext.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/SymbolContext.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/SymbolContext.h (original)
+++ lldb/trunk/include/lldb/Symbol/SymbolContext.h Wed Sep 23 14:32:56 2015
@@ -299,27 +299,6 @@ public:
                            ConstString &language_object_name);
 
     //------------------------------------------------------------------
-    /// If this symbol context represents a function that is a method,
-    /// return true and provide information about the method.
-    ///
-    /// @param[out] language
-    ///     If \b true is returned, the language for the method.
-    ///
-    /// @param[out] is_instance_method
-    ///     If \b true is returned, \b true if this is a instance method,
-    ///     \b false if this is a static/class function.
-    ///
-    /// @param[out] language_object_name
-    ///     If \b true is returned, the name of the artificial variable
-    ///     for the language ("this" for C++, "self" for ObjC).
-    ///
-    /// @return
-    ///     \b True if this symbol context represents a function that
-    ///     is a method of a class, \b false otherwise.
-    //------------------------------------------------------------------
-    void
-	SortTypeList(TypeMap &type_map, TypeList &type_list) const;
-    //------------------------------------------------------------------
     /// Find a name of the innermost function for the symbol context.
     ///
     /// For instance, if the symbol context contains an inlined block,

Modified: lldb/trunk/include/lldb/Symbol/SymbolFile.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/SymbolFile.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/SymbolFile.h (original)
+++ lldb/trunk/include/lldb/Symbol/SymbolFile.h Wed Sep 23 14:32:56 2015
@@ -141,7 +141,7 @@ public:
     virtual uint32_t        FindGlobalVariables (const RegularExpression& regex, bool append, uint32_t max_matches, VariableList& variables);
     virtual uint32_t        FindFunctions (const ConstString &name, const CompilerDeclContext *parent_decl_ctx, uint32_t name_type_mask, bool include_inlines, bool append, SymbolContextList& sc_list);
     virtual uint32_t        FindFunctions (const RegularExpression& regex, bool include_inlines, bool append, SymbolContextList& sc_list);
-    virtual uint32_t        FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeMap& types);
+    virtual uint32_t        FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeList& types);
 //  virtual uint32_t        FindTypes (const SymbolContext& sc, const RegularExpression& regex, bool append, uint32_t max_matches, TypeList& types) = 0;
     virtual TypeList *      GetTypeList ();
     virtual size_t          GetTypes (lldb_private::SymbolContextScope *sc_scope,

Modified: lldb/trunk/include/lldb/Symbol/SymbolVendor.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/SymbolVendor.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/SymbolVendor.h (original)
+++ lldb/trunk/include/lldb/Symbol/SymbolVendor.h Wed Sep 23 14:32:56 2015
@@ -16,7 +16,6 @@
 #include "lldb/Core/ModuleChild.h"
 #include "lldb/Core/PluginInterface.h"
 #include "lldb/Symbol/TypeList.h"
-#include "lldb/Symbol/TypeMap.h"
 
 namespace lldb_private {
 
@@ -126,7 +125,7 @@ public:
                const CompilerDeclContext *parent_decl_ctx, 
                bool append, 
                size_t max_matches,
-               TypeMap& types);
+               TypeList& types);
 
     virtual CompilerDeclContext
     FindNamespace (const SymbolContext& sc, 

Modified: lldb/trunk/include/lldb/Symbol/TypeList.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeList.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/TypeList.h (original)
+++ lldb/trunk/include/lldb/Symbol/TypeList.h Wed Sep 23 14:32:56 2015
@@ -13,7 +13,7 @@
 #include "lldb/lldb-private.h"
 #include "lldb/Symbol/Type.h"
 #include "lldb/Utility/Iterable.h"
-#include <vector>
+#include <map>
 #include <functional>
 
 namespace lldb_private {
@@ -24,7 +24,7 @@ public:
     //------------------------------------------------------------------
     // Constructors and Destructors
     //------------------------------------------------------------------
-	TypeList();
+    TypeList();
 
     virtual
     ~TypeList();
@@ -44,14 +44,17 @@ public:
     void
     Insert (const lldb::TypeSP& type);
 
+    bool
+    InsertUnique (const lldb::TypeSP& type);
+
     uint32_t
     GetSize() const;
 
     lldb::TypeSP
     GetTypeAtIndex(uint32_t idx);
     
-    typedef std::vector<lldb::TypeSP> collection;
-    typedef AdaptedIterable<collection, lldb::TypeSP, vector_adapter> TypeIterable;
+    typedef std::multimap<lldb::user_id_t, lldb::TypeSP> collection;
+    typedef AdaptedIterable<collection, lldb::TypeSP, map_adapter> TypeIterable;
     
     TypeIterable
     Types ()
@@ -65,6 +68,8 @@ public:
     void
     ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback);
 
+    bool
+    RemoveTypeWithUID (lldb::user_id_t uid);
 
     void
     RemoveMismatchedTypes (const char *qualified_typename,

Removed: lldb/trunk/include/lldb/Symbol/TypeMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeMap.h?rev=248420&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Symbol/TypeMap.h (original)
+++ lldb/trunk/include/lldb/Symbol/TypeMap.h (removed)
@@ -1,98 +0,0 @@
-//===-- TypeMap.h ----------------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_TypeMap_h_
-#define liblldb_TypeMap_h_
-
-#include "lldb/lldb-private.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Utility/Iterable.h"
-#include <map>
-#include <functional>
-
-namespace lldb_private {
-
-class TypeMap
-{
-public:
-    //------------------------------------------------------------------
-    // Constructors and Destructors
-    //------------------------------------------------------------------
-	TypeMap();
-
-    virtual
-    ~TypeMap();
-
-    void
-    Clear();
-
-    void
-    Dump(Stream *s, bool show_context);
-
-//    lldb::TypeSP
-//    FindType(lldb::user_id_t uid);
-
-    TypeMap
-    FindTypes(const ConstString &name);
-
-    void
-    Insert (const lldb::TypeSP& type);
-
-    bool
-    InsertUnique (const lldb::TypeSP& type);
-
-    uint32_t
-    GetSize() const;
-
-    lldb::TypeSP
-    GetTypeAtIndex(uint32_t idx);
-    
-    typedef std::multimap<lldb::user_id_t, lldb::TypeSP> collection;
-    typedef AdaptedIterable<collection, lldb::TypeSP, map_adapter> TypeIterable;
-    
-    TypeIterable
-    Types ()
-    {
-        return TypeIterable(m_types);
-    }
-
-    void
-    ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &callback) const;
-
-    void
-    ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback);
-
-    bool
-    RemoveTypeWithUID (lldb::user_id_t uid);
-
-    void
-    RemoveMismatchedTypes (const char *qualified_typename,
-                           bool exact_match);
-
-    void
-    RemoveMismatchedTypes (const std::string &type_scope,
-                           const std::string &type_basename,
-                           lldb::TypeClass type_class,
-                           bool exact_match);
-
-    void
-    RemoveMismatchedTypes (lldb::TypeClass type_class);
-
-private:
-    typedef collection::iterator iterator;
-    typedef collection::const_iterator const_iterator;
-
-    collection m_types;
-
-    DISALLOW_COPY_AND_ASSIGN (TypeMap);
-};
-
-} // namespace lldb_private
-
-#endif  // liblldb_TypeMap_h_

Modified: lldb/trunk/include/lldb/lldb-forward.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-forward.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/include/lldb/lldb-forward.h (original)
+++ lldb/trunk/include/lldb/lldb-forward.h Wed Sep 23 14:32:56 2015
@@ -254,7 +254,6 @@ class   TypeAndOrName;
 class   TypeCategoryMap;
 class   TypeImpl;
 class   TypeList;
-class   TypeMap;
 class   TypeListImpl;
 class   TypeMemberImpl;
 class   TypeMemberFunctionImpl;

Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Wed Sep 23 14:32:56 2015
@@ -713,7 +713,6 @@
 		6D95DC001B9DC057000E318A /* DIERef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFD1B9DC057000E318A /* DIERef.cpp */; };
 		6D95DC011B9DC057000E318A /* HashedNameToDIE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFE1B9DC057000E318A /* HashedNameToDIE.cpp */; };
 		6D95DC021B9DC057000E318A /* SymbolFileDWARFDwo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */; };
-		6D9AB3DD1BB2B74E003F2289 /* TypeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */; };
 		8C2D6A53197A1EAF006989C9 /* MemoryHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */; };
 		8C2D6A5E197A250F006989C9 /* MemoryHistoryASan.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */; };
 		8CCB017E19BA28A80009FD44 /* ThreadCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8CCB017A19BA283D0009FD44 /* ThreadCollection.cpp */; };
@@ -2404,8 +2403,6 @@
 		6D95DBFF1B9DC057000E318A /* SymbolFileDWARFDwo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolFileDWARFDwo.cpp; sourceTree = "<group>"; };
 		6D95DC031B9DC06F000E318A /* DIERef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DIERef.h; sourceTree = "<group>"; };
 		6D95DC041B9DC06F000E318A /* SymbolFileDWARFDwo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolFileDWARFDwo.h; sourceTree = "<group>"; };
-		6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TypeMap.cpp; path = source/Symbol/TypeMap.cpp; sourceTree = "<group>"; };
-		6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TypeMap.h; path = include/lldb/Symbol/TypeMap.h; sourceTree = "<group>"; };
 		8C2D6A52197A1EAF006989C9 /* MemoryHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MemoryHistory.cpp; path = source/Target/MemoryHistory.cpp; sourceTree = "<group>"; };
 		8C2D6A54197A1EBE006989C9 /* MemoryHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MemoryHistory.h; path = include/lldb/Target/MemoryHistory.h; sourceTree = "<group>"; };
 		8C2D6A5A197A1FDC006989C9 /* MemoryHistoryASan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryHistoryASan.cpp; sourceTree = "<group>"; };
@@ -4210,8 +4207,6 @@
 		26BC7C4B10F1B6C100F91463 /* Symbol */ = {
 			isa = PBXGroup;
 			children = (
-				6D9AB3DE1BB2B76B003F2289 /* TypeMap.h */,
-				6D9AB3DC1BB2B74E003F2289 /* TypeMap.cpp */,
 				26BC7C5510F1B6E900F91463 /* Block.h */,
 				26BC7F1310F1B8EC00F91463 /* Block.cpp */,
 				26BC7C5610F1B6E900F91463 /* ClangASTContext.h */,
@@ -6643,7 +6638,6 @@
 				3FBA69E11B6067120008F44A /* ScriptInterpreterNone.cpp in Sources */,
 				266DFE9713FD656E00D0C574 /* OperatingSystem.cpp in Sources */,
 				26954EBE1401EE8B00294D09 /* DynamicRegisterInfo.cpp in Sources */,
-				6D9AB3DD1BB2B74E003F2289 /* TypeMap.cpp in Sources */,
 				255EFF761AFABA950069F277 /* LockFilePosix.cpp in Sources */,
 				3FBA69EC1B6067430008F44A /* PythonDataObjects.cpp in Sources */,
 				26274FA714030F79006BA130 /* DynamicLoaderDarwinKernel.cpp in Sources */,

Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Wed Sep 23 14:32:56 2015
@@ -1918,6 +1918,7 @@ LookupTypeHere (CommandInterpreter &inte
         strm.PutCString("Best match found in ");
         DumpFullpath (strm, &sym_ctx.module_sp->GetFileSpec(), 0);
         strm.PutCString(":\n");
+
         TypeSP type_sp (type_list.GetTypeAtIndex(0));
         if (type_sp)
         {

Modified: lldb/trunk/source/Core/Module.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Module.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Core/Module.cpp (original)
+++ lldb/trunk/source/Core/Module.cpp Wed Sep 23 14:32:56 2015
@@ -36,7 +36,6 @@
 #include "lldb/Target/Target.h"
 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
 #include "Plugins/Language/ObjC/ObjCLanguage.h"
-#include "lldb/Symbol/TypeMap.h"
 
 #include "Plugins/ObjectFile/JIT/ObjectFileJIT.h"
 
@@ -941,7 +940,7 @@ Module::FindTypes_Impl (const SymbolCont
                         const CompilerDeclContext *parent_decl_ctx,
                         bool append,
                         size_t max_matches,
-                        TypeMap& types)
+                        TypeList& types)
 {
     Timer scoped_timer(__PRETTY_FUNCTION__, __PRETTY_FUNCTION__);
     if (sc.module_sp.get() == NULL || sc.module_sp.get() == this)
@@ -961,11 +960,7 @@ Module::FindTypesInNamespace (const Symb
                               TypeList& type_list)
 {
     const bool append = true;
-    TypeMap types_map;
-    size_t num_types = FindTypes_Impl(sc, type_name, parent_decl_ctx, append, max_matches, types_map);
-    if (num_types > 0)
-        sc.SortTypeList(types_map, type_list);
-    return num_types;
+    return FindTypes_Impl(sc, type_name, parent_decl_ctx, append, max_matches, type_list);
 }
 
 lldb::TypeSP
@@ -994,7 +989,6 @@ Module::FindTypes (const SymbolContext&
     std::string type_basename;
     const bool append = true;
     TypeClass type_class = eTypeClassAny;
-    TypeMap typesmap;
     if (Type::GetTypeScopeAndBasename (type_name_cstr, type_scope, type_basename, type_class))
     {
         // Check if "name" starts with "::" which means the qualified type starts
@@ -1008,10 +1002,10 @@ Module::FindTypes (const SymbolContext&
             exact_match = true;
         }
         ConstString type_basename_const_str (type_basename.c_str());
-        if (FindTypes_Impl(sc, type_basename_const_str, NULL, append, max_matches, typesmap))
+        if (FindTypes_Impl(sc, type_basename_const_str, NULL, append, max_matches, types))
         {
-            typesmap.RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
-            num_matches = typesmap.GetSize();
+            types.RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
+            num_matches = types.GetSize();
         }
     }
     else
@@ -1021,18 +1015,18 @@ Module::FindTypes (const SymbolContext&
         {
             // The "type_name_cstr" will have been modified if we have a valid type class
             // prefix (like "struct", "class", "union", "typedef" etc).
-            FindTypes_Impl(sc, ConstString(type_name_cstr), NULL, append, max_matches, typesmap);
-            typesmap.RemoveMismatchedTypes (type_class);
-            num_matches = typesmap.GetSize();
+            FindTypes_Impl(sc, ConstString(type_name_cstr), NULL, append, max_matches, types);
+            types.RemoveMismatchedTypes (type_class);
+            num_matches = types.GetSize();
         }
         else
         {
-            num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, typesmap);
+            num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, types);
         }
     }
-    if (num_matches > 0)
-        sc.SortTypeList(typesmap, types);
+    
     return num_matches;
+    
 }
 
 SymbolVendor*

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Wed Sep 23 14:32:56 2015
@@ -43,7 +43,6 @@
 #include "lldb/Symbol/SymbolVendor.h"
 #include "lldb/Symbol/TypeSystem.h"
 #include "lldb/Symbol/VariableList.h"
-#include "lldb/Symbol/TypeMap.h"
 
 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
 #include "Plugins/Language/ObjC/ObjCLanguage.h"
@@ -2841,7 +2840,7 @@ SymbolFileDWARF::FindTypes (const Symbol
                             const CompilerDeclContext *parent_decl_ctx, 
                             bool append, 
                             uint32_t max_matches, 
-                            TypeMap& types)
+                            TypeList& types)
 {
     DWARFDebugInfo* info = DebugInfo();
     if (info == NULL)
@@ -3055,17 +3054,6 @@ SymbolFileDWARF::GetTypeForDIE (const DW
             CompileUnit* lldb_cu = GetCompUnitForDWARFCompUnit(die.GetCU());
             assert (lldb_cu);
             SymbolContext sc(lldb_cu);
-            const DWARFDebugInfoEntry* parent_die = die.GetParent().GetDIE();
-            while (parent_die != nullptr)
-                {
-                    if (parent_die->Tag() == DW_TAG_subprogram)
-                        break;
-                    parent_die = parent_die->GetParent();
-                }
-            SymbolContext sc_backup = sc;
-            if (parent_die != nullptr && !GetFunction(DWARFDIE(die.GetCU(),parent_die), sc))
-                sc = sc_backup;
-
             type_sp = ParseType(sc, die, NULL);
         }
         else if (type_ptr != DIE_IS_BEING_PARSED)

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h Wed Sep 23 14:32:56 2015
@@ -207,7 +207,7 @@ public:
                const lldb_private::CompilerDeclContext *parent_decl_ctx,
                bool append,
                uint32_t max_matches,
-               lldb_private::TypeMap& types) override;
+               lldb_private::TypeList& types) override;
 
     lldb_private::TypeList *
     GetTypeList () override;

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp Wed Sep 23 14:32:56 2015
@@ -28,7 +28,6 @@
 #include "lldb/Symbol/LineTable.h"
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Symbol/SymbolVendor.h"
-#include "lldb/Symbol/TypeMap.h"
 #include "lldb/Symbol/VariableList.h"
 
 #include "LogChannelDWARF.h"
@@ -1296,7 +1295,7 @@ SymbolFileDWARFDebugMap::FindTypes
     const CompilerDeclContext *parent_decl_ctx,
     bool append,
     uint32_t max_matches, 
-    TypeMap& types
+    TypeList& types
 )
 {
     if (!append)

Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h (original)
+++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h Wed Sep 23 14:32:56 2015
@@ -79,7 +79,7 @@ public:
     uint32_t        FindGlobalVariables (const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables) override;
     uint32_t        FindFunctions (const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list) override;
     uint32_t        FindFunctions (const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list) override;
-    uint32_t        FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, lldb_private::TypeMap& types) override;
+    uint32_t        FindTypes (const lldb_private::SymbolContext& sc, const lldb_private::ConstString &name, const lldb_private::CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, lldb_private::TypeList& types) override;
     lldb_private::CompilerDeclContext
                     FindNamespace (const lldb_private::SymbolContext& sc,
                                    const lldb_private::ConstString &name,

Modified: lldb/trunk/source/Symbol/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CMakeLists.txt?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/CMakeLists.txt (original)
+++ lldb/trunk/source/Symbol/CMakeLists.txt Wed Sep 23 14:32:56 2015
@@ -24,7 +24,6 @@ add_lldb_library(lldbSymbol
   Symtab.cpp
   Type.cpp
   TypeList.cpp
-  TypeMap.cpp 
   TypeSystem.cpp
   UnwindPlan.cpp
   UnwindTable.cpp

Modified: lldb/trunk/source/Symbol/SymbolContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/SymbolContext.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/SymbolContext.cpp (original)
+++ lldb/trunk/source/Symbol/SymbolContext.cpp Wed Sep 23 14:32:56 2015
@@ -659,171 +659,6 @@ SymbolContext::GetFunctionMethodInfo (ll
     return false;
 }
 
-class TypeMoveMatchingBlock
-{
-public:
-	TypeMoveMatchingBlock(Block * block, TypeMap &typem, TypeList &typel) :
-		curr_block(block),type_map(typem),type_list(typel)
-    {
-    }
-
-    bool
-    operator() (const lldb::TypeSP& type)
-    {
-    	if (type && type->GetSymbolContextScope() != nullptr && curr_block == type->GetSymbolContextScope()->CalculateSymbolContextBlock())
-    	{
-    	   	type_list.Insert(type);
-    		type_map.RemoveTypeWithUID(type->GetID());
-    		return false;
-    	}
-        return true;
-    }
-
-private:
-    const Block * const curr_block;
-    TypeMap &type_map;
-    TypeList &type_list;
-};
-
-class TypeMoveMatchingFunction
-{
-public:
-	TypeMoveMatchingFunction(Function * block, TypeMap &typem, TypeList &typel) :
-		func(block),type_map(typem),type_list(typel)
-    {
-    }
-
-    bool
-    operator() (const lldb::TypeSP& type)
-    {
-    	if (type && type->GetSymbolContextScope() != nullptr && func == type->GetSymbolContextScope()->CalculateSymbolContextFunction())
-    	{
-    	    type_list.Insert(type);
-    	    type_map.RemoveTypeWithUID(type->GetID());
-    	    return false;
-    	}
-        return true;
-    }
-
-private:
-    const Function * const func;
-    TypeMap &type_map;
-    TypeList &type_list;
-};
-
-class TypeMoveMatchingCompileUnit
-{
-public:
-	TypeMoveMatchingCompileUnit(CompileUnit * cunit, TypeMap &typem, TypeList &typel) :
-		comp_unit(cunit),type_map(typem),type_list(typel)
-    {
-    }
-
-    bool
-    operator() (const lldb::TypeSP& type)
-    {
-    	if (type && type->GetSymbolContextScope() != nullptr && comp_unit == type->GetSymbolContextScope()->CalculateSymbolContextCompileUnit())
-    	{
-    	    type_list.Insert(type);
-    	    type_map.RemoveTypeWithUID(type->GetID());
-    	    return false;
-    	}
-    	return true;
-    }
-
-private:
-    const CompileUnit * const comp_unit;
-    TypeMap &type_map;
-    TypeList &type_list;
-};
-
-class TypeMoveMatchingModule
-{
-public:
-	TypeMoveMatchingModule(lldb::ModuleSP modsp, TypeMap &typem, TypeList &typel) :
-		modulesp(modsp),type_map(typem),type_list(typel)
-    {
-    }
-
-    bool
-    operator() (const lldb::TypeSP& type)
-    {
-    	if (type && type->GetSymbolContextScope() != nullptr && modulesp.get() == type->GetSymbolContextScope()->CalculateSymbolContextModule().get())
-    	{
-    	    type_list.Insert(type);
-    	    type_map.RemoveTypeWithUID(type->GetID());
-    	    return false;
-    	}
-        return true;
-    }
-
-private:
-    lldb::ModuleSP modulesp;
-    TypeMap &type_map;
-    TypeList &type_list;
-};
-
-class TypeMaptoList
-{
-public:
-	TypeMaptoList(TypeMap &typem, TypeList &typel) :
-		type_map(typem),type_list(typel)
-    {
-    }
-
-    bool
-    operator() (const lldb::TypeSP& type)
-    {
-    	if(type)
-    	{
-            type_list.Insert(type);
-            type_map.RemoveTypeWithUID(type->GetID());
-    	}
-        return true;
-    }
-
-private:
-    TypeMap &type_map;
-    TypeList &type_list;
-};
-
-void
-SymbolContext::SortTypeList(TypeMap &type_map, TypeList &type_list ) const
-{
-	Block * curr_block = block;
-    bool isInlinedblock = false;
-    if(curr_block != nullptr && curr_block->GetContainingInlinedBlock() != nullptr)
-    	isInlinedblock = true;
-
-	while (curr_block != nullptr && !isInlinedblock)
-    {
-		TypeMoveMatchingBlock callbackBlock (curr_block, type_map, type_list);
-		type_map.ForEach(callbackBlock);
-	    curr_block = curr_block->GetParent();
-	}
-    if(function != nullptr && type_map.GetSize() > 0)
-    {
-    	TypeMoveMatchingFunction callbackFunction (function, type_map, type_list);
-    	type_map.ForEach(callbackFunction);
-    }
-    if(comp_unit != nullptr && type_map.GetSize() > 0)
-    {
-    	TypeMoveMatchingCompileUnit callbackCompileUnit (comp_unit, type_map, type_list);
-    	type_map.ForEach(callbackCompileUnit);
-    }
-    if(module_sp && type_map.GetSize() > 0)
-    {
-    	TypeMoveMatchingModule callbackModule (module_sp, type_map, type_list);
-    	type_map.ForEach(callbackModule);
-    }
-    if(type_map.GetSize() > 0)
-    {
-    	TypeMaptoList callbackM2L (type_map, type_list);
-    	type_map.ForEach(callbackM2L);
-    }
-	return ;
-}
-
 ConstString
 SymbolContext::GetFunctionName (Mangled::NamePreference preference) const
 {

Modified: lldb/trunk/source/Symbol/SymbolFile.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/SymbolFile.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/SymbolFile.cpp (original)
+++ lldb/trunk/source/Symbol/SymbolFile.cpp Wed Sep 23 14:32:56 2015
@@ -15,7 +15,7 @@
 #include "lldb/Core/PluginManager.h"
 #include "lldb/Core/StreamString.h"
 #include "lldb/Symbol/ObjectFile.h"
-#include "lldb/Symbol/TypeMap.h"
+#include "lldb/Symbol/TypeList.h"
 #include "lldb/Symbol/TypeSystem.h"
 #include "lldb/Symbol/VariableList.h"
 
@@ -135,7 +135,7 @@ SymbolFile::FindFunctions (const Regular
 }
 
 uint32_t
-SymbolFile::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeMap& types)
+SymbolFile::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, uint32_t max_matches, TypeList& types)
 {
     if (!append)
         types.Clear();

Modified: lldb/trunk/source/Symbol/SymbolVendor.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/SymbolVendor.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/SymbolVendor.cpp (original)
+++ lldb/trunk/source/Symbol/SymbolVendor.cpp Wed Sep 23 14:32:56 2015
@@ -346,7 +346,7 @@ SymbolVendor::FindFunctions(const Regula
 
 
 size_t
-SymbolVendor::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, size_t max_matches, TypeMap& types)
+SymbolVendor::FindTypes (const SymbolContext& sc, const ConstString &name, const CompilerDeclContext *parent_decl_ctx, bool append, size_t max_matches, TypeList& types)
 {
     ModuleSP module_sp(GetModule());
     if (module_sp)

Modified: lldb/trunk/source/Symbol/TypeList.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/TypeList.cpp?rev=248421&r1=248420&r2=248421&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/TypeList.cpp (original)
+++ lldb/trunk/source/Symbol/TypeList.cpp Wed Sep 23 14:32:56 2015
@@ -42,7 +42,26 @@ TypeList::Insert (const TypeSP& type_sp)
 {
     // Just push each type on the back for now. We will worry about uniquing later
     if (type_sp)
-        m_types.push_back(type_sp);
+        m_types.insert(std::make_pair(type_sp->GetID(), type_sp));
+}
+
+
+bool
+TypeList::InsertUnique (const TypeSP& type_sp)
+{
+    if (type_sp)
+    {
+        user_id_t type_uid = type_sp->GetID();
+        iterator pos, end = m_types.end();
+        
+        for (pos = m_types.find(type_uid); pos != end && pos->second->GetID() == type_uid; ++pos)
+        {
+            if (pos->second.get() == type_sp.get())
+                return false;
+        }
+    }
+    Insert (type_sp);
+    return true;
 }
 
 //----------------------------------------------------------------------
@@ -97,7 +116,7 @@ TypeList::GetTypeAtIndex(uint32_t idx)
     for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
     {
         if (i == 0)
-            return *pos;
+            return pos->second;
         --i;
     }
     return TypeSP();
@@ -108,7 +127,7 @@ TypeList::ForEach (std::function <bool(c
 {
     for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
     {
-        if (!callback(*pos))
+        if (!callback(pos->second))
             break;
     }
 }
@@ -118,17 +137,32 @@ TypeList::ForEach (std::function <bool(l
 {
     for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
     {
-        if (!callback(*pos))
+        if (!callback(pos->second))
             break;
     }
 }
 
+
+bool
+TypeList::RemoveTypeWithUID (user_id_t uid)
+{
+    iterator pos = m_types.find(uid);
+    
+    if (pos != m_types.end())
+    {
+        m_types.erase(pos);
+        return true;
+    }
+    return false;
+}
+
+
 void
 TypeList::Dump(Stream *s, bool show_context)
 {
     for (iterator pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
     {
-        pos->get()->Dump(s, show_context);
+        pos->second->Dump(s, show_context);
     }
 }
 
@@ -163,7 +197,7 @@ TypeList::RemoveMismatchedTypes (const s
     
     for (pos = m_types.begin(); pos != end; ++pos)
     {
-        Type* the_type = pos->get();
+        Type* the_type = pos->second.get();
         bool keep_match = false;
         TypeClass match_type_class = eTypeClassAny;
 
@@ -235,7 +269,7 @@ TypeList::RemoveMismatchedTypes (const s
         
         if (keep_match)
         {
-            matching_types.push_back(*pos);
+            matching_types.insert (*pos);
         }
     }
     m_types.swap(matching_types);
@@ -257,10 +291,10 @@ TypeList::RemoveMismatchedTypes (TypeCla
     
     for (pos = m_types.begin(); pos != end; ++pos)
     {
-        Type* the_type = pos->get();
+        Type* the_type = pos->second.get();
         TypeClass match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
         if (match_type_class & type_class)
-            matching_types.push_back (*pos);
+            matching_types.insert (*pos);
     }
     m_types.swap(matching_types);
 }

Removed: lldb/trunk/source/Symbol/TypeMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/TypeMap.cpp?rev=248420&view=auto
==============================================================================
--- lldb/trunk/source/Symbol/TypeMap.cpp (original)
+++ lldb/trunk/source/Symbol/TypeMap.cpp (removed)
@@ -1,313 +0,0 @@
-//===-- TypeMap.cpp --------------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-
-// C Includes
-// C++ Includes
-#include <vector>
-
-// Other libraries and framework includes
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/AST/DeclGroup.h"
-
-#include "clang/Basic/Builtins.h"
-#include "clang/Basic/IdentifierTable.h"
-#include "clang/Basic/LangOptions.h"
-#include "clang/Basic/SourceManager.h"
-#include "clang/Basic/TargetInfo.h"
-
-#include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/raw_ostream.h"
-
-// Project includes
-#include "lldb/Symbol/SymbolFile.h"
-#include "lldb/Symbol/SymbolVendor.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Symbol/TypeMap.h"
-
-using namespace lldb;
-using namespace lldb_private;
-using namespace clang;
-
-TypeMap::TypeMap() :
-    m_types ()
-{
-}
-
-//----------------------------------------------------------------------
-// Destructor
-//----------------------------------------------------------------------
-TypeMap::~TypeMap()
-{
-}
-
-void
-TypeMap::Insert (const TypeSP& type_sp)
-{
-    // Just push each type on the back for now. We will worry about uniquing later
-    if (type_sp)
-        m_types.insert(std::make_pair(type_sp->GetID(), type_sp));
-}
-
-
-bool
-TypeMap::InsertUnique (const TypeSP& type_sp)
-{
-    if (type_sp)
-    {
-        user_id_t type_uid = type_sp->GetID();
-        iterator pos, end = m_types.end();
-        
-        for (pos = m_types.find(type_uid); pos != end && pos->second->GetID() == type_uid; ++pos)
-        {
-            if (pos->second.get() == type_sp.get())
-                return false;
-        }
-    }
-    Insert (type_sp);
-    return true;
-}
-
-//----------------------------------------------------------------------
-// Find a base type by its unique ID.
-//----------------------------------------------------------------------
-//TypeSP
-//TypeMap::FindType(lldb::user_id_t uid)
-//{
-//    iterator pos = m_types.find(uid);
-//    if (pos != m_types.end())
-//        return pos->second;
-//    return TypeSP();
-//}
-
-//----------------------------------------------------------------------
-// Find a type by name.
-//----------------------------------------------------------------------
-//TypeMap
-//TypeMap::FindTypes (const ConstString &name)
-//{
-//    // Do we ever need to make a lookup by name map? Here we are doing
-//    // a linear search which isn't going to be fast.
-//    TypeMap types(m_ast.getTargetInfo()->getTriple().getTriple().c_str());
-//    iterator pos, end;
-//    for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-//        if (pos->second->GetName() == name)
-//            types.Insert (pos->second);
-//    return types;
-//}
-
-void
-TypeMap::Clear()
-{
-    m_types.clear();
-}
-
-uint32_t
-TypeMap::GetSize() const
-{
-    return m_types.size();
-}
-
-// GetTypeAtIndex isn't used a lot for large type lists, currently only for
-// type lists that are returned for "image dump -t TYPENAME" commands and other
-// simple symbol queries that grab the first result...
-
-TypeSP
-TypeMap::GetTypeAtIndex(uint32_t idx)
-{
-    iterator pos, end;
-    uint32_t i = idx;
-    for (pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-    {
-        if (i == 0)
-            return pos->second;
-        --i;
-    }
-    return TypeSP();
-}
-
-void
-TypeMap::ForEach (std::function <bool(const lldb::TypeSP &type_sp)> const &callback) const
-{
-    for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-    {
-        if (!callback(pos->second))
-            break;
-    }
-}
-
-void
-TypeMap::ForEach (std::function <bool(lldb::TypeSP &type_sp)> const &callback)
-{
-    for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-    {
-        if (!callback(pos->second))
-            break;
-    }
-}
-
-
-bool
-TypeMap::RemoveTypeWithUID (user_id_t uid)
-{
-    iterator pos = m_types.find(uid);
-    
-    if (pos != m_types.end())
-    {
-        m_types.erase(pos);
-        return true;
-    }
-    return false;
-}
-
-
-void
-TypeMap::Dump(Stream *s, bool show_context)
-{
-    for (iterator pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
-    {
-        pos->second->Dump(s, show_context);
-    }
-}
-
-void
-TypeMap::RemoveMismatchedTypes (const char *qualified_typename,
-                                 bool exact_match)
-{
-    std::string type_scope;
-    std::string type_basename;
-    TypeClass type_class = eTypeClassAny;
-    if (!Type::GetTypeScopeAndBasename (qualified_typename, type_scope, type_basename, type_class))
-    {
-        type_basename = qualified_typename;
-        type_scope.clear();
-    }
-    return RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
-}
-
-void
-TypeMap::RemoveMismatchedTypes (const std::string &type_scope,
-                                 const std::string &type_basename,
-                                 TypeClass type_class,
-                                 bool exact_match)
-{
-    // Our "collection" type currently is a std::map which doesn't
-    // have any good way to iterate and remove items from the map
-    // so we currently just make a new list and add all of the matching
-    // types to it, and then swap it into m_types at the end
-    collection matching_types;
-
-    iterator pos, end = m_types.end();
-    
-    for (pos = m_types.begin(); pos != end; ++pos)
-    {
-        Type* the_type = pos->second.get();
-        bool keep_match = false;
-        TypeClass match_type_class = eTypeClassAny;
-
-        if (type_class != eTypeClassAny)
-        {
-            match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
-            if ((match_type_class & type_class) == 0)
-                continue;
-        }
-
-        ConstString match_type_name_const_str (the_type->GetQualifiedName());
-        if (match_type_name_const_str)
-        {
-            const char *match_type_name = match_type_name_const_str.GetCString();
-            std::string match_type_scope;
-            std::string match_type_basename;
-            if (Type::GetTypeScopeAndBasename (match_type_name,
-                                               match_type_scope,
-                                               match_type_basename,
-                                               match_type_class))
-            {
-                if (match_type_basename == type_basename)
-                {
-                    const size_t type_scope_size = type_scope.size();
-                    const size_t match_type_scope_size = match_type_scope.size();
-                    if (exact_match || (type_scope_size == match_type_scope_size))
-                    {
-                        keep_match = match_type_scope == type_scope;
-                    }
-                    else
-                    {
-                        if (match_type_scope_size > type_scope_size)
-                        {
-                            const size_t type_scope_pos = match_type_scope.rfind(type_scope);
-                            if (type_scope_pos == match_type_scope_size - type_scope_size)
-                            {
-                                if (type_scope_pos >= 2)
-                                {
-                                    // Our match scope ends with the type scope we were looking for,
-                                    // but we need to make sure what comes before the matching
-                                    // type scope is a namespace boundary in case we are trying to match:
-                                    // type_basename = "d"
-                                    // type_scope = "b::c::"
-                                    // We want to match:
-                                    //  match_type_scope "a::b::c::"
-                                    // But not:
-                                    //  match_type_scope "a::bb::c::"
-                                    // So below we make sure what comes before "b::c::" in match_type_scope
-                                    // is "::", or the namespace boundary
-                                    if (match_type_scope[type_scope_pos - 1] == ':' &&
-                                        match_type_scope[type_scope_pos - 2] == ':')
-                                    {
-                                        keep_match = true;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            else
-            {
-                // The type we are currently looking at doesn't exists
-                // in a namespace or class, so it only matches if there
-                // is no type scope...
-                keep_match = type_scope.empty() && type_basename.compare(match_type_name) == 0;
-            }
-        }
-        
-        if (keep_match)
-        {
-            matching_types.insert (*pos);
-        }
-    }
-    m_types.swap(matching_types);
-}
-
-void
-TypeMap::RemoveMismatchedTypes (TypeClass type_class)
-{
-    if (type_class == eTypeClassAny)
-        return;
-
-    // Our "collection" type currently is a std::map which doesn't
-    // have any good way to iterate and remove items from the map
-    // so we currently just make a new list and add all of the matching
-    // types to it, and then swap it into m_types at the end
-    collection matching_types;
-    
-    iterator pos, end = m_types.end();
-    
-    for (pos = m_types.begin(); pos != end; ++pos)
-    {
-        Type* the_type = pos->second.get();
-        TypeClass match_type_class = the_type->GetForwardCompilerType ().GetTypeClass ();
-        if (match_type_class & type_class)
-            matching_types.insert (*pos);
-    }
-    m_types.swap(matching_types);
-}




More information about the lldb-commits mailing list