From 09205d573413da8a2ac3826198fe36bb2dc4349f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 19 Sep 2013 17:21:39 +0200 Subject: qmake: Expose ARGC to qmake functions to be able to check argument count ARGS already exists, but is a flattened list of the arguments, so both foo(bar, baz) and foo(bar baz) will give count(ARGS, 2), making it unreliable for validating arguments to qmake functions. Change-Id: I0bcc16614c64000169431327da48fd1a26708e67 Reviewed-by: Joerg Bornemann --- qmake/library/qmakeevaluator.cpp | 2 ++ qmake/library/qmakeevaluator_p.h | 1 + 2 files changed, 3 insertions(+) diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index 0df69890b3..1b323439ab 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -121,6 +121,7 @@ void QMakeEvaluator::initStatics() statics.strfalse = QLatin1String("false"); statics.strCONFIG = ProKey("CONFIG"); statics.strARGS = ProKey("ARGS"); + statics.strARGC = ProKey("ARGC"); statics.strDot = QLatin1String("."); statics.strDotDot = QLatin1String(".."); statics.strever = QLatin1String("ever"); @@ -1642,6 +1643,7 @@ ProStringList QMakeEvaluator::evaluateFunction( m_valuemapStack.top()[ProKey(QString::number(i+1))] = argumentsList[i]; } m_valuemapStack.top()[statics.strARGS] = args; + m_valuemapStack.top()[statics.strARGC] = ProStringList(ProString(QString::number(argumentsList.count()))); vr = visitProBlock(func.pro(), func.tokPtr()); if (vr == ReturnReturn) vr = ReturnTrue; diff --git a/qmake/library/qmakeevaluator_p.h b/qmake/library/qmakeevaluator_p.h index 935f112f52..c6cb60744f 100644 --- a/qmake/library/qmakeevaluator_p.h +++ b/qmake/library/qmakeevaluator_p.h @@ -83,6 +83,7 @@ struct QMakeStatics { QString strfalse; ProKey strCONFIG; ProKey strARGS; + ProKey strARGC; QString strDot; QString strDotDot; QString strever; -- cgit v1.2.3