forked from qt-creator/qt-creator
fix error() not propagating through if()
if() would simply "downgrade" a fatal error to a false condition, which is certainly not expected. Change-Id: Ie9c54f2bddf588856498bf795007b341b7c9363a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from qtbase/b27d4835c2ae0d8767ca914acb72a4bdcea6fc85) Reviewed-by: Jake Petroules <jake.petroules@qt.io>
This commit is contained in:
@@ -1215,8 +1215,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
|
|||||||
evalError(fL1S("if(condition) requires one argument."));
|
evalError(fL1S("if(condition) requires one argument."));
|
||||||
return ReturnFalse;
|
return ReturnFalse;
|
||||||
}
|
}
|
||||||
return returnBool(evaluateConditional(args.at(0).toQString(),
|
return evaluateConditional(args.at(0).toQString(),
|
||||||
m_current.pro->fileName(), m_current.line));
|
m_current.pro->fileName(), m_current.line);
|
||||||
}
|
}
|
||||||
case T_CONFIG: {
|
case T_CONFIG: {
|
||||||
if (args.count() < 1 || args.count() > 2) {
|
if (args.count() < 1 || args.count() > 2) {
|
||||||
|
@@ -1750,13 +1750,14 @@ ProStringList QMakeEvaluator::evaluateExpandFunction(
|
|||||||
return ProStringList();
|
return ProStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QMakeEvaluator::evaluateConditional(const QString &cond, const QString &where, int line)
|
QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditional(
|
||||||
|
const QString &cond, const QString &where, int line)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
VisitReturn ret = ReturnFalse;
|
||||||
ProFile *pro = m_parser->parsedProBlock(cond, where, line, QMakeParser::TestGrammar);
|
ProFile *pro = m_parser->parsedProBlock(cond, where, line, QMakeParser::TestGrammar);
|
||||||
if (pro->isOk()) {
|
if (pro->isOk()) {
|
||||||
m_locationStack.push(m_current);
|
m_locationStack.push(m_current);
|
||||||
ret = visitProBlock(pro, pro->tokPtr()) == ReturnTrue;
|
ret = visitProBlock(pro, pro->tokPtr());
|
||||||
m_current = m_locationStack.pop();
|
m_current = m_locationStack.pop();
|
||||||
}
|
}
|
||||||
pro->deref();
|
pro->deref();
|
||||||
@@ -1768,7 +1769,7 @@ void QMakeEvaluator::checkRequirements(const ProStringList &deps)
|
|||||||
{
|
{
|
||||||
ProStringList &failed = valuesRef(ProKey("QMAKE_FAILED_REQUIREMENTS"));
|
ProStringList &failed = valuesRef(ProKey("QMAKE_FAILED_REQUIREMENTS"));
|
||||||
foreach (const ProString &dep, deps)
|
foreach (const ProString &dep, deps)
|
||||||
if (!evaluateConditional(dep.toQString(), m_current.pro->fileName(), m_current.line))
|
if (evaluateConditional(dep.toQString(), m_current.pro->fileName(), m_current.line) != ReturnTrue)
|
||||||
failed << dep;
|
failed << dep;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -211,7 +211,7 @@ public:
|
|||||||
ProStringList evaluateBuiltinExpand(int func_t, const ProKey &function, const ProStringList &args);
|
ProStringList evaluateBuiltinExpand(int func_t, const ProKey &function, const ProStringList &args);
|
||||||
VisitReturn evaluateBuiltinConditional(int func_t, const ProKey &function, const ProStringList &args);
|
VisitReturn evaluateBuiltinConditional(int func_t, const ProKey &function, const ProStringList &args);
|
||||||
|
|
||||||
bool evaluateConditional(const QString &cond, const QString &where, int line = -1);
|
VisitReturn evaluateConditional(const QString &cond, const QString &where, int line = -1);
|
||||||
#ifdef PROEVALUATOR_FULL
|
#ifdef PROEVALUATOR_FULL
|
||||||
void checkRequirements(const ProStringList &deps);
|
void checkRequirements(const ProStringList &deps);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user