diff options
author | Oswald Buddenhagen <oswald.buddenhagen@digia.com> | 2013-08-15 16:51:46 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-19 18:46:48 +0200 |
commit | 35139d45ce7fee0e1c9c0409d31b710ef35c3970 (patch) | |
tree | 7e765159f22fdb0f647835cc2355715be73c6b26 | |
parent | 08bae158320f6d73bf44fcf43f45f51a01334544 (diff) | |
download | qttools-35139d45ce7fee0e1c9c0409d31b710ef35c3970.tar.gz |
make TR_EXCLUDE work for #include statements as well
Change-Id: I299043c63c6e8b2f24eeee7d3f03a514b96bca5f
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-rw-r--r-- | src/linguist/lupdate/cpp.cpp | 6 | ||||
-rw-r--r-- | src/linguist/lupdate/main.cpp | 24 | ||||
-rw-r--r-- | src/linguist/shared/translator.h | 1 | ||||
-rw-r--r-- | tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp | 3 | ||||
-rw-r--r-- | tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro | 2 |
5 files changed, 27 insertions, 9 deletions
diff --git a/src/linguist/lupdate/cpp.cpp b/src/linguist/lupdate/cpp.cpp index 65176ec6d..82138513d 100644 --- a/src/linguist/lupdate/cpp.cpp +++ b/src/linguist/lupdate/cpp.cpp @@ -1382,6 +1382,12 @@ void CppParser::processInclude(const QString &file, ConversionData &cd, const QS { QString cleanFile = QDir::cleanPath(file); + foreach (const QString &ex, cd.m_excludes) { + QRegExp rx(ex, Qt::CaseSensitive, QRegExp::Wildcard); + if (rx.exactMatch(cleanFile)) + return; + } + const int index = includeStack.indexOf(cleanFile); if (index != -1) { CppFiles::addIncludeCycle(includeStack.mid(index).toSet()); diff --git a/src/linguist/lupdate/main.cpp b/src/linguist/lupdate/main.cpp index 70402e5bc..ec2be5747 100644 --- a/src/linguist/lupdate/main.cpp +++ b/src/linguist/lupdate/main.cpp @@ -271,7 +271,8 @@ static QStringList getSources(const char *var, const char *vvar, const QStringLi return visitor.absoluteFileValues(QLatin1String(var), projectDir, vPaths, 0); } -static QStringList getSources(const ProFileEvaluator &visitor, const QString &projectDir) +static QStringList getSources(const ProFileEvaluator &visitor, const QString &projectDir, + const QStringList &excludes) { QStringList baseVPaths; baseVPaths += visitor.absolutePathValues(QLatin1String("VPATH"), projectDir); @@ -294,12 +295,6 @@ static QStringList getSources(const ProFileEvaluator &visitor, const QString &pr sourceFiles.removeDuplicates(); sourceFiles.sort(); - QStringList excludes; - foreach (QString ex, visitor.values(QLatin1String("TR_EXCLUDE"))) { - if (!QFileInfo(ex).isAbsolute()) - ex = QDir(projectDir).absoluteFilePath(ex); - excludes << QDir::cleanPath(ex); - } foreach (const QString &ex, excludes) { // TODO: take advantage of the file list being sorted QRegExp rx(ex, Qt::CaseSensitive, QRegExp::Wildcard); @@ -314,6 +309,18 @@ static QStringList getSources(const ProFileEvaluator &visitor, const QString &pr return sourceFiles; } +QStringList getExcludes(const ProFileEvaluator &visitor, const QString &projectDir) +{ + QStringList excludes; + foreach (QString ex, visitor.values(QLatin1String("TR_EXCLUDE"))) { + if (!QFileInfo(ex).isAbsolute()) + ex = QDir(projectDir).absoluteFilePath(ex); + excludes << QDir::cleanPath(ex); + } + + return excludes; +} + static void excludeProjects(const ProFileEvaluator &visitor, QStringList *subProjects) { foreach (const QString &ex, visitor.values(QLatin1String("TR_EXCLUDE"))) { @@ -421,7 +428,8 @@ static void processProject( cd.m_noUiLines = options & NoUiLines; cd.m_sourceIsUtf16 = options & SourceIsUtf16; cd.m_includePath = visitor.values(QLatin1String("INCLUDEPATH")); - QStringList sourceFiles = getSources(visitor, proPath); + cd.m_excludes = getExcludes(visitor, proPath); + QStringList sourceFiles = getSources(visitor, proPath, cd.m_excludes); QSet<QString> sourceDirs; sourceDirs.insert(proPath + QLatin1Char('/')); foreach (const QString &sf, sourceFiles) diff --git a/src/linguist/shared/translator.h b/src/linguist/shared/translator.h index 3d521ac83..6ee62b446 100644 --- a/src/linguist/shared/translator.h +++ b/src/linguist/shared/translator.h @@ -93,6 +93,7 @@ public: QString m_unTrPrefix; // QM specific QString m_sourceFileName; QString m_targetFileName; + QStringList m_excludes; QDir m_sourceDir; QDir m_targetDir; // FIXME: TS specific QSet<QString> m_projectRoots; diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp b/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp index 54781ba9f..b09a47f6e 100644 --- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp +++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp @@ -399,3 +399,6 @@ Class42::hello(int something /*= 17 */, QString str = Class42::tr("eyo")) // QTBUG-27974: strings from included sources are not collected #include "included.cpp" + +// test TR_EXCLUDE +#include "notincluded.cpp" diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro index ac5c2846e..0fd8a9627 100644 --- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro +++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro @@ -2,6 +2,6 @@ SOURCES += main.cpp SOURCES += finddialog.cpp SOURCES += excluded.cpp -TR_EXCLUDE = $$PWD/excluded.* +TR_EXCLUDE = $$PWD/excluded.* $$PWD/notincluded.cpp TRANSLATIONS = project.ts |