handle even more include in enum cases
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Sun, 7 Aug 2022 13:56:40 +0000 (14:56 +0100)
committerDmitry Shachnev <mitya57@debian.org>
Sun, 7 Aug 2022 13:56:40 +0000 (14:56 +0100)
Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=87973325f1b99f2b
Last-Update: 2022-04-07

The solution in d3ed7dac8aa2f4ede0c409254b9dd44842086be0 was needlessly
complicated, and broke a valid use case.
The issue of no identifier being available to parse after the include
has been processed can instead be solved by moving the test for the
closing brace after the include processing.

Gbp-Pq: Name moc_handle_include.diff

src/tools/moc/moc.cpp
tests/auto/tools/moc/enum_with_include.h

index 73899199113acc42e0c22dba6690dd4add7ce918..28c7a43cb8732d608816146aa128f0dbec265e38 100644 (file)
@@ -305,10 +305,9 @@ bool Moc::parseEnum(EnumDef *def)
             return IncludeState::NoInclude;
     };
     do {
+        handleInclude();
         if (lookup() == RBRACE) // accept trailing comma
             break;
-        if ( handleInclude() == IncludeState::IncludeEnd)
-            continue;
         next(IDENTIFIER);
         def->values += lexem();
         handleInclude();
index b8abf77f122ca99e3a0b26ea5ed7a4516ff48943..cd53ba6a28873485f34d5fb1230e148fffd2ad1d 100644 (file)
@@ -34,6 +34,11 @@ class Foo : public QObject {
     enum en {
        #include <enum_inc.h>
     };
+
+    enum class en2 {
+       #include <enum_inc.h>
+       reference = 42
+    };
     Q_OBJECT
 };
 #endif