aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android/javaparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/javaparser.cpp')
-rw-r--r--src/plugins/android/javaparser.cpp66
1 files changed, 29 insertions, 37 deletions
diff --git a/src/plugins/android/javaparser.cpp b/src/plugins/android/javaparser.cpp
index 359d9be819..04b1b729ad 100644
--- a/src/plugins/android/javaparser.cpp
+++ b/src/plugins/android/javaparser.cpp
@@ -36,18 +36,6 @@ JavaParser::JavaParser() :
m_javaRegExp(QLatin1String("^(.*\\[javac\\]\\s)(.*\\.java):(\\d+):(.*)$"))
{ }
-void JavaParser::stdOutput(const QString &line)
-{
- parse(line);
- IOutputParser::stdOutput(line);
-}
-
-void JavaParser::stdError(const QString &line)
-{
- parse(line);
- IOutputParser::stdError(line);
-}
-
void JavaParser::setProjectFileList(const QStringList &fileList)
{
m_fileList = fileList;
@@ -63,33 +51,37 @@ void JavaParser::setSourceDirectory(const Utils::FilePath &sourceDirectory)
m_sourceDirectory = sourceDirectory;
}
-void JavaParser::parse(const QString &line)
+Utils::OutputLineParser::Result JavaParser::handleLine(const QString &line,
+ Utils::OutputFormat type)
{
- if (m_javaRegExp.indexIn(line) > -1) {
- bool ok;
- int lineno = m_javaRegExp.cap(3).toInt(&ok);
- if (!ok)
- lineno = -1;
- Utils::FilePath file = Utils::FilePath::fromUserInput(m_javaRegExp.cap(2));
- if (file.isChildOf(m_buildDirectory)) {
- Utils::FilePath relativePath = file.relativeChildPath(m_buildDirectory);
- file = m_sourceDirectory.pathAppended(relativePath.toString());
- }
+ Q_UNUSED(type);
+ const QRegularExpressionMatch match = m_javaRegExp.match(line);
+ if (!match.hasMatch())
+ return Status::NotHandled;
- if (file.toFileInfo().isRelative()) {
- for (int i = 0; i < m_fileList.size(); i++)
- if (m_fileList[i].endsWith(file.toString())) {
- file = Utils::FilePath::fromString(m_fileList[i]);
- break;
- }
- }
-
- CompileTask task(Task::Error,
- m_javaRegExp.cap(4).trimmed(),
- file /* filename */,
- lineno);
- emit addTask(task, 1);
- return;
+ bool ok;
+ int lineno = match.captured(3).toInt(&ok);
+ if (!ok)
+ lineno = -1;
+ Utils::FilePath file = Utils::FilePath::fromUserInput(match.captured(2));
+ if (file.isChildOf(m_buildDirectory)) {
+ Utils::FilePath relativePath = file.relativeChildPath(m_buildDirectory);
+ file = m_sourceDirectory.pathAppended(relativePath.toString());
+ }
+ if (file.toFileInfo().isRelative()) {
+ for (int i = 0; i < m_fileList.size(); i++)
+ if (m_fileList[i].endsWith(file.toString())) {
+ file = Utils::FilePath::fromString(m_fileList[i]);
+ break;
+ }
}
+ CompileTask task(Task::Error,
+ match.captured(4).trimmed(),
+ absoluteFilePath(file),
+ lineno);
+ LinkSpecs linkSpecs;
+ addLinkSpecForAbsoluteFilePath(linkSpecs, task.file, task.line, match, 2);
+ scheduleTask(task, 1);
+ return {Status::Done, linkSpecs};
}