- Enhancement: Support C11 ano

This commit is contained in:
Roy Qu 2023-02-20 17:52:42 +08:00
parent 5bd1d92d53
commit 60db5a894b
2 changed files with 25 additions and 14 deletions

View File

@ -3,6 +3,7 @@ Red Panda C++ Version 2.13
- fix: Only C/C++/GAS files can set breakpoints.
- Enhancement: Don't show breakpoints/watch related menuitems in context menu for non-C/C++/GAS files.
- Enhancement: Disable reformat code for non-C/C++ files.
- Enhancement: Support C11 ano
Red Panda C++ Version 2.12

View File

@ -3398,20 +3398,30 @@ void CppParser::handleStructs(bool isTypedef)
}
}
if (!firstSynonym) {
//anonymous union/struct/class, add as a block
firstSynonym=addStatement(
getCurrentScope(),
mCurrentFile,
"",
"",
"",
"",
"",
mTokenizer[mIndex]->line,
StatementKind::skBlock,
getScope(),
mClassScope,
StatementProperty::spHasDefinition);
PStatement scope = getCurrentScope();
if (scope && scope->kind == StatementKind::skClass
&& mIndex<mTokenizer.tokenCount() && mTokenizer[mIndex]->text=="{") {
//C11 anonymous union/struct
addSoloScopeLevel(scope, mTokenizer[mIndex]->line);
//skip {
mIndex++;
return;
} else {
//anonymous union/struct/class, add as a block
firstSynonym=addStatement(
getCurrentScope(),
mCurrentFile,
"",
"",
"",
"",
"",
mTokenizer[mIndex]->line,
StatementKind::skBlock,
getScope(),
mClassScope,
StatementProperty::spHasDefinition);
}
}
if (mIndex < mTokenizer.tokenCount())
addSoloScopeLevel(firstSynonym,mTokenizer[mIndex]->line);