transpile: handle all cases of extra braces in string initializers #1265
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.
curl
: Transpiler emits single-dimensional initializer for 2D entries instruct alpn_spec
#1264.We need to handle the 4 cases in
str_init.c
with identical initializers:ptr_extra_braces
array_extra_braces
array_of_ptrs
array_of_arrays
All 4 have different types, but the same initializer, which is possible because C allows extra braces around any initializer element. For non-string literal elements, the clang AST already fixes this up, but doesn't for string literals, so we need to handle them specially. The default logic handles all except
array_extra_braces
.array_extra_braces
is uniquely identified by:CTypeKind::Char
(w/o this,array_of_arrays
is included)CExprKind::Literal
of aCLiteral::String
).