diff options
Diffstat (limited to 'src/plugins/android/javaparser.cpp')
-rw-r--r-- | src/plugins/android/javaparser.cpp | 66 |
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}; } |