jingham added a comment. In D88483#2341538 <https://reviews.llvm.org/D88483#2341538>, @fallkrum wrote:
> Thanks a lot Jim for explanations, now it makes sense to me. > Have one more question on class Type. Writing API test for the patch defined > 2 functions like this: > > void *func1(int) { > return NULL; > } > > void *func2(int) { > return NULL; > } > > Tried to find function type using target.FindFirstType('func1') and got > nothing as a result. Call to module.GetTypes().GetTypeAtIndex(0).GetName() > contained: > "void *(int)". Looking through clang::Decls found out that > clang::FunctionDecl is child of clang::ValueDecl and it finally became clear > to me that "func1", "func2" are not types at all but simply symbols > (variables?) of the same type "void *(int)". Therefore module where above 2 > functions were declared contained only 1 type "void *(int)". Investigating > how DWARFASTParser works noticed that it do generates 2 Type instances for 2 > defined functions with m_name variable set to "func1", "func2" respectively > and m_compiler_type referencing the same "void *(int)" (but not in it's > string representation of course). > So the question is: Does class Type represents not only a type but also a > variable (symbol or identifier, don't know how to name it correctly in this > situation)? My understanding is that functions have a type but aren't types themselves. I'm not sure where you are seeing us make Type's for functions, can you say more about that? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D88483/new/ https://reviews.llvm.org/D88483 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits