diff --git a/lldb/source/API/SBType.cpp b/lldb/source/API/SBType.cpp --- a/lldb/source/API/SBType.cpp +++ b/lldb/source/API/SBType.cpp @@ -213,10 +213,8 @@ if (!IsValid()) return LLDB_RECORD_RESULT(SBType()); - CompilerType canonical_type = - m_opaque_sp->GetCompilerType(true).GetCanonicalType(); - return LLDB_RECORD_RESULT(SBType( - TypeImplSP(new TypeImpl(canonical_type.GetArrayElementType(nullptr))))); + return LLDB_RECORD_RESULT(SBType(TypeImplSP(new TypeImpl( + m_opaque_sp->GetCompilerType(true).GetArrayElementType(nullptr))))); } SBType SBType::GetArrayType(uint64_t size) { diff --git a/lldb/test/API/python_api/type/TestTypeList.py b/lldb/test/API/python_api/type/TestTypeList.py --- a/lldb/test/API/python_api/type/TestTypeList.py +++ b/lldb/test/API/python_api/type/TestTypeList.py @@ -131,3 +131,16 @@ # (lldb-enumerations.h). int_type = id_type.GetBasicType(lldb.eBasicTypeInt) self.assertTrue(id_type == int_type) + + # Find 'myint_arr' and check the array element type. + myint_arr = frame0.FindVariable('myint_arr') + self.assertTrue(myint_arr, VALID_VARIABLE) + self.DebugSBValue(myint_arr) + myint_arr_type = myint_arr.GetType() + self.DebugSBType(myint_arr_type) + self.assertTrue(myint_arr_type.IsArrayType()) + myint_arr_element_type = myint_arr_type.GetArrayElementType() + self.DebugSBType(myint_arr_element_type) + myint_type = target.FindFirstType('myint') + self.DebugSBType(myint_type) + self.assertTrue(myint_arr_element_type == myint_type) diff --git a/lldb/test/API/python_api/type/main.cpp b/lldb/test/API/python_api/type/main.cpp --- a/lldb/test/API/python_api/type/main.cpp +++ b/lldb/test/API/python_api/type/main.cpp @@ -56,5 +56,8 @@ // This corresponds to an empty task list. Task *empty_task_head = new Task(-1, NULL); + typedef int myint; + myint myint_arr[] = {1, 2, 3}; + return 0; // Break at this line }