forked from qt-creator/qt-creator
ProjectExplorer: Support column numbers in file path linkification
... for task details. As a result, clicking on a linkified file path inside a task in the issues pane will now open the editor at the column specified in the compiler output, if there is one. We used to consider only the line. Change-Id: Idccba33b5b33029abfa8f29c7888af6c7f2e1622 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -58,7 +58,7 @@ Link OutputLineParser::parseLinkTarget(const QString &target)
|
|||||||
return {};
|
return {};
|
||||||
return Link(FilePath::fromString(parts.first()),
|
return Link(FilePath::fromString(parts.first()),
|
||||||
parts.length() > 1 ? parts.at(1).toInt() : 0,
|
parts.length() > 1 ? parts.at(1).toInt() : 0,
|
||||||
parts.length() > 2 ? parts.at(2).toInt() : 0);
|
parts.length() > 2 ? parts.at(2).toInt() - 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The redirection mechanism is needed for broken build tools (e.g. xcodebuild) that get invoked
|
// The redirection mechanism is needed for broken build tools (e.g. xcodebuild) that get invoked
|
||||||
@@ -141,26 +141,39 @@ FilePath OutputLineParser::absoluteFilePath(const FilePath &filePath) const
|
|||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutputLineParser::addLinkSpecForAbsoluteFilePath(OutputLineParser::LinkSpecs &linkSpecs,
|
void OutputLineParser::addLinkSpecForAbsoluteFilePath(
|
||||||
const FilePath &filePath, int lineNo, int pos, int len)
|
OutputLineParser::LinkSpecs &linkSpecs,
|
||||||
|
const FilePath &filePath,
|
||||||
|
int lineNo,
|
||||||
|
int column,
|
||||||
|
int pos,
|
||||||
|
int len)
|
||||||
{
|
{
|
||||||
if (filePath.toFileInfo().isAbsolute())
|
if (filePath.toFileInfo().isAbsolute())
|
||||||
linkSpecs.append({pos, len, createLinkTarget(filePath, lineNo)});
|
linkSpecs.append({pos, len, createLinkTarget(filePath, lineNo, column)});
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutputLineParser::addLinkSpecForAbsoluteFilePath(OutputLineParser::LinkSpecs &linkSpecs,
|
void OutputLineParser::addLinkSpecForAbsoluteFilePath(
|
||||||
const FilePath &filePath, int lineNo, const QRegularExpressionMatch &match,
|
OutputLineParser::LinkSpecs &linkSpecs,
|
||||||
|
const FilePath &filePath,
|
||||||
|
int lineNo,
|
||||||
|
int column,
|
||||||
|
const QRegularExpressionMatch &match,
|
||||||
int capIndex)
|
int capIndex)
|
||||||
{
|
{
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match.capturedStart(capIndex),
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, column,
|
||||||
match.capturedLength(capIndex));
|
match.capturedStart(capIndex), match.capturedLength(capIndex));
|
||||||
}
|
}
|
||||||
void OutputLineParser::addLinkSpecForAbsoluteFilePath(OutputLineParser::LinkSpecs &linkSpecs,
|
void OutputLineParser::addLinkSpecForAbsoluteFilePath(
|
||||||
const FilePath &filePath, int lineNo, const QRegularExpressionMatch &match,
|
OutputLineParser::LinkSpecs &linkSpecs,
|
||||||
|
const FilePath &filePath,
|
||||||
|
int lineNo,
|
||||||
|
int column,
|
||||||
|
const QRegularExpressionMatch &match,
|
||||||
const QString &capName)
|
const QString &capName)
|
||||||
{
|
{
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match.capturedStart(capName),
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, column,
|
||||||
match.capturedLength(capName));
|
match.capturedStart(capName), match.capturedLength(capName));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Utils::OutputLineParser::fileExists(const FilePath &fp) const
|
bool Utils::OutputLineParser::fileExists(const FilePath &fp) const
|
||||||
|
@@ -93,12 +93,13 @@ protected:
|
|||||||
Utils::FilePath absoluteFilePath(const Utils::FilePath &filePath) const;
|
Utils::FilePath absoluteFilePath(const Utils::FilePath &filePath) const;
|
||||||
static QString createLinkTarget(const FilePath &filePath, int line, int column);
|
static QString createLinkTarget(const FilePath &filePath, int line, int column);
|
||||||
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
||||||
int lineNo, int pos, int len);
|
int lineNo, int column, int pos, int len);
|
||||||
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
||||||
int lineNo, const QRegularExpressionMatch &match,
|
int lineNo, int column,
|
||||||
int capIndex);
|
const QRegularExpressionMatch &match, int capIndex);
|
||||||
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
static void addLinkSpecForAbsoluteFilePath(LinkSpecs &linkSpecs, const FilePath &filePath,
|
||||||
int lineNo, const QRegularExpressionMatch &match,
|
int lineNo, int column,
|
||||||
|
const QRegularExpressionMatch &match,
|
||||||
const QString &capName);
|
const QString &capName);
|
||||||
bool fileExists(const Utils::FilePath &fp) const;
|
bool fileExists(const Utils::FilePath &fp) const;
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ OutputLineParser::Result JavaParser::handleLine(const QString &line, OutputForma
|
|||||||
absoluteFilePath(file),
|
absoluteFilePath(file),
|
||||||
lineno);
|
lineno);
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, match, 2);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, task.column, match, 2);
|
||||||
scheduleTask(task, 1);
|
scheduleTask(task, 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
}
|
}
|
||||||
|
@@ -117,8 +117,8 @@ OutputLineParser::Result IarParser::parseWarningOrErrorOrFatalErrorDetailsMessag
|
|||||||
m_expectSnippet = false;
|
m_expectSnippet = false;
|
||||||
m_expectFilePath = false;
|
m_expectFilePath = false;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,8 +62,8 @@ OutputLineParser::Result KeilParser::parseArmWarningOrErrorDetailsMessage(const
|
|||||||
const QString descr = match.captured(DescriptionIndex);
|
const QString descr = match.captured(DescriptionIndex);
|
||||||
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,8 +98,8 @@ OutputLineParser::Result KeilParser::parseMcs51WarningOrErrorDetailsMessage1(con
|
|||||||
match.captured(MessageTextIndex));
|
match.captured(MessageTextIndex));
|
||||||
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,8 +119,8 @@ OutputLineParser::Result KeilParser::parseMcs51WarningOrErrorDetailsMessage2(con
|
|||||||
match.captured(MessageTextIndex));
|
match.captured(MessageTextIndex));
|
||||||
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -73,8 +73,8 @@ OutputLineParser::Result SdccParser::handleLine(const QString &line, OutputForma
|
|||||||
const QString descr = match.captured(MessageTextIndex);
|
const QString descr = match.captured(MessageTextIndex);
|
||||||
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,8 +90,8 @@ OutputLineParser::Result SdccParser::handleLine(const QString &line, OutputForma
|
|||||||
const QString descr = match.captured(MessageTextIndex);
|
const QString descr = match.captured(MessageTextIndex);
|
||||||
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
newTask(CompileTask(type, descr, absoluteFilePath(fileName), lineno));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
FilePathIndex);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, FilePathIndex);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -93,8 +93,8 @@ OutputLineParser::Result CMakeParser::handleLine(const QString &line, OutputForm
|
|||||||
match.captured(2).toInt());
|
match.captured(2).toInt());
|
||||||
m_lines = 1;
|
m_lines = 1;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
match, 1);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, 1);
|
||||||
|
|
||||||
m_errorOrWarningLine.file = m_lastTask.file;
|
m_errorOrWarningLine.file = m_lastTask.file;
|
||||||
m_errorOrWarningLine.line = m_lastTask.line;
|
m_errorOrWarningLine.line = m_lastTask.line;
|
||||||
@@ -107,8 +107,8 @@ OutputLineParser::Result CMakeParser::handleLine(const QString &line, OutputForm
|
|||||||
m_lastTask = BuildSystemTask(Task::Error, QString(),
|
m_lastTask = BuildSystemTask(Task::Error, QString(),
|
||||||
absoluteFilePath(FilePath::fromUserInput(match.captured(1))));
|
absoluteFilePath(FilePath::fromUserInput(match.captured(1))));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
match, 1);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, 1);
|
||||||
m_lines = 1;
|
m_lines = 1;
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
@@ -121,8 +121,8 @@ OutputLineParser::Result CMakeParser::handleLine(const QString &line, OutputForm
|
|||||||
match.captured(3).toInt());
|
match.captured(3).toInt());
|
||||||
m_lines = 1;
|
m_lines = 1;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
match, 1);
|
linkSpecs, m_lastTask.file, m_lastTask.line, m_lastTask.column, match, 1);
|
||||||
|
|
||||||
m_errorOrWarningLine.file = m_lastTask.file;
|
m_errorOrWarningLine.file = m_lastTask.file;
|
||||||
m_errorOrWarningLine.line = m_lastTask.line;
|
m_errorOrWarningLine.line = m_lastTask.line;
|
||||||
@@ -174,7 +174,12 @@ OutputLineParser::Result CMakeParser::handleLine(const QString &line, OutputForm
|
|||||||
m_lastTask.line = match.captured(1).toInt();
|
m_lastTask.line = match.captured(1).toInt();
|
||||||
m_expectTripleLineErrorData = LINE_DESCRIPTION;
|
m_expectTripleLineErrorData = LINE_DESCRIPTION;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_lastTask.file, m_lastTask.line, 0,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
|
linkSpecs,
|
||||||
|
m_lastTask.file,
|
||||||
|
m_lastTask.line,
|
||||||
|
m_lastTask.column,
|
||||||
|
0,
|
||||||
match.capturedStart());
|
match.capturedStart());
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
|
@@ -56,7 +56,7 @@ inline Utils::OutputLineParser::LinkSpecs MesonOutputParser::addTask(
|
|||||||
fileName,
|
fileName,
|
||||||
match.captured(lineNumberCapIndex).toInt());
|
match.captured(lineNumberCapIndex).toInt());
|
||||||
addTask(task);
|
addTask(task);
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, task.column, match, 1);
|
||||||
#else
|
#else
|
||||||
Q_UNUSED(type);
|
Q_UNUSED(type);
|
||||||
Q_UNUSED(line);
|
Q_UNUSED(line);
|
||||||
|
@@ -39,7 +39,7 @@ NimParser::Result NimParser::handleLine(const QString &lne, OutputFormat)
|
|||||||
const CompileTask t(type, message, absoluteFilePath(FilePath::fromUserInput(filename)),
|
const CompileTask t(type, message, absoluteFilePath(FilePath::fromUserInput(filename)),
|
||||||
lineNumber);
|
lineNumber);
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, t.file, t.line, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, t.file, t.line, t.column, match, 1);
|
||||||
scheduleTask(t, 1);
|
scheduleTask(t, 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
}
|
}
|
||||||
|
@@ -65,7 +65,7 @@ OutputLineParser::Result ClangParser::handleLine(const QString &line, OutputForm
|
|||||||
const int lineNo = match.captured(3).toInt();
|
const int lineNo = match.captured(3).toInt();
|
||||||
const int column = 0;
|
const int column = 0;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match, 2);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, column, match, 2);
|
||||||
createOrAmendTask(Task::Unknown, lne.trimmed(), lne, false,
|
createOrAmendTask(Task::Unknown, lne.trimmed(), lne, false,
|
||||||
filePath, lineNo, column, linkSpecs);
|
filePath, lineNo, column, linkSpecs);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
@@ -84,7 +84,7 @@ OutputLineParser::Result ClangParser::handleLine(const QString &line, OutputForm
|
|||||||
|
|
||||||
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, column, match, 1);
|
||||||
createOrAmendTask(taskType(match.captured(8)), match.captured(9), lne, false,
|
createOrAmendTask(taskType(match.captured(8)), match.captured(9), lne, false,
|
||||||
filePath, lineNo, column, linkSpecs);
|
filePath, lineNo, column, linkSpecs);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
@@ -235,7 +235,7 @@ void ProjectExplorerTest::testClangOutputParser_data()
|
|||||||
68, 10,
|
68, 10,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(34, 0)
|
<< formatRange(34, 0)
|
||||||
<< formatRange(34, 28, "olpfile:///usr/include/c++/4.6/utility::68::-1")
|
<< formatRange(34, 28, "olpfile:///usr/include/c++/4.6/utility::68::10")
|
||||||
<< formatRange(62, 93)))
|
<< formatRange(62, 93)))
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ void ProjectExplorerTest::testClangOutputParser_data()
|
|||||||
567, 51,
|
567, 51,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(74, 0)
|
<< formatRange(74, 0)
|
||||||
<< formatRange(74, 64, "olpfile:///home/code/src/creator/src/plugins/coreplugin/manhattanstyle.cpp::567::-1")
|
<< formatRange(74, 64, "olpfile:///home/code/src/creator/src/plugins/coreplugin/manhattanstyle.cpp::567::51")
|
||||||
<< formatRange(138, 202)))
|
<< formatRange(138, 202)))
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
|
@@ -237,7 +237,7 @@ OutputLineParser::Result CustomParser::hasMatch(
|
|||||||
const int lineNumber = match.captured(expression.lineNumberCap()).toInt();
|
const int lineNumber = match.captured(expression.lineNumberCap()).toInt();
|
||||||
const QString message = match.captured(expression.messageCap());
|
const QString message = match.captured(expression.messageCap());
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, fileName, lineNumber, match,
|
addLinkSpecForAbsoluteFilePath(linkSpecs, fileName, lineNumber, -1, match,
|
||||||
expression.fileNameCap());
|
expression.fileNameCap());
|
||||||
scheduleTask(CompileTask(taskType, message, fileName, lineNumber), 1);
|
scheduleTask(CompileTask(taskType, message, fileName, lineNumber), 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
|
@@ -221,7 +221,7 @@ OutputLineParser::Result GccParser::handleLine(const QString &line, OutputFormat
|
|||||||
const int lineNo = match.captured(2).toInt();
|
const int lineNo = match.captured(2).toInt();
|
||||||
const int column = match.captured(3).toInt();
|
const int column = match.captured(3).toInt();
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, column, match, "file");
|
||||||
gccCreateOrAmendTask(
|
gccCreateOrAmendTask(
|
||||||
Task::Unknown, lne.trimmed(), lne, false, filePath, lineNo, column, linkSpecs);
|
Task::Unknown, lne.trimmed(), lne, false, filePath, lineNo, column, linkSpecs);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
@@ -234,7 +234,7 @@ OutputLineParser::Result GccParser::handleLine(const QString &line, OutputFormat
|
|||||||
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(3)));
|
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(3)));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
if (!filePath.isEmpty())
|
if (!filePath.isEmpty())
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, -1, match, 3);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, -1, -1, match, 3);
|
||||||
gccCreateOrAmendTask(type, match.captured(2), lne, false, filePath, -1, 0, linkSpecs);
|
gccCreateOrAmendTask(type, match.captured(2), lne, false, filePath, -1, 0, linkSpecs);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
}
|
}
|
||||||
@@ -243,7 +243,12 @@ OutputLineParser::Result GccParser::handleLine(const QString &line, OutputFormat
|
|||||||
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(data->rawFilePath));
|
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(data->rawFilePath));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(
|
addLinkSpecForAbsoluteFilePath(
|
||||||
linkSpecs, filePath, data->line, data->fileOffset, data->rawFilePath.size());
|
linkSpecs,
|
||||||
|
filePath,
|
||||||
|
data->line,
|
||||||
|
data->column,
|
||||||
|
data->fileOffset,
|
||||||
|
data->rawFilePath.size());
|
||||||
gccCreateOrAmendTask(
|
gccCreateOrAmendTask(
|
||||||
data->type, data->description, lne, false, filePath, data->line, data->column, linkSpecs);
|
data->type, data->description, lne, false, filePath, data->line, data->column, linkSpecs);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
@@ -343,9 +348,9 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
9, 0,
|
9, 0,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(46, 0)
|
<< formatRange(46, 0)
|
||||||
<< formatRange(46, 29, "olpfile:///temp/test/untitled8/main.cpp::0::-1")
|
<< formatRange(46, 29, "olpfile:///temp/test/untitled8/main.cpp::0::0")
|
||||||
<< formatRange(75, 39)
|
<< formatRange(75, 39)
|
||||||
<< formatRange(114, 29, "olpfile:///temp/test/untitled8/main.cpp::9::-1")
|
<< formatRange(114, 29, "olpfile:///temp/test/untitled8/main.cpp::9::0")
|
||||||
<< formatRange(143, 56))
|
<< formatRange(143, 56))
|
||||||
<< CompileTask(Task::Error,
|
<< CompileTask(Task::Error,
|
||||||
"(Each undeclared identifier is reported only once for each function it appears in.)",
|
"(Each undeclared identifier is reported only once for each function it appears in.)",
|
||||||
@@ -514,9 +519,9 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
264, 0,
|
264, 0,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(45, 0)
|
<< formatRange(45, 0)
|
||||||
<< formatRange(45, 68, "olpfile:///home/code/src/creator/src/plugins/projectexplorer/gnumakeparser.cpp::0::-1")
|
<< formatRange(45, 68, "olpfile:///home/code/src/creator/src/plugins/projectexplorer/gnumakeparser.cpp::0::0")
|
||||||
<< formatRange(113, 106)
|
<< formatRange(113, 106)
|
||||||
<< formatRange(219, 68, "olpfile:///home/code/src/creator/src/plugins/projectexplorer/gnumakeparser.cpp::264::-1")
|
<< formatRange(219, 68, "olpfile:///home/code/src/creator/src/plugins/projectexplorer/gnumakeparser.cpp::264::0")
|
||||||
<< formatRange(287, 57))
|
<< formatRange(287, 57))
|
||||||
<< CompileTask(Task::Error,
|
<< CompileTask(Task::Error,
|
||||||
"expected ';' before ':' token",
|
"expected ';' before ':' token",
|
||||||
@@ -583,9 +588,9 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
194, 0,
|
194, 0,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(50, 0)
|
<< formatRange(50, 0)
|
||||||
<< formatRange(50, 67, "olpfile:///Qt/4.6.2-Symbian/s60sdk/epoc32/include/stdapis/stlport/stl/_tree.c::0::-1")
|
<< formatRange(50, 67, "olpfile:///Qt/4.6.2-Symbian/s60sdk/epoc32/include/stdapis/stlport/stl/_tree.c::0::0")
|
||||||
<< formatRange(117, 216)
|
<< formatRange(117, 216)
|
||||||
<< formatRange(333, 67, "olpfile:///Qt/4.6.2-Symbian/s60sdk/epoc32/include/stdapis/stlport/stl/_tree.c::194::-1")
|
<< formatRange(333, 67, "olpfile:///Qt/4.6.2-Symbian/s60sdk/epoc32/include/stdapis/stlport/stl/_tree.c::194::0")
|
||||||
<< formatRange(400, 64)))
|
<< formatRange(400, 64)))
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
@@ -822,9 +827,9 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
1134, 26,
|
1134, 26,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(26, 22)
|
<< formatRange(26, 22)
|
||||||
<< formatRange(48, 39, "olpfile:///Symbian/SDK/EPOC32/INCLUDE/GCCE/GCCE.h::15::-1")
|
<< formatRange(48, 39, "olpfile:///Symbian/SDK/EPOC32/INCLUDE/GCCE/GCCE.h::15::0")
|
||||||
<< formatRange(87, 46)
|
<< formatRange(87, 46)
|
||||||
<< formatRange(133, 50, "olpfile:///Symbian/SDK/epoc32/include/variant/Symbian_OS.hrh::1134::-1")
|
<< formatRange(133, 50, "olpfile:///Symbian/SDK/epoc32/include/variant/Symbian_OS.hrh::1134::26")
|
||||||
<< formatRange(183, 44))}
|
<< formatRange(183, 44))}
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
@@ -929,7 +934,7 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
14, 25,
|
14, 25,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(41, 22)
|
<< formatRange(41, 22)
|
||||||
<< formatRange(63, 67, "olpfile:///home/code/src/creator/src/libs/extensionsystem/pluginerrorview.cpp::31::-1")
|
<< formatRange(63, 67, "olpfile:///home/code/src/creator/src/libs/extensionsystem/pluginerrorview.cpp::31::0")
|
||||||
<< formatRange(130, 146))}
|
<< formatRange(130, 146))}
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
@@ -953,11 +958,11 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
597, 5,
|
597, 5,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(43, 22)
|
<< formatRange(43, 22)
|
||||||
<< formatRange(65, 31, "olpfile:///usr/include/qt4/QtCore/QString::1::-1")
|
<< formatRange(65, 31, "olpfile:///usr/include/qt4/QtCore/QString::1::0")
|
||||||
<< formatRange(96, 40)
|
<< formatRange(96, 40)
|
||||||
<< formatRange(136, 33, "olpfile:///usr/include/qt4/QtCore/qstring.h::0::-1")
|
<< formatRange(136, 33, "olpfile:///usr/include/qt4/QtCore/qstring.h::0::0")
|
||||||
<< formatRange(169, 28)
|
<< formatRange(169, 28)
|
||||||
<< formatRange(197, 33, "olpfile:///usr/include/qt4/QtCore/qstring.h::597::-1")
|
<< formatRange(197, 33, "olpfile:///usr/include/qt4/QtCore/qstring.h::597::5")
|
||||||
<< formatRange(230, 99))}
|
<< formatRange(230, 99))}
|
||||||
<< QString();
|
<< QString();
|
||||||
|
|
||||||
@@ -1233,17 +1238,17 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
273, 25,
|
273, 25,
|
||||||
QVector<QTextLayout::FormatRange>()
|
QVector<QTextLayout::FormatRange>()
|
||||||
<< formatRange(140, 22)
|
<< formatRange(140, 22)
|
||||||
<< formatRange(162, 32, "olpfile:///usr/include/qt/QtCore/qlocale.h::43::-1")
|
<< formatRange(162, 32, "olpfile:///usr/include/qt/QtCore/qlocale.h::43::0")
|
||||||
<< formatRange(194, 27)
|
<< formatRange(194, 27)
|
||||||
<< formatRange(221, 36, "olpfile:///usr/include/qt/QtCore/qtextstream.h::46::-1")
|
<< formatRange(221, 36, "olpfile:///usr/include/qt/QtCore/qtextstream.h::46::0")
|
||||||
<< formatRange(257, 27)
|
<< formatRange(257, 27)
|
||||||
<< formatRange(284, 38, "olpfile:///qtc/src/shared/proparser/proitems.cpp::31::-1")
|
<< formatRange(284, 38, "olpfile:///qtc/src/shared/proparser/proitems.cpp::31::0")
|
||||||
<< formatRange(322, 5)
|
<< formatRange(322, 5)
|
||||||
<< formatRange(327, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::0::-1")
|
<< formatRange(327, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::0::0")
|
||||||
<< formatRange(360, 51)
|
<< formatRange(360, 51)
|
||||||
<< formatRange(411, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::273::-1")
|
<< formatRange(411, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::273::25")
|
||||||
<< formatRange(444, 229)
|
<< formatRange(444, 229)
|
||||||
<< formatRange(673, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::399::-1")
|
<< formatRange(673, 33, "olpfile:///usr/include/qt/QtCore/qvariant.h::399::16")
|
||||||
<< formatRange(706, 221)),
|
<< formatRange(706, 221)),
|
||||||
compileTask(Task::Error,
|
compileTask(Task::Error,
|
||||||
"no match for ‘operator+’ (operand types are ‘boxed_value<double>’ and ‘boxed_value<double>’)\n"
|
"no match for ‘operator+’ (operand types are ‘boxed_value<double>’ and ‘boxed_value<double>’)\n"
|
||||||
@@ -1477,13 +1482,13 @@ void ProjectExplorerTest::testGccOutputParsers_data()
|
|||||||
FilePath::fromUserInput("/data/dev/creator/src/libs/utils/aspects.cpp"), 3454, 13,
|
FilePath::fromUserInput("/data/dev/creator/src/libs/utils/aspects.cpp"), 3454, 13,
|
||||||
QVector<QTextLayout::FormatRange>{
|
QVector<QTextLayout::FormatRange>{
|
||||||
formatRange(82, 22),
|
formatRange(82, 22),
|
||||||
formatRange(104, 44, "olpfile:///data/dev/creator/src/libs/utils/aspects.cpp::12::-1"),
|
formatRange(104, 44, "olpfile:///data/dev/creator/src/libs/utils/aspects.cpp::12::0"),
|
||||||
formatRange(148, 5),
|
formatRange(148, 5),
|
||||||
formatRange(153, 48, "olpfile:///data/dev/creator/src/libs/utils/layoutbuilder.h::0::-1"),
|
formatRange(153, 48, "olpfile:///data/dev/creator/src/libs/utils/layoutbuilder.h::0::0"),
|
||||||
formatRange(201, 177),
|
formatRange(201, 177),
|
||||||
formatRange(378, 44, "olpfile:///data/dev/creator/src/libs/utils/aspects.cpp::3454::-1"),
|
formatRange(378, 44, "olpfile:///data/dev/creator/src/libs/utils/aspects.cpp::3454::13"),
|
||||||
formatRange(422, 31),
|
formatRange(422, 31),
|
||||||
formatRange(453, 48, "olpfile:///data/dev/creator/src/libs/utils/layoutbuilder.h::79::-1"),
|
formatRange(453, 48, "olpfile:///data/dev/creator/src/libs/utils/layoutbuilder.h::79::51"),
|
||||||
formatRange(501, 228)})})
|
formatRange(501, 228)})})
|
||||||
<< QString();
|
<< QString();
|
||||||
}
|
}
|
||||||
|
@@ -103,7 +103,7 @@ OutputLineParser::Result GnuMakeParser::handleLine(const QString &line, OutputFo
|
|||||||
if (!m_suppressIssues) {
|
if (!m_suppressIssues) {
|
||||||
const FilePath file = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
const FilePath file = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
||||||
const int lineNo = match.captured(4).toInt();
|
const int lineNo = match.captured(4).toInt();
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, -1, match, 1);
|
||||||
emitTask(BuildSystemTask(res.type, res.description, file, lineNo));
|
emitTask(BuildSystemTask(res.type, res.description, file, lineNo));
|
||||||
}
|
}
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
|
@@ -62,7 +62,7 @@ Utils::OutputLineParser::Result LdParser::handleLine(const QString &line, Utils:
|
|||||||
if (match.hasMatch()) {
|
if (match.hasMatch()) {
|
||||||
handle = true;
|
handle = true;
|
||||||
filePath = absoluteFilePath(Utils::FilePath::fromString(match.captured("file")));
|
filePath = absoluteFilePath(Utils::FilePath::fromString(match.captured("file")));
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, 0, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, -1, -1, match, "file");
|
||||||
currentTask().setFile(filePath);
|
currentTask().setFile(filePath);
|
||||||
} else {
|
} else {
|
||||||
handle = !lne.isEmpty() && lne.at(0).isSpace();
|
handle = !lne.isEmpty() && lne.at(0).isSpace();
|
||||||
@@ -135,7 +135,7 @@ Utils::OutputLineParser::Result LdParser::handleLine(const QString &line, Utils:
|
|||||||
}
|
}
|
||||||
if (hasKeyword || filePath.fileName().endsWith(".o")) {
|
if (hasKeyword || filePath.fileName().endsWith(".o")) {
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineno, match, capIndex);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineno, -1, match, capIndex);
|
||||||
createOrAmendTask(type, description, line, false, filePath, lineno, 0, linkSpecs);
|
createOrAmendTask(type, description, line, false, filePath, lineno, 0, linkSpecs);
|
||||||
return {getStatus(), linkSpecs};
|
return {getStatus(), linkSpecs};
|
||||||
}
|
}
|
||||||
|
@@ -59,7 +59,7 @@ OutputLineParser::Result LinuxIccParser::handleLine(const QString &line, OutputF
|
|||||||
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(1)));
|
||||||
const int lineNo = match.captured(2).toInt();
|
const int lineNo = match.captured(2).toInt();
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, -1, match, 1);
|
||||||
createOrAmendTask(type, match.captured(6).trimmed(), line, false, filePath, lineNo);
|
createOrAmendTask(type, match.captured(6).trimmed(), line, false, filePath, lineNo);
|
||||||
m_expectFirstLine = false;
|
m_expectFirstLine = false;
|
||||||
return Status::InProgress;
|
return Status::InProgress;
|
||||||
|
@@ -46,7 +46,7 @@ Utils::OutputLineParser::Result LldParser::handleLine(const QString &line, Utils
|
|||||||
const auto file = absoluteFilePath(Utils::FilePath::fromUserInput(
|
const auto file = absoluteFilePath(Utils::FilePath::fromUserInput(
|
||||||
trimmedLine.mid(filePathOffset, filePathLen).trimmed()));
|
trimmedLine.mid(filePathOffset, filePathLen).trimmed()));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, filePathOffset, filePathLen);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, -1, filePathOffset, filePathLen);
|
||||||
scheduleTask(CompileTask(Task::Unknown, trimmedLine.mid(4).trimmed(),
|
scheduleTask(CompileTask(Task::Unknown, trimmedLine.mid(4).trimmed(),
|
||||||
file, lineNo), 1);
|
file, lineNo), 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
|
@@ -114,7 +114,7 @@ OutputLineParser::Result MsvcParser::handleLine(const QString &line, OutputForma
|
|||||||
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(2)));
|
const FilePath filePath = absoluteFilePath(FilePath::fromUserInput(match.captured(2)));
|
||||||
const int lineNo = match.captured(3).toInt();
|
const int lineNo = match.captured(3).toInt();
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, match, 2);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, lineNo, -1, match, 2);
|
||||||
createOrAmendTask(Task::Unknown, description, line, false, filePath, lineNo, 0, linkSpecs);
|
createOrAmendTask(Task::Unknown, description, line, false, filePath, lineNo, 0, linkSpecs);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ MsvcParser::Result MsvcParser::processCompileLine(const QString &line)
|
|||||||
QPair<FilePath, int> position = parseFileName(match.captured(1));
|
QPair<FilePath, int> position = parseFileName(match.captured(1));
|
||||||
const FilePath filePath = absoluteFilePath(position.first);
|
const FilePath filePath = absoluteFilePath(position.first);
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, position.second, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, position.second, -1, match, 1);
|
||||||
const QString &description = match.captured(3) + match.captured(4).trimmed();
|
const QString &description = match.captured(3) + match.captured(4).trimmed();
|
||||||
createOrAmendTask(
|
createOrAmendTask(
|
||||||
taskType(match.captured(2)),
|
taskType(match.captured(2)),
|
||||||
@@ -228,7 +228,7 @@ OutputLineParser::Result ClangClParser::handleLine(const QString &line, OutputFo
|
|||||||
const FilePath file = absoluteFilePath(position.first);
|
const FilePath file = absoluteFilePath(position.first);
|
||||||
const int lineNo = position.second;
|
const int lineNo = position.second;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, match, 1);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineNo, -1, match, 1);
|
||||||
createOrAmendTask(
|
createOrAmendTask(
|
||||||
taskType(match.captured(2)), match.captured(3).trimmed(), line, false, file, lineNo);
|
taskType(match.captured(2)), match.captured(3).trimmed(), line, false, file, lineNo);
|
||||||
return {Status::InProgress, linkSpecs};
|
return {Status::InProgress, linkSpecs};
|
||||||
|
@@ -93,7 +93,8 @@ OutputLineParser::Result SanitizerParser::handleContinuation(const QString &line
|
|||||||
m_task.file = file;
|
m_task.file = file;
|
||||||
m_task.line = summaryMatch.captured("line").toInt();
|
m_task.line = summaryMatch.captured("line").toInt();
|
||||||
m_task.column = summaryMatch.captured("column").toInt();
|
m_task.column = summaryMatch.captured("column").toInt();
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, m_task.line, summaryMatch, "file");
|
addLinkSpecForAbsoluteFilePath(
|
||||||
|
linkSpecs, file, m_task.line, m_task.column, summaryMatch, "file");
|
||||||
addLinkSpecs(linkSpecs);
|
addLinkSpecs(linkSpecs);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -107,7 +108,7 @@ OutputLineParser::Result SanitizerParser::handleContinuation(const QString &line
|
|||||||
const FilePath file = absoluteFilePath(FilePath::fromUserInput(fileMatch.captured("file")));
|
const FilePath file = absoluteFilePath(FilePath::fromUserInput(fileMatch.captured("file")));
|
||||||
if (fileExists(file)) {
|
if (fileExists(file)) {
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, fileMatch.captured("line").toInt(),
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, fileMatch.captured("line").toInt(),
|
||||||
fileMatch, "file");
|
fileMatch.captured("column").toInt(), fileMatch, "file");
|
||||||
addLinkSpecs(linkSpecs);
|
addLinkSpecs(linkSpecs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -57,7 +57,8 @@ OutputLineParser::Result XcodebuildParser::handleLine(const QString &line, Outpu
|
|||||||
absoluteFilePath(FilePath::fromString(
|
absoluteFilePath(FilePath::fromString(
|
||||||
lne.left(filePathEndPos))));
|
lne.left(filePathEndPos))));
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, 0, filePathEndPos);
|
addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, task.column, 0,
|
||||||
|
filePathEndPos);
|
||||||
scheduleTask(task, 1);
|
scheduleTask(task, 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
}
|
}
|
||||||
|
@@ -46,7 +46,7 @@ OutputLineParser::Result QMakeParser::handleLine(const QString &line, OutputForm
|
|||||||
BuildSystemTask t(type, description, absoluteFilePath(FilePath::fromUserInput(fileName)),
|
BuildSystemTask t(type, description, absoluteFilePath(FilePath::fromUserInput(fileName)),
|
||||||
match.captured(2).toInt() /* line */);
|
match.captured(2).toInt() /* line */);
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, t.file, t.line, fileNameOffset,
|
addLinkSpecForAbsoluteFilePath(linkSpecs, t.file, t.line, t.column, fileNameOffset,
|
||||||
fileName.length());
|
fileName.length());
|
||||||
scheduleTask(t, 1);
|
scheduleTask(t, 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
|
@@ -45,7 +45,7 @@ Utils::OutputLineParser::Result QtParser::handleLine(const QString &line, Utils:
|
|||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
const Utils::FilePath file
|
const Utils::FilePath file
|
||||||
= absoluteFilePath(Utils::FilePath::fromUserInput(match.captured("file")));
|
= absoluteFilePath(Utils::FilePath::fromUserInput(match.captured("file")));
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineno, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineno, -1, match, "file");
|
||||||
CompileTask task(type, match.captured("description").trimmed(), file, lineno);
|
CompileTask task(type, match.captured("description").trimmed(), file, lineno);
|
||||||
task.column = match.captured("column").toInt();
|
task.column = match.captured("column").toInt();
|
||||||
scheduleTask(task, 1);
|
scheduleTask(task, 1);
|
||||||
@@ -62,7 +62,7 @@ Utils::OutputLineParser::Result QtParser::handleLine(const QString &line, Utils:
|
|||||||
message.prepend(": ").prepend(fileName);
|
message.prepend(": ").prepend(fileName);
|
||||||
} else if (fileName.endsWith(".ui")) {
|
} else if (fileName.endsWith(".ui")) {
|
||||||
filePath = absoluteFilePath(Utils::FilePath::fromUserInput(fileName));
|
filePath = absoluteFilePath(Utils::FilePath::fromUserInput(fileName));
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, -1, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, filePath, -1, -1, match, "file");
|
||||||
} else {
|
} else {
|
||||||
isUicMessage = false;
|
isUicMessage = false;
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ Utils::OutputLineParser::Result QtParser::handleLine(const QString &line, Utils:
|
|||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
const Utils::FilePath file
|
const Utils::FilePath file
|
||||||
= absoluteFilePath(Utils::FilePath::fromUserInput(match.captured("file")));
|
= absoluteFilePath(Utils::FilePath::fromUserInput(match.captured("file")));
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, 0, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, -1, -1, match, "file");
|
||||||
CompileTask task(type, match.captured("description"), file);
|
CompileTask task(type, match.captured("description"), file);
|
||||||
scheduleTask(task, 1);
|
scheduleTask(task, 1);
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
@@ -95,7 +95,7 @@ Utils::OutputLineParser::Result QtParser::handleLine(const QString &line, Utils:
|
|||||||
if (!ok)
|
if (!ok)
|
||||||
lineno = -1;
|
lineno = -1;
|
||||||
LinkSpecs linkSpecs;
|
LinkSpecs linkSpecs;
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineno, match, "file");
|
addLinkSpecForAbsoluteFilePath(linkSpecs, file, lineno, -1, match, "file");
|
||||||
CompileTask task(type, match.captured("description"), file, lineno,
|
CompileTask task(type, match.captured("description"), file, lineno,
|
||||||
match.captured("column").toInt());
|
match.captured("column").toInt());
|
||||||
scheduleTask(task, 1);
|
scheduleTask(task, 1);
|
||||||
|
@@ -44,8 +44,8 @@ OutputLineParser::Result QtTestParser::handleLine(const QString &line, OutputFor
|
|||||||
m_currentTask.file = absoluteFilePath(FilePath::fromString(
|
m_currentTask.file = absoluteFilePath(FilePath::fromString(
|
||||||
QDir::fromNativeSeparators(match.captured("file"))));
|
QDir::fromNativeSeparators(match.captured("file"))));
|
||||||
m_currentTask.line = match.captured("line").toInt();
|
m_currentTask.line = match.captured("line").toInt();
|
||||||
addLinkSpecForAbsoluteFilePath(linkSpecs, m_currentTask.file, m_currentTask.line, match,
|
addLinkSpecForAbsoluteFilePath(
|
||||||
"file");
|
linkSpecs, m_currentTask.file, m_currentTask.line, m_currentTask.column, match, "file");
|
||||||
emitCurrentTask();
|
emitCurrentTask();
|
||||||
return {Status::Done, linkSpecs};
|
return {Status::Done, linkSpecs};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user