- enhancement: improve parse result for STL <random>
This commit is contained in:
parent
edfd09191c
commit
6a6dc126a4
5
NEWS.md
5
NEWS.md
|
@ -25,10 +25,11 @@ Red Panda C++ Version 2.4
|
|||
- fix: &operator= functions are not correctly parsed;
|
||||
- fix: Code Formatter's "add indent to continueous lines" option is not correctly saved.
|
||||
- fix: _Pragma is not correctly handled;
|
||||
- enhancement: improve parse result for STL <random>
|
||||
- change: the default value for UI font size : 11
|
||||
- change: the default value for add leading zeros to line numbers : false
|
||||
|
||||
|
||||
- upgrade integrated libturtle. fix: nothing is drawed when set background color to BLACK
|
||||
- upgrade integrate fmtlib. fix: imcompatible with GBK encoding
|
||||
|
||||
Red Panda C++ Version 2.3
|
||||
|
||||
|
|
|
@ -1457,7 +1457,7 @@ void CppParser::addSoloScopeLevel(PStatement& statement, int line, bool shouldRe
|
|||
mClassScope = StatementClassScope::Public; // structs are public by default
|
||||
mCurrentClassScope.append(mClassScope);
|
||||
#ifdef QT_DEBUG
|
||||
//if (mCurrentClassScope.count()==1)
|
||||
// if (mCurrentClassScope.count()==1)
|
||||
// qDebug()<<"++add scope"<<mCurrentFile<<line<<mCurrentClassScope.count();
|
||||
#endif
|
||||
}
|
||||
|
@ -1468,7 +1468,7 @@ void CppParser::removeScopeLevel(int line)
|
|||
if (mCurrentScope.isEmpty())
|
||||
return; // TODO: should be an exception
|
||||
#ifdef QT_DEBUG
|
||||
//if (mCurrentClassScope.count()==1)
|
||||
// if (mCurrentClassScope.count()==1)
|
||||
// qDebug()<<"--remove scope"<<mCurrentFile<<line<<mCurrentClassScope.count();
|
||||
#endif
|
||||
PStatement currentScope = getCurrentScope();
|
||||
|
@ -3618,7 +3618,7 @@ void CppParser::handleVar(const QString& typePrefix,bool isExtern,bool isStatic)
|
|||
break;
|
||||
} else if (isWordChar(mTokenizer[mIndex]->text[0])) {
|
||||
QString cmd=mTokenizer[mIndex]->text;
|
||||
if (mTokenizer[mIndex+1]->text=='('
|
||||
if (mIndex+1< mTokenizer.tokenCount() && mTokenizer[mIndex+1]->text=='('
|
||||
&& mTokenizer[mIndex+1]->matchIndex+1<mTokenizer.tokenCount()
|
||||
&& mTokenizer[mTokenizer[mIndex+1]->matchIndex+1]->text=='(') {
|
||||
//function pointer
|
||||
|
|
|
@ -201,7 +201,6 @@ QString CppTokenizer::getForInit()
|
|||
QString CppTokenizer::getNextToken(TokenType *pTokenType, bool bSkipArray, bool bSkipBlock)
|
||||
{
|
||||
QString result;
|
||||
int backupIndex;
|
||||
bool done = false;
|
||||
*pTokenType=TokenType::Normal;
|
||||
while (true) {
|
||||
|
@ -759,7 +758,28 @@ void CppTokenizer::skipTemplateArgs()
|
|||
if (*mCurrent != '<')
|
||||
return;
|
||||
|
||||
skipPair('<', '>');
|
||||
if (skipAngleBracketPair())
|
||||
return;
|
||||
QChar* lastBracketPos = mCurrent;
|
||||
bool shouldExit=false;
|
||||
while (true) {
|
||||
switch(mCurrent->unicode()) {
|
||||
case '\0':
|
||||
case ';':
|
||||
case '}':
|
||||
case '{':
|
||||
shouldExit=true;
|
||||
break;
|
||||
case '>':
|
||||
lastBracketPos = mCurrent;
|
||||
break;
|
||||
}
|
||||
if (shouldExit)
|
||||
break;
|
||||
mCurrent++;
|
||||
}
|
||||
if (*lastBracketPos=='>')
|
||||
mCurrent = lastBracketPos+1; //skip '>';
|
||||
}
|
||||
|
||||
void CppTokenizer::skipToEOL()
|
||||
|
|
|
@ -82,6 +82,7 @@ private:
|
|||
void skipAssignment();
|
||||
void skipDoubleQuotes();
|
||||
void skipPair(const QChar& cStart, const QChar cEnd);
|
||||
void skipParenthesis();
|
||||
bool skipAngleBracketPair();
|
||||
void skipRawString();
|
||||
void skipSingleQuote();
|
||||
|
|
Loading…
Reference in New Issue