https://github.com/kuilpd commented:

I think we need to get rid of everything that references C++ keywords directly. 
I don't think we need to parse the builtin type manually, so we can just remove 
`IsSimpleTypeSpecifierKeyword`, `HandleSimpleTypeSpecifier`, and 
`TypeDeclaration` class altogether. Instead, parse a sequence of identifiers as 
a single string and call `TypeSystem::GetBuiltinTypeByName` to check if such a 
builtin type exists, it already has pretty much all variations of builtin types 
in `TypeSystemClang`. This way other languages can specify their own builtin 
types as well.

The algorithm of `ParseTypeId` would be something like this:
1. `ParseTypeSpecifierSeq`, that returns a string that is either a builtin type 
(`"unsigned long long"`) or a user defined type (`"ns::myint"`)
2. Call `ResolveTypeByName` on the string, which first attempts a 
`GetBuiltinTypeByName` and immediately returns a `CompilerType` if found, then 
searches in modules for user types
3. Handle * and & like before

I did a quick test with this logic, seems to be working.


https://github.com/llvm/llvm-project/pull/159500
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to