qmake: let discard_from() discard function definitions as well

for completeness.

Change-Id: I3ffc14e041408c773e277442828170e3df04ec8d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
Oswald Buddenhagen 2016-11-11 20:01:53 +01:00
parent cff05b398c
commit 965e861e61
3 changed files with 24 additions and 2 deletions

View File

@ -1365,6 +1365,18 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
}
++vit;
}
for (auto fit = m_functionDefs.testFunctions.begin(); fit != m_functionDefs.testFunctions.end(); ) {
if (fit->pro() == pro)
fit = m_functionDefs.testFunctions.erase(fit);
else
++fit;
}
for (auto fit = m_functionDefs.replaceFunctions.begin(); fit != m_functionDefs.replaceFunctions.end(); ) {
if (fit->pro() == pro)
fit = m_functionDefs.replaceFunctions.erase(fit);
else
++fit;
}
pro->deref();
return ReturnTrue;
}

View File

@ -2326,8 +2326,14 @@ void tst_qmakelib::addTestFunctions(const QString &qindir)
<< true;
QTest::newRow("discard_from()")
<< "HERE = 1\nPLUS = one\ninclude(include/inc.pri)\ndiscard_from(include/inc.pri): OK = 1"
<< "OK = 1\nHERE = 1\nPLUS = one\nVAR = UNDEF"
<< "HERE = 1\nPLUS = one\n"
"defineTest(tfunc) {}\ndefineReplace(rfunc) {}\n"
"include(include/inc.pri)\n"
"discard_from(include/inc.pri): OK = 1\n"
"defined(tfunc, test): TDEF = 1\ndefined(rfunc, replace): RDEF = 1\n"
"defined(func, test): DTDEF = 1\ndefined(func, replace): DRDEF = 1\n"
<< "OK = 1\nHERE = 1\nPLUS = one\nVAR = UNDEF\n"
"TDEF = 1\nRDEF = 1\nDTDEF = UNDEF\nDRDEF = UNDEF"
<< ""
<< true;

View File

@ -8,3 +8,7 @@ fake-*: MATCH = 1
defineTest(func) {
message("say hi!")
}
defineReplace(func) {
return("say hi!")
}