Fix parsing of #if defined expression
We only need to match the closing parentheses if there was an opening one This has caused mis-parsing of tst_qbytearray.cpp Change-Id: I9d52916e3ed8549c5ddd968092451fef7389a952 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
This commit is contained in:
parent
c888e20f22
commit
96611a677f
@ -538,12 +538,13 @@ void Preprocessor::substituteUntilNewline(Symbols &substituted, MacroSafeSet saf
|
||||
continue;
|
||||
}
|
||||
} else if (token == PP_DEFINED) {
|
||||
test(PP_LPAREN);
|
||||
bool braces = test(PP_LPAREN);
|
||||
next(PP_IDENTIFIER);
|
||||
Symbol definedOrNotDefined = symbol();
|
||||
definedOrNotDefined.token = macros.contains(definedOrNotDefined)? PP_MOC_TRUE : PP_MOC_FALSE;
|
||||
substituted += definedOrNotDefined;
|
||||
test(PP_RPAREN);
|
||||
if (braces)
|
||||
test(PP_RPAREN);
|
||||
continue;
|
||||
} else if (token == PP_NEWLINE) {
|
||||
substituted += symbol();
|
||||
|
@ -346,11 +346,28 @@ private slots:
|
||||
void invalidSlot() {}
|
||||
#endif
|
||||
|
||||
|
||||
friend class Receiver; // task #85783
|
||||
signals:
|
||||
friend class Sender; // task #85783
|
||||
|
||||
#define MACRO_DEFINED
|
||||
|
||||
#if !(defined MACRO_UNDEF || defined MACRO_DEFINED) || 1
|
||||
void signalInIf1();
|
||||
#else
|
||||
void doNotExist();
|
||||
#endif
|
||||
#if !(!defined MACRO_UNDEF || !defined MACRO_DEFINED) && 1
|
||||
void doNotExist();
|
||||
#else
|
||||
void signalInIf2();
|
||||
#endif
|
||||
#if !(!defined (MACRO_DEFINED) || !defined (MACRO_UNDEF)) && 1
|
||||
void doNotExist();
|
||||
#else
|
||||
void signalInIf3();
|
||||
#endif
|
||||
|
||||
public slots:
|
||||
void const slotWithSillyConst() {}
|
||||
|
||||
@ -756,6 +773,10 @@ void tst_Moc::preprocessorConditionals()
|
||||
QVERIFY(mobj->indexOfSlot("slotInIf()") != -1);
|
||||
QVERIFY(mobj->indexOfSlot("slotInLastElse()") != -1);
|
||||
QVERIFY(mobj->indexOfSlot("slotInElif()") != -1);
|
||||
QVERIFY(mobj->indexOfSignal("signalInIf1()") != -1);
|
||||
QVERIFY(mobj->indexOfSignal("signalInIf2()") != -1);
|
||||
QVERIFY(mobj->indexOfSignal("signalInIf3()") != -1);
|
||||
QVERIFY(mobj->indexOfSignal("doNotExist()") == -1);
|
||||
}
|
||||
|
||||
void tst_Moc::blackslashNewlines()
|
||||
|
Loading…
Reference in New Issue
Block a user