forked from qt-creator/qt-creator
ProjectExplorer: Construct the LdParser regex from small, named parts
Change-Id: Ia05451454e19836a59c8285895b5f826963bc419 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -108,14 +108,15 @@ bool LdParser::isContinuation(const QString &line) const
|
|||||||
std::optional<OutputLineParser::Result> LdParser::checkMainRegex(
|
std::optional<OutputLineParser::Result> LdParser::checkMainRegex(
|
||||||
const QString &trimmedLine, const QString &originalLine)
|
const QString &trimmedLine, const QString &originalLine)
|
||||||
{
|
{
|
||||||
static const auto makePattern = []() -> QString {
|
static const auto makePattern = [] {
|
||||||
// opt. drive letter + filename: (2 brackets)
|
const QString driveSpec = "([A-Za-z]:)?";
|
||||||
const char * const FILE_PATTERN = "(([A-Za-z]:)?[^:]+\\.[^:]+):";
|
|
||||||
// line no. or elf segment + offset (1 bracket)
|
const QString filePattern = QString(R"re((%1[^:]+\.[^:]+):)re").arg(driveSpec);
|
||||||
const char * const POSITION_PATTERN = "(\\S+|\\(\\..+?[+-]0x[a-fA-F0-9]+\\)):";
|
const QString lineNumber = R"re(\S+)re";
|
||||||
return QLatin1Char('^') + QString::fromLatin1(FILE_PATTERN) + QLatin1Char('(')
|
const QString elfSegmentAndOffset = R"re(\(\..+?[+-]0x[a-fA-F0-9]+\))re";
|
||||||
+ QString::fromLatin1(FILE_PATTERN) + QLatin1String(")?(")
|
const QString positionPattern = QString("(%1|%2):").arg(lineNumber, elfSegmentAndOffset);
|
||||||
+ QLatin1String(POSITION_PATTERN) + QLatin1String(")?\\s(.+)$");
|
|
||||||
|
return QString(R"re(^%1(%1)?(%2)?\s(.+)$)re").arg(filePattern, positionPattern);
|
||||||
};
|
};
|
||||||
static const QRegularExpression regex(makePattern());
|
static const QRegularExpression regex(makePattern());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user