Clang: Handle warning inside of the event loop

Change-Id: Ic0120beefcba209c572ce0a03b21d30e764c2ad3
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Marco Bubke
2018-03-29 18:38:43 +02:00
parent 639df58287
commit 8e9e1af7b8
2 changed files with 40 additions and 5 deletions

View File

@@ -57,6 +57,23 @@ using ClangBackEnd::PchManagerServer;
using ClangBackEnd::ProjectParts;
using ClangBackEnd::FilePathCache;
class PchManagerApplication : public QCoreApplication
{
public:
using QCoreApplication::QCoreApplication;
bool notify(QObject *object, QEvent *event) override
{
try {
return QCoreApplication::notify(object, event);
} catch (Sqlite::Exception &exception) {
exception.printWarning();
}
return false;
}
};
class ApplicationEnvironment : public ClangBackEnd::Environment
{
public:
@@ -106,13 +123,13 @@ int main(int argc, char *argv[])
QCoreApplication::setApplicationName(QStringLiteral("ClangPchManagerBackend"));
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
QCoreApplication application(argc, argv);
PchManagerApplication application(argc, argv);
const QStringList arguments = processArguments(application);
const QString connectionName = arguments[0];
const QString databasePath = arguments[1];
Sqlite::Database database{Utils::PathString{databasePath}, 1000ms};
Sqlite::Database database{Utils::PathString{databasePath}, 100000ms};
ClangBackEnd::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
ClangBackEnd::FilePathCaching filePathCache{database};
ClangPathWatcher<QFileSystemWatcher, QTimer> includeWatcher(filePathCache);

View File

@@ -35,6 +35,8 @@
#include <refactoringclientproxy.h>
#include <symbolindexing.h>
#include <sqliteexception.h>
#include <chrono>
using namespace std::chrono_literals;
@@ -62,6 +64,23 @@ QStringList processArguments(QCoreApplication &application)
return parser.positionalArguments();
}
class RefactoringApplication : public QCoreApplication
{
public:
using QCoreApplication::QCoreApplication;
bool notify(QObject *object, QEvent *event) override
{
try {
return QCoreApplication::notify(object, event);
} catch (Sqlite::Exception &exception) {
exception.printWarning();
}
return false;
}
};
int main(int argc, char *argv[])
{
try {
@@ -72,13 +91,13 @@ int main(int argc, char *argv[])
QCoreApplication::setApplicationName(QStringLiteral("ClangRefactoringBackend"));
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
QCoreApplication application(argc, argv);
RefactoringApplication application(argc, argv);
const QStringList arguments = processArguments(application);
const QString connectionName = arguments[0];
const QString databasePath = arguments[1];
Sqlite::Database database{Utils::PathString{databasePath}, 1000ms};
Sqlite::Database database{Utils::PathString{databasePath}, 100000ms};
RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
FilePathCaching filePathCache{database};
SymbolIndexing symbolIndexing{database, filePathCache};
@@ -87,7 +106,6 @@ int main(int argc, char *argv[])
connectionServer.setServer(&clangCodeModelServer);
connectionServer.start(connectionName);
return application.exec();
} catch (const Sqlite::Exception &exception) {
exception.printWarning();