[ObjC] Improve the parsing of message type encoding strings #7309
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This does two main things:
Fixes the parsing of
@?
which is used to represent a block argument. Since we do not have type system support for blocks and blocks can be treated as Objective-C objects, they are mapped toid
.Fixes some incorrect handling of integer and floating point types, particularly on 32-bit platforms.
q
,Q
andd
were being mapped toNSInteger
,NSUInteger
andCGFloat
respectively. While this works for 64-bit platforms, the type aliases refer to 32-bit types on 32-bit platforms. These type encodings are explicitly for 64-bit types. To address thisq
,Q
andd
are now mapped toint64_t
,uint64_t
anddouble
respectively.l
andL
were incorrectly being interpreted asint64_t
anduint64_t
. Whilelong
is a 64-bit type on 64-bit Apple platforms, thel
/L
type encodings always refer to a 32-bit type.S
was mistakenly being mapped touint8_t
. It is nowuint16_t
as intended.