forked from qt-creator/qt-creator
Clang: Handle warning inside of the event loop
Change-Id: Ic0120beefcba209c572ce0a03b21d30e764c2ad3 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -57,6 +57,23 @@ using ClangBackEnd::PchManagerServer;
|
|||||||
using ClangBackEnd::ProjectParts;
|
using ClangBackEnd::ProjectParts;
|
||||||
using ClangBackEnd::FilePathCache;
|
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
|
class ApplicationEnvironment : public ClangBackEnd::Environment
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -106,13 +123,13 @@ int main(int argc, char *argv[])
|
|||||||
QCoreApplication::setApplicationName(QStringLiteral("ClangPchManagerBackend"));
|
QCoreApplication::setApplicationName(QStringLiteral("ClangPchManagerBackend"));
|
||||||
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
|
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
|
||||||
|
|
||||||
QCoreApplication application(argc, argv);
|
PchManagerApplication application(argc, argv);
|
||||||
|
|
||||||
const QStringList arguments = processArguments(application);
|
const QStringList arguments = processArguments(application);
|
||||||
const QString connectionName = arguments[0];
|
const QString connectionName = arguments[0];
|
||||||
const QString databasePath = arguments[1];
|
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::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
|
||||||
ClangBackEnd::FilePathCaching filePathCache{database};
|
ClangBackEnd::FilePathCaching filePathCache{database};
|
||||||
ClangPathWatcher<QFileSystemWatcher, QTimer> includeWatcher(filePathCache);
|
ClangPathWatcher<QFileSystemWatcher, QTimer> includeWatcher(filePathCache);
|
||||||
|
@@ -35,6 +35,8 @@
|
|||||||
#include <refactoringclientproxy.h>
|
#include <refactoringclientproxy.h>
|
||||||
#include <symbolindexing.h>
|
#include <symbolindexing.h>
|
||||||
|
|
||||||
|
#include <sqliteexception.h>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
@@ -62,6 +64,23 @@ QStringList processArguments(QCoreApplication &application)
|
|||||||
return parser.positionalArguments();
|
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[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
@@ -72,13 +91,13 @@ int main(int argc, char *argv[])
|
|||||||
QCoreApplication::setApplicationName(QStringLiteral("ClangRefactoringBackend"));
|
QCoreApplication::setApplicationName(QStringLiteral("ClangRefactoringBackend"));
|
||||||
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
|
QCoreApplication::setApplicationVersion(QStringLiteral("0.1.0"));
|
||||||
|
|
||||||
QCoreApplication application(argc, argv);
|
RefactoringApplication application(argc, argv);
|
||||||
|
|
||||||
const QStringList arguments = processArguments(application);
|
const QStringList arguments = processArguments(application);
|
||||||
const QString connectionName = arguments[0];
|
const QString connectionName = arguments[0];
|
||||||
const QString databasePath = arguments[1];
|
const QString databasePath = arguments[1];
|
||||||
|
|
||||||
Sqlite::Database database{Utils::PathString{databasePath}, 1000ms};
|
Sqlite::Database database{Utils::PathString{databasePath}, 100000ms};
|
||||||
RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
|
RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
|
||||||
FilePathCaching filePathCache{database};
|
FilePathCaching filePathCache{database};
|
||||||
SymbolIndexing symbolIndexing{database, filePathCache};
|
SymbolIndexing symbolIndexing{database, filePathCache};
|
||||||
@@ -87,7 +106,6 @@ int main(int argc, char *argv[])
|
|||||||
connectionServer.setServer(&clangCodeModelServer);
|
connectionServer.setServer(&clangCodeModelServer);
|
||||||
connectionServer.start(connectionName);
|
connectionServer.start(connectionName);
|
||||||
|
|
||||||
|
|
||||||
return application.exec();
|
return application.exec();
|
||||||
} catch (const Sqlite::Exception &exception) {
|
} catch (const Sqlite::Exception &exception) {
|
||||||
exception.printWarning();
|
exception.printWarning();
|
||||||
|
Reference in New Issue
Block a user