diff options
Diffstat (limited to 'src/tools/moc/moc.cpp')
-rw-r--r-- | src/tools/moc/moc.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 22207a9030..e4b9b19758 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -560,7 +560,8 @@ void Moc::parse() until(RBRACE); def.end = index; index = def.begin + 1; - while (inNamespace(&def) && hasNext()) { + const bool parseNamespace = currentFilenames.size() <= 1; + while (parseNamespace && inNamespace(&def) && hasNext()) { switch (next()) { case Q_NAMESPACE_TOKEN: def.hasQNamespace = true; @@ -569,10 +570,16 @@ void Moc::parse() case Q_ENUM_NS_TOKEN: parseEnumOrFlag(&def, false); break; + case Q_ENUM_TOKEN: + error("Q_ENUM can't be used in a Q_NAMESPACE, use Q_ENUM_NS instead"); + break; case Q_FLAGS_TOKEN: case Q_FLAG_NS_TOKEN: parseEnumOrFlag(&def, true); break; + case Q_FLAG_TOKEN: + error("Q_FLAG can't be used in a Q_NAMESPACE, use Q_FLAG_NS instead"); + break; case Q_DECLARE_FLAGS_TOKEN: parseFlag(&def); break; @@ -735,10 +742,16 @@ void Moc::parse() case Q_ENUM_TOKEN: parseEnumOrFlag(&def, false); break; + case Q_ENUM_NS_TOKEN: + error("Q_ENUM_NS can't be used in a Q_OBJECT/Q_GADGET, use Q_ENUM instead"); + break; case Q_FLAGS_TOKEN: case Q_FLAG_TOKEN: parseEnumOrFlag(&def, true); break; + case Q_FLAG_NS_TOKEN: + error("Q_FLAG_NS can't be used in a Q_OBJECT/Q_GADGET, use Q_FLAG instead"); + break; case Q_DECLARE_FLAGS_TOKEN: parseFlag(&def); break; |