forked from qt-creator/qt-creator
ProjectExplorer: Fix link generation for "note:" msvc compile output
We need to generate two sets of linkspecs in order to correctly mark paths as links in the compile output _and_ the details text of the task entry. Change-Id: Ibb4ce89b8104f5edb1f1e45afa27cbd6c3ef5683 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -149,13 +149,14 @@ MsvcParser::Result MsvcParser::processCompileLine(const QString &line)
|
||||
if (match.hasMatch()) {
|
||||
QPair<FilePath, int> position = parseFileName(match.captured(1));
|
||||
const FilePath filePath = absoluteFilePath(position.first);
|
||||
LinkSpecs linkSpecs;
|
||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, position.second, match, 1);
|
||||
LinkSpecs lineLinkSpecs;
|
||||
addLinkSpecForAbsoluteFilePath(lineLinkSpecs, filePath, position.second, match, 1);
|
||||
LinkSpecs detailsLinkSpecs = lineLinkSpecs;
|
||||
if (!m_lastTask.isNull() && line.contains("note: ")) {
|
||||
const int offset = std::accumulate(m_lastTask.details.cbegin(),
|
||||
m_lastTask.details.cend(), 0,
|
||||
[](int total, const QString &line) { return total + line.length() + 1;});
|
||||
for (LinkSpec &ls : linkSpecs)
|
||||
for (LinkSpec &ls : detailsLinkSpecs)
|
||||
ls.startPos += offset;
|
||||
++m_lines;
|
||||
} else {
|
||||
@@ -165,9 +166,9 @@ MsvcParser::Result MsvcParser::processCompileLine(const QString &line)
|
||||
filePath, position.second);
|
||||
m_lines = 1;
|
||||
}
|
||||
m_linkSpecs << linkSpecs;
|
||||
m_linkSpecs << detailsLinkSpecs;
|
||||
m_lastTask.details.append(line);
|
||||
return {Status::InProgress, linkSpecs};
|
||||
return {Status::InProgress, lineLinkSpecs};
|
||||
}
|
||||
|
||||
flush();
|
||||
|
Reference in New Issue
Block a user