From 8400896cfe3fbef7666329a2920bd0dbdd5890af Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 11 Sep 2012 19:30:29 +0200 Subject: don't pretend that break()/next()/return() are functions it's a pretty braindead thing to implement control flow statements as (built-in) functions. as a "side effect", this fixes return() value handling for lists. (cherry picked from qtcreator/f53ed6c4b3feca59a94d4f0de8b1a7411122e30e) (cherry picked from qtcreator/f529e22ec38fb9a656d74394e484d2453cf42c69) Change-Id: I59c8efa0e4d65329327115f7f8ed20719e7f7546 Reviewed-by: Qt Doc Bot Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- qmake/library/qmakebuiltins.cpp | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) (limited to 'qmake/library/qmakebuiltins.cpp') diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index bf1c00f262..d03475c06f 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -96,7 +96,7 @@ enum ExpandFunc { enum TestFunc { T_INVALID = 0, T_REQUIRES, T_GREATERTHAN, T_LESSTHAN, T_EQUALS, T_EXISTS, T_EXPORT, T_CLEAR, T_UNSET, T_EVAL, T_CONFIG, T_SYSTEM, - T_RETURN, T_BREAK, T_NEXT, T_DEFINED, T_CONTAINS, T_INFILE, + T_DEFINED, T_CONTAINS, T_INFILE, T_COUNT, T_ISEMPTY, T_INCLUDE, T_LOAD, T_DEBUG, T_LOG, T_MESSAGE, T_WARNING, T_ERROR, T_IF, T_MKPATH, T_WRITE_FILE, T_TOUCH, T_CACHE }; @@ -168,9 +168,6 @@ void QMakeEvaluator::initFunctionStatics() { "if", T_IF }, { "isActiveConfig", T_CONFIG }, { "system", T_SYSTEM }, - { "return", T_RETURN }, - { "break", T_BREAK }, - { "next", T_NEXT }, { "defined", T_DEFINED }, { "contains", T_CONTAINS }, { "infile", T_INFILE }, @@ -1077,17 +1074,6 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return returnBool(m_functionDefs.replaceFunctions.contains(var) || m_functionDefs.testFunctions.contains(var)); } - case T_RETURN: - m_returnValue = args; - // It is "safe" to ignore returns - due to qmake brokeness - // they cannot be used to terminate loops anyway. - if (m_cumulative) - return ReturnTrue; - if (m_valuemapStack.size() == 1) { - evalError(fL1S("unexpected return().")); - return ReturnFalse; - } - return ReturnReturn; case T_EXPORT: { if (args.count() != 1) { evalError(fL1S("export(variable) requires one argument.")); @@ -1158,20 +1144,6 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( } return ret; } - case T_BREAK: - if (m_skipLevel) - return ReturnFalse; - if (m_loopLevel) - return ReturnBreak; - evalError(fL1S("Unexpected break().")); - return ReturnFalse; - case T_NEXT: - if (m_skipLevel) - return ReturnFalse; - if (m_loopLevel) - return ReturnNext; - evalError(fL1S("Unexpected next().")); - return ReturnFalse; case T_IF: { if (args.count() != 1) { evalError(fL1S("if(condition) requires one argument.")); -- cgit v1.2.3