mirror of https://github.com/qt/qtbase.git
moc: handle "L" integer suffix
This commit adds some initial support for handling the 'L' suffix after numbers. This one is especially important given that the __cplusplus define is using it. Other suffixes will be handled in some later commit, which should also unify the already divergent parse behavior between DIGIT and PP_DIGIT parsing (e.g. when it comes to byte prefixes). Task-number: QTBUG-83160 Task-number: QTBUG-115558 Pick-to: 6.6 6.5 6.2 Change-Id: Ie61eae49c468abfaee80e7e4f7097917a254dc0e Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
a2ec43b8eb
commit
f0039bd517
|
@ -225,7 +225,8 @@ Symbols Preprocessor::tokenize(const QByteArray& input, int lineNum, Preprocesso
|
|||
++data;
|
||||
while (isHexDigit(*data) || *data == '\'')
|
||||
++data;
|
||||
}
|
||||
} else if (*data == 'L') // TODO: handle other suffixes
|
||||
++data;
|
||||
break;
|
||||
}
|
||||
token = FLOATING_LITERAL;
|
||||
|
@ -402,7 +403,8 @@ Symbols Preprocessor::tokenize(const QByteArray& input, int lineNum, Preprocesso
|
|||
++data;
|
||||
while (isHexDigit(*data) || *data == '\'')
|
||||
++data;
|
||||
}
|
||||
} else if (*data == 'L') // TODO: handle other suffixes
|
||||
++data;
|
||||
break;
|
||||
}
|
||||
token = PP_FLOATING_LITERAL;
|
||||
|
@ -932,7 +934,11 @@ int PP_Expression::primary_expression()
|
|||
test(PP_RPAREN);
|
||||
} else {
|
||||
next();
|
||||
value = lexem().toInt(nullptr, 0);
|
||||
const QByteArray &lex = lexem();
|
||||
auto lexView = QByteArrayView(lex);
|
||||
if (lex.endsWith('L'))
|
||||
lexView.chop(1);
|
||||
value = lexView.toInt(nullptr, 0);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
|
|
@ -638,6 +638,10 @@ private slots:
|
|||
|
||||
QT_WARNING_POP
|
||||
|
||||
// quick test to verify that moc handles the L suffix
|
||||
// correctly in the preprocessor
|
||||
#if 2000L < 1
|
||||
#else
|
||||
class PropertyTestClass : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -647,6 +651,7 @@ public:
|
|||
|
||||
Q_ENUM(TestEnum)
|
||||
};
|
||||
#endif
|
||||
|
||||
class PropertyUseClass : public QObject
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue