Currently having a typedef for ObjC types is breaking member access in LLDB:
typedef NSString Str; NSString *s; s.length; // OK Str *s; s.length; // Causes: member reference base type 'Str *' (aka 'NSString *') is not a structure or union
This works for NSString as there the type building from NSString -> NSString * will correctly
build a ObjCObjectPointerType (which is necessary to make member access with a dot possible),
but for the typedef the Str -> Str * conversion will produce an incorrect PointerType. The reason
for this is that our check in TypeSystemClang::GetPointerType is not desugaring the base type,
which causes that Str is not recognised as a type to a ObjCInterface as the check only sees the
typedef sugar that was put around it. This causes that we fall back to constructing a PointerType
instead which does not allow member access with the dot operator.
This patch just changes the check to look at the desugared type instead.
Fixes rdar://17525603