Index: include/lldb/Symbol/TypeList.h
===================================================================
--- include/lldb/Symbol/TypeList.h	(revision 182772)
+++ include/lldb/Symbol/TypeList.h	(working copy)
@@ -51,6 +51,9 @@
     lldb::TypeSP
     GetTypeAtIndex(uint32_t idx);
 
+    void
+    GetAllTypes(std::vector<lldb::TypeSP>& types) const;
+
     bool
     RemoveTypeWithUID (lldb::user_id_t uid);
 
Index: source/API/SBModule.cpp
===================================================================
--- source/API/SBModule.cpp	(revision 182772)
+++ source/API/SBModule.cpp	(working copy)
@@ -557,6 +557,22 @@
                 retval.Append(sb_type);
         }
     }
+    else if (module_sp)
+    {
+      TypeList* type_list = module_sp->GetTypeList();
+      if (type_list)
+      {
+        std::vector<TypeSP> types;
+        type_list->GetAllTypes(types);
+
+        for (size_t idx = 0; idx < types.size(); idx++)
+        {
+          TypeSP type_sp (types[idx]);
+          if (type_sp)
+            retval.Append(SBType(type_sp));
+        }
+      }
+    }
 
     return retval;
 }
Index: source/Symbol/TypeList.cpp
===================================================================
--- source/Symbol/TypeList.cpp	(revision 182772)
+++ source/Symbol/TypeList.cpp	(working copy)
@@ -135,6 +135,16 @@
     return TypeSP();
 }
 
+void
+TypeList::GetAllTypes(std::vector<lldb::TypeSP>& types) const
+{
+  for (auto pos = m_types.begin(), end = m_types.end(); pos != end; ++pos)
+  {
+    types.push_back(pos->second);
+  }
+}
+
+
 bool
 TypeList::RemoveTypeWithUID (user_id_t uid)
 {
