- enhancement: Correctly reformat C++ three-way comparision operator "<=>"

This commit is contained in:
Roy Qu 2023-07-06 20:41:54 +08:00
parent 5240b1f01f
commit 4f23c35808
5 changed files with 13 additions and 6 deletions

View File

@ -32,6 +32,7 @@ Red Panda C++ Version 2.23
- fix: Tips for problem is not correctly displayed.
- enhancement: Folder mode in "File in files" dialog.
- enhancement: When open a file, test if it contains binary contains.
- enhancement: Correctly reformat C++ three-way comparision operator "<=>"
Red Panda C++ Version 2.22

View File

@ -27,7 +27,6 @@ AutolinkManager* pAutolinkManager;
AutolinkManager::AutolinkManager()
{
}
PAutolink AutolinkManager::getLink(const QString &header) const

View File

@ -558,12 +558,14 @@ void CppSyntaxer::procGreater()
switch (mLine[mRun+1].unicode()) {
case '=':
mRun += 2;
if (mRun<mLineSize && mLine[mRun]=='>') // C++20 <=>
mRun++;
return;
case '>':
if (mRun+2<mLineSize && mLine[mRun+2] == '=') {
if (mRun+2<mLineSize && mLine[mRun+2] == '=') { // >>=
mRun+=3;
} else {
mRun += 2;
mRun += 2; // >>
}
return;
}

View File

@ -131,6 +131,7 @@ const string ASResource::AS_GR_GR_GR = string(">>>");
const string ASResource::AS_LS_EQUAL = string("<=");
const string ASResource::AS_LS_LS = string("<<");
const string ASResource::AS_LS_LS_LS = string("<<<");
const string ASResource::AS_THREEWAY_COMPARISION = string("<=>");
const string ASResource::AS_QUESTION_QUESTION = string("??");
const string ASResource::AS_LAMBDA = string("=>"); // C# lambda expression arrow
const string ASResource::AS_ARROW = string("->");
@ -350,8 +351,8 @@ void ASResource::buildIndentableMacros(vector<const pair<const string, const str
*/
void ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators)
{
const size_t elements = 15;
nonAssignmentOperators->reserve(elements);
// const size_t elements = 16;
// nonAssignmentOperators->reserve(elements);
nonAssignmentOperators->emplace_back(&AS_EQUAL);
nonAssignmentOperators->emplace_back(&AS_PLUS_PLUS);
@ -367,8 +368,9 @@ void ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmen
nonAssignmentOperators->emplace_back(&AS_AND);
nonAssignmentOperators->emplace_back(&AS_OR);
nonAssignmentOperators->emplace_back(&AS_LAMBDA);
nonAssignmentOperators->emplace_back(&AS_THREEWAY_COMPARISION);
assert(nonAssignmentOperators->size() < elements);
// assert(nonAssignmentOperators->size() < elements);
sort(nonAssignmentOperators->begin(), nonAssignmentOperators->end(), sortOnLength);
}
@ -463,6 +465,8 @@ void ASResource::buildOperators(vector<const string*>* operators, int fileType)
operators->emplace_back(&AS_LS_LS);
operators->emplace_back(&AS_QUESTION_QUESTION);
operators->emplace_back(&AS_LAMBDA);
operators->emplace_back(&AS_THREEWAY_COMPARISION);
operators->emplace_back(&AS_ARROW);
operators->emplace_back(&AS_AND);
operators->emplace_back(&AS_OR);

View File

@ -273,6 +273,7 @@ public:
static const string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN;
static const string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL;
static const string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS, AS_GR_GR_GR, AS_GR_GR;
static const string AS_THREEWAY_COMPARISION;
static const string AS_QUESTION_QUESTION, AS_LAMBDA;
static const string AS_ARROW, AS_AND, AS_OR;
static const string AS_SCOPE_RESOLUTION;