diff options
author | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-06-30 16:02:29 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-08-02 07:54:41 +0000 |
commit | 32f3eccade765e79563fdb1e2073e58f6ca00080 (patch) | |
tree | e1ceab49df9ad4e7a20274b01e77e113093f51ed | |
parent | 3fe303ebfeffe3ea195836db577621b6aff9d99e (diff) | |
download | qt-creator-32f3eccade765e79563fdb1e2073e58f6ca00080.tar.gz |
make error() propagate from requires() and REQUIRES=
that can make sense if a function which determines the availability of
a dependency fails to do so for unexpected reasons.
Change-Id: If6cd113df25aee66830c120a2fab067c822a4543
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from qtbase/1b4ea11332f74984a62a4cc4597ad49f5b5269dc)
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
-rw-r--r-- | src/shared/proparser/qmakebuiltins.cpp | 3 | ||||
-rw-r--r-- | src/shared/proparser/qmakeevaluator.cpp | 13 | ||||
-rw-r--r-- | src/shared/proparser/qmakeevaluator.h | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp index 1bc2ba489f..f9700b9bc0 100644 --- a/src/shared/proparser/qmakebuiltins.cpp +++ b/src/shared/proparser/qmakebuiltins.cpp @@ -1194,7 +1194,8 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return ReturnFalse; case T_REQUIRES: #ifdef PROEVALUATOR_FULL - checkRequirements(args); + if (checkRequirements(args) == ReturnError) + return ReturnError; #endif return ReturnFalse; // Another qmake breakage case T_EVAL: { diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index 7f3b9571e4..c88a0e55b1 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -925,7 +925,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProVariable( } #ifdef PROEVALUATOR_FULL else if (varName == statics.strREQUIRES) - checkRequirements(values(varName)); + return checkRequirements(values(varName)); #endif return ReturnTrue; @@ -1787,12 +1787,17 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConditional( } #ifdef PROEVALUATOR_FULL -void QMakeEvaluator::checkRequirements(const ProStringList &deps) +QMakeEvaluator::VisitReturn QMakeEvaluator::checkRequirements(const ProStringList &deps) { ProStringList &failed = valuesRef(ProKey("QMAKE_FAILED_REQUIREMENTS")); - foreach (const ProString &dep, deps) - if (evaluateConditional(dep.toQString(), m_current.pro->fileName(), m_current.line) != ReturnTrue) + foreach (const ProString &dep, deps) { + VisitReturn vr = evaluateConditional(dep.toQString(), m_current.pro->fileName(), m_current.line); + if (vr == ReturnError) + return ReturnError; + if (vr != ReturnTrue) failed << dep; + } + return ReturnTrue; } #endif diff --git a/src/shared/proparser/qmakeevaluator.h b/src/shared/proparser/qmakeevaluator.h index 27add61146..672a36b7b7 100644 --- a/src/shared/proparser/qmakeevaluator.h +++ b/src/shared/proparser/qmakeevaluator.h @@ -213,7 +213,7 @@ public: VisitReturn evaluateConditional(const QString &cond, const QString &where, int line = -1); #ifdef PROEVALUATOR_FULL - void checkRequirements(const ProStringList &deps); + VisitReturn checkRequirements(const ProStringList &deps); #endif void updateMkspecPaths(); |