summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@nokia.com>2010-09-10 07:34:43 (GMT)
committerOswald Buddenhagen <oswald.buddenhagen@nokia.com>2010-09-10 14:31:25 (GMT)
commitf7db9a602a83b05ccad6ac33a2ab63acf3367481 (patch)
treefaec051e25a7d2f357e034f672f7549839fa493c
parentc2d6eb9dca7546bbe8d9c6c62db683615e4b23a7 (diff)
downloadQt-f7db9a602a83b05ccad6ac33a2ab63acf3367481.zip
Qt-f7db9a602a83b05ccad6ac33a2ab63acf3367481.tar.gz
Qt-f7db9a602a83b05ccad6ac33a2ab63acf3367481.tar.bz2
delay next token fetching when opening namespace
otherwise, if the next token to be fetched is a non-empty #define, it would save the context before entering the namespace, and thus the post-define context restore would just discard the namespace entry. Task-number: QTBUG-12683
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp25
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result8
-rw-r--r--tools/linguist/lupdate/cpp.cpp2
3 files changed, 34 insertions, 1 deletions
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp b/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp
index c56ba7c..706e8d0 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp
@@ -318,3 +318,28 @@ int LotsaFun::operator<<(int left, int right)
tr("this is inside operator<<");
return left << right;
}
+
+
+
+// QTBUG-12683: define in re-opened namespace
+namespace NameSchpace {
+
+class YetMoreFun : public QObject
+{
+ Q_OBJECT
+public:
+ void funStuff();
+};
+
+}
+
+namespace NameSchpace {
+
+#define somevar 1
+
+void YetMoreFun::funStuff()
+{
+ tr("funStuff!");
+}
+
+}
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
index 1a6d551..f73fc64 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
@@ -149,6 +149,14 @@ backslashed \ stuff.</source>
</message>
</context>
<context>
+ <name>NameSchpace::YetMoreFun</name>
+ <message>
+ <location filename="main.cpp" line="342"/>
+ <source>funStuff!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>Plurals, QCoreApplication</name>
<message numerus="yes">
<location filename="main.cpp" line="81"/>
diff --git a/tools/linguist/lupdate/cpp.cpp b/tools/linguist/lupdate/cpp.cpp
index 009d5a7..d701d7f 100644
--- a/tools/linguist/lupdate/cpp.cpp
+++ b/tools/linguist/lupdate/cpp.cpp
@@ -1704,7 +1704,6 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
HashString ns = HashString(text);
yyTok = getToken();
if (yyTok == Tok_LeftBrace) {
- yyTok = getToken();
namespaceDepths.push(namespaces.count());
enterNamespace(&namespaces, ns);
@@ -1712,6 +1711,7 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
functionContextUnresolved.clear();
prospectiveContext.clear();
pendingContext.clear();
+ yyTok = getToken();
} else if (yyTok == Tok_Equals) {
// e.g. namespace Is = OuterSpace::InnerSpace;
QList<HashString> fullName;