move parseError() call into bogusTest()
they come always in pairs (with one exception). Change-Id: Ia2f69a8776bd7146ff2fb18d13cc6bb5b2c71139 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
This commit is contained in:
parent
704aec4623
commit
d800ac64d3
@ -804,7 +804,7 @@ void QMakeParser::read(ProFile *pro, const QString &in, int line, SubGrammar gra
|
|||||||
} else if (context == CtxPureValue) {
|
} else if (context == CtxPureValue) {
|
||||||
putTok(tokPtr, TokValueTerminator);
|
putTok(tokPtr, TokValueTerminator);
|
||||||
} else {
|
} else {
|
||||||
bogusTest(tokPtr);
|
bogusTest(tokPtr, QString());
|
||||||
}
|
}
|
||||||
} else if (context == CtxValue) {
|
} else if (context == CtxValue) {
|
||||||
FLUSH_VALUE_LIST();
|
FLUSH_VALUE_LIST();
|
||||||
@ -924,8 +924,10 @@ void QMakeParser::finalizeTest(ushort *&tokPtr)
|
|||||||
m_canElse = true;
|
m_canElse = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QMakeParser::bogusTest(ushort *&tokPtr)
|
void QMakeParser::bogusTest(ushort *&tokPtr, const QString &msg)
|
||||||
{
|
{
|
||||||
|
if (!msg.isEmpty())
|
||||||
|
parseError(msg);
|
||||||
flushScopes(tokPtr);
|
flushScopes(tokPtr);
|
||||||
m_operator = NoOperator;
|
m_operator = NoOperator;
|
||||||
m_invert = false;
|
m_invert = false;
|
||||||
@ -936,10 +938,8 @@ void QMakeParser::bogusTest(ushort *&tokPtr)
|
|||||||
void QMakeParser::finalizeCond(ushort *&tokPtr, ushort *uc, ushort *ptr, int wordCount)
|
void QMakeParser::finalizeCond(ushort *&tokPtr, ushort *uc, ushort *ptr, int wordCount)
|
||||||
{
|
{
|
||||||
if (wordCount != 1) {
|
if (wordCount != 1) {
|
||||||
if (wordCount) {
|
if (wordCount)
|
||||||
parseError(fL1S("Extra characters after test expression."));
|
bogusTest(tokPtr, fL1S("Extra characters after test expression."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1000,8 +1000,7 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
|
|||||||
if (m_tmp == statics.strfor) {
|
if (m_tmp == statics.strfor) {
|
||||||
if (m_invert || m_operator == OrOperator) {
|
if (m_invert || m_operator == OrOperator) {
|
||||||
// '|' could actually work reasonably, but qmake does nonsense here.
|
// '|' could actually work reasonably, but qmake does nonsense here.
|
||||||
parseError(fL1S("Unexpected operator in front of for()."));
|
bogusTest(tokPtr, fL1S("Unexpected operator in front of for()."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
flushCond(tokPtr);
|
flushCond(tokPtr);
|
||||||
@ -1052,8 +1051,7 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
|
|||||||
defType = TokTestDef;
|
defType = TokTestDef;
|
||||||
deffunc:
|
deffunc:
|
||||||
if (m_invert) {
|
if (m_invert) {
|
||||||
parseError(fL1S("Unexpected operator in front of function definition."));
|
bogusTest(tokPtr, fL1S("Unexpected operator in front of function definition."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
flushScopes(tokPtr);
|
flushScopes(tokPtr);
|
||||||
@ -1077,14 +1075,12 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
|
|||||||
} else if (m_tmp == statics.strreturn) {
|
} else if (m_tmp == statics.strreturn) {
|
||||||
if (m_blockstack.top().nest & NestFunction) {
|
if (m_blockstack.top().nest & NestFunction) {
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
parseError(fL1S("return() requires zero or one argument."));
|
bogusTest(tokPtr, fL1S("return() requires zero or one argument."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (*uce != TokFuncTerminator) {
|
if (*uce != TokFuncTerminator) {
|
||||||
parseError(fL1S("Top-level return() requires zero arguments."));
|
bogusTest(tokPtr, fL1S("Top-level return() requires zero arguments."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1097,19 +1093,16 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
|
|||||||
defType = TokBreak;
|
defType = TokBreak;
|
||||||
ctrlstm:
|
ctrlstm:
|
||||||
if (*uce != TokFuncTerminator) {
|
if (*uce != TokFuncTerminator) {
|
||||||
parseError(fL1S("%1() requires zero arguments.").arg(m_tmp));
|
bogusTest(tokPtr, fL1S("%1() requires zero arguments.").arg(m_tmp));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(m_blockstack.top().nest & NestLoop)) {
|
if (!(m_blockstack.top().nest & NestLoop)) {
|
||||||
parseError(fL1S("Unexpected %1().").arg(m_tmp));
|
bogusTest(tokPtr, fL1S("Unexpected %1().").arg(m_tmp));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ctrlstm2:
|
ctrlstm2:
|
||||||
if (m_invert) {
|
if (m_invert) {
|
||||||
parseError(fL1S("Unexpected NOT operator in front of %1().").arg(m_tmp));
|
bogusTest(tokPtr, fL1S("Unexpected NOT operator in front of %1().").arg(m_tmp));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
finalizeTest(tokPtr);
|
finalizeTest(tokPtr);
|
||||||
@ -1119,8 +1112,7 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
|
|||||||
} else if (m_tmp == statics.stroption) {
|
} else if (m_tmp == statics.stroption) {
|
||||||
if (m_state != StNew || m_blockstack.top().braceLevel || m_blockstack.size() > 1
|
if (m_state != StNew || m_blockstack.top().braceLevel || m_blockstack.size() > 1
|
||||||
|| m_invert || m_operator != NoOperator) {
|
|| m_invert || m_operator != NoOperator) {
|
||||||
parseError(fL1S("option() must appear outside any control structures."));
|
bogusTest(tokPtr, fL1S("option() must appear outside any control structures."));
|
||||||
bogusTest(tokPtr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (*uce == (TokLiteral|TokNewStr)) {
|
if (*uce == (TokLiteral|TokNewStr)) {
|
||||||
|
@ -145,7 +145,7 @@ private:
|
|||||||
void finalizeCond(ushort *&tokPtr, ushort *uc, ushort *ptr, int wordCount);
|
void finalizeCond(ushort *&tokPtr, ushort *uc, ushort *ptr, int wordCount);
|
||||||
void finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int argc);
|
void finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int argc);
|
||||||
void finalizeTest(ushort *&tokPtr);
|
void finalizeTest(ushort *&tokPtr);
|
||||||
void bogusTest(ushort *&tokPtr);
|
void bogusTest(ushort *&tokPtr, const QString &msg);
|
||||||
void enterScope(ushort *&tokPtr, bool special, ScopeState state);
|
void enterScope(ushort *&tokPtr, bool special, ScopeState state);
|
||||||
void leaveScope(ushort *&tokPtr);
|
void leaveScope(ushort *&tokPtr);
|
||||||
void flushCond(ushort *&tokPtr);
|
void flushCond(ushort *&tokPtr);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user