diff --git a/src/command_line.cc b/src/command_line.cc index cdfb2704..fcf3bea8 100644 --- a/src/command_line.cc +++ b/src/command_line.cc @@ -896,7 +896,7 @@ bool IndexMain_DoIndex(IndexerConfig* config, queue_do_index->PriorityEnqueue(std::move(dep_index_request)); } - project->UpdateFileState(index_request->path, old_index->import_file, old_index->dependencies, old_index->last_modification_time); + project->UpdateFileState(index_request->path, old_index->import_file, old_index->last_modification_time); Index_DoIdMap response(nullptr, std::move(old_index)); queue_do_id_map->Enqueue(std::move(response)); @@ -919,7 +919,6 @@ bool IndexMain_DoIndex(IndexerConfig* config, optional entry = project->FindCompilationEntryForFile(index_request->path); if (entry && entry->last_modification_time) { import_file = entry->import_file; - import_dependencies = entry->import_dependencies; int64_t modification_time = GetLastModificationTime(index_request->path); if (modification_time == *entry->last_modification_time) { @@ -930,18 +929,21 @@ bool IndexMain_DoIndex(IndexerConfig* config, std::vector> indexes = Parse( config, file_consumer_shared, - index_request->path, import_file, import_dependencies, + index_request->path, import_file, index_request->args); time.ResetAndPrint("Parsing/indexing " + index_request->path); for (auto& current_index : indexes) { std::cerr << "Got index for " << current_index->path << std::endl; - project->UpdateFileState(current_index->path, current_index->import_file, current_index->dependencies, current_index->last_modification_time); + project->UpdateFileState(current_index->path, current_index->import_file, current_index->last_modification_time); std::unique_ptr old_index = LoadCachedFile(config, current_index->path); time.ResetAndPrint("Loading cached index"); + if (old_index) + AddRange(¤t_index->dependencies, old_index->dependencies); + // TODO: Cache to disk on a separate thread. Maybe we do the cache after we // have imported the index (so the import pipeline has five stages instead // of the current 4). diff --git a/src/indexer.cc b/src/indexer.cc index ad07b7d3..12a721de 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -1337,7 +1337,7 @@ void indexEntityReference(CXClientData client_data, std::vector> Parse( IndexerConfig* config, FileConsumer::SharedState* file_consumer_shared, - std::string desired_index_file, std::string import_file, const std::vector& existing_dependencies, + std::string desired_index_file, std::string import_file, std::vector args, bool dump_ast) { @@ -1392,9 +1392,6 @@ std::vector> Parse( entry->last_modification_time = GetLastModificationTime(entry->path); entry->import_file = import_file; - - if (entry->path == import_file && !existing_dependencies.empty()) - AddRange(&entry->dependencies, existing_dependencies); } // TODO: Fix interesting checks. diff --git a/src/indexer.h b/src/indexer.h index 2bcda253..22404ccb 100644 --- a/src/indexer.h +++ b/src/indexer.h @@ -505,7 +505,7 @@ struct IndexedFile { // |dependencies| are the existing dependencies of |import_file| if this is a reparse. std::vector> Parse( IndexerConfig* config, FileConsumer::SharedState* file_consumer_shared, - std::string desired_index_file, std::string import_file, const std::vector& existing_dependencies, + std::string desired_index_file, std::string import_file, std::vector args, bool dump_ast = false); void IndexInit(); diff --git a/src/project.cc b/src/project.cc index afc129dd..a5652557 100644 --- a/src/project.cc +++ b/src/project.cc @@ -259,7 +259,7 @@ optional Project::FindCompilationEntryForFile(const std::string& return nullopt; } -void Project::UpdateFileState(const std::string& filename, const std::string& import_file, const std::vector& import_dependencies, uint64_t modification_time) { +void Project::UpdateFileState(const std::string& filename, const std::string& import_file, uint64_t modification_time) { { // TODO: There might be a lot of thread contention here. std::lock_guard lock(entries_modification_mutex_); @@ -267,7 +267,6 @@ void Project::UpdateFileState(const std::string& filename, const std::string& im if (it != absolute_path_to_entry_index_.end()) { auto& entry = entries[it->second]; entry.import_file = import_file; - entry.import_dependencies = import_dependencies; entry.last_modification_time = modification_time; return; } @@ -283,7 +282,6 @@ void Project::UpdateFileState(const std::string& filename, const std::string& im } entry.import_file = import_file; - entry.import_dependencies = import_dependencies; entry.last_modification_time = modification_time; // TODO: There might be a lot of thread contention here. diff --git a/src/project.h b/src/project.h index 77c5752b..3727ed76 100644 --- a/src/project.h +++ b/src/project.h @@ -16,7 +16,6 @@ struct Project { std::vector args; std::string import_file; - std::vector import_dependencies; optional last_modification_time; }; @@ -36,6 +35,6 @@ struct Project { optional FindCompilationEntryForFile(const std::string& filename); // Update the modification time for the given filename. This is thread-safe. - void UpdateFileState(const std::string& filename, const std::string& import_file, const std::vector& import_dependencies, uint64_t modification_time); + void UpdateFileState(const std::string& filename, const std::string& import_file, uint64_t modification_time); }; diff --git a/src/test.cc b/src/test.cc index 5be523cd..5abfe7ce 100644 --- a/src/test.cc +++ b/src/test.cc @@ -139,7 +139,7 @@ void RunTests() { std::cout << "[START] " << path << std::endl; std::vector> dbs = Parse( &config, &file_consumer_shared, - path, path, {}, + path, path, { "-xc++", "-std=c++11",