Author: Andy Yankovsky Date: 2020-11-03T10:53:44-08:00 New Revision: f35a82384d9ebeff3bb5ffd7a5ebe30436c1b401
URL: https://github.com/llvm/llvm-project/commit/f35a82384d9ebeff3bb5ffd7a5ebe30436c1b401 DIFF: https://github.com/llvm/llvm-project/commit/f35a82384d9ebeff3bb5ffd7a5ebe30436c1b401.diff LOG: Return actual type from SBType::GetArrayElementType SBType::GetArrayElementType should return the actual type, not the canonical type (e.g. int32_t, not the underlying int). Added a test case to validate the new behavior. I also ran all other tests on Linux (ninja check-lldb), they all pass. Differential revision: https://reviews.llvm.org/D90318 Added: Modified: lldb/source/API/SBType.cpp lldb/test/API/python_api/type/TestTypeList.py lldb/test/API/python_api/type/main.cpp Removed: ################################################################################ diff --git a/lldb/source/API/SBType.cpp b/lldb/source/API/SBType.cpp index 772ac87145bb..0a99ac0f2292 100644 --- a/lldb/source/API/SBType.cpp +++ b/lldb/source/API/SBType.cpp @@ -213,10 +213,8 @@ SBType SBType::GetArrayElementType() { 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 index 75a793a95b29..901ddc62f4e5 100644 --- a/lldb/test/API/python_api/type/TestTypeList.py +++ b/lldb/test/API/python_api/type/TestTypeList.py @@ -131,3 +131,16 @@ def test(self): # (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 index 40799abe36d3..13e6bbc127ba 100644 --- a/lldb/test/API/python_api/type/main.cpp +++ b/lldb/test/API/python_api/type/main.cpp @@ -56,5 +56,8 @@ int main (int argc, char const *argv[]) // 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 } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits