Simplify optional.

This commit is contained in:
Fangrui Song 2018-04-02 00:22:12 -07:00
parent 38cc501a8a
commit 062b1ad0fd
6 changed files with 19 additions and 20 deletions

View File

@ -2153,7 +2153,7 @@ void OnIndexReference(CXClientData client_data, const CXIdxEntityRefInfo* ref) {
} }
} }
std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse( std::vector<std::unique_ptr<IndexFile>> Parse(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
std::string file, std::string file,
@ -2163,7 +2163,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse(
ClangIndex* index, ClangIndex* index,
bool dump_ast) { bool dump_ast) {
if (!config->index.enabled) if (!config->index.enabled)
return std::nullopt; return {};
file = NormalizePath(file); file = NormalizePath(file);
@ -2183,7 +2183,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse(
CXTranslationUnit_KeepGoing | CXTranslationUnit_KeepGoing |
CXTranslationUnit_DetailedPreprocessingRecord); CXTranslationUnit_DetailedPreprocessingRecord);
if (!tu) if (!tu)
return std::nullopt; return {};
perf->index_parse = timer.ElapsedMicrosecondsAndReset(); perf->index_parse = timer.ElapsedMicrosecondsAndReset();
@ -2194,7 +2194,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse(
args, unsaved_files); args, unsaved_files);
} }
std::optional<std::vector<std::unique_ptr<IndexFile>>> ParseWithTu( std::vector<std::unique_ptr<IndexFile>> ParseWithTu(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
PerformanceImportFile* perf, PerformanceImportFile* perf,
@ -2239,7 +2239,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> ParseWithTu(
if (index_result != CXError_Success) { if (index_result != CXError_Success) {
LOG_S(ERROR) << "Indexing " << file LOG_S(ERROR) << "Indexing " << file
<< " failed with errno=" << index_result; << " failed with errno=" << index_result;
return std::nullopt; return {};
} }
clang_IndexAction_dispose(index_action); clang_IndexAction_dispose(index_action);
@ -2301,7 +2301,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> ParseWithTu(
entry->dependencies.end()); entry->dependencies.end());
} }
return std::move(result); return result;
} }
void ConcatTypeAndName(std::string& type, const std::string& name) { void ConcatTypeAndName(std::string& type, const std::string& name) {

View File

@ -6,7 +6,7 @@ namespace {
struct ClangIndexer : IIndexer { struct ClangIndexer : IIndexer {
~ClangIndexer() override = default; ~ClangIndexer() override = default;
std::optional<std::vector<std::unique_ptr<IndexFile>>> Index( std::vector<std::unique_ptr<IndexFile>> Index(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
std::string file, std::string file,
@ -50,7 +50,7 @@ struct TestIndexer : IIndexer {
~TestIndexer() override = default; ~TestIndexer() override = default;
std::optional<std::vector<std::unique_ptr<IndexFile>>> Index( std::vector<std::unique_ptr<IndexFile>> Index(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
std::string file, std::string file,
@ -61,14 +61,14 @@ struct TestIndexer : IIndexer {
if (it == indexes.end()) { if (it == indexes.end()) {
// Don't return any indexes for unexpected data. // Don't return any indexes for unexpected data.
assert(false && "no indexes"); assert(false && "no indexes");
return std::nullopt; return {};
} }
// FIXME: allow user to control how many times we return the index for a // FIXME: allow user to control how many times we return the index for a
// specific file (atm it is always 1) // specific file (atm it is always 1)
auto result = std::move(it->second); auto result = std::move(it->second);
indexes.erase(it); indexes.erase(it);
return std::move(result); return result;
} }
std::unordered_map<std::string, std::vector<std::unique_ptr<IndexFile>>> std::unordered_map<std::string, std::vector<std::unique_ptr<IndexFile>>>

View File

@ -34,7 +34,7 @@ struct IIndexer {
std::initializer_list<TestEntry> entries); std::initializer_list<TestEntry> entries);
virtual ~IIndexer() = default; virtual ~IIndexer() = default;
virtual std::optional<std::vector<std::unique_ptr<IndexFile>>> Index( virtual std::vector<std::unique_ptr<IndexFile>> Index(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
std::string file, std::string file,

View File

@ -393,7 +393,7 @@ void ParseFile(Config* config,
auto indexes = indexer->Index(config, file_consumer_shared, path_to_index, auto indexes = indexer->Index(config, file_consumer_shared, path_to_index,
entry.args, file_contents, &perf); entry.args, file_contents, &perf);
if (!indexes) { if (indexes.empty()) {
if (config->index.enabled && if (config->index.enabled &&
!std::holds_alternative<std::monostate>(request.id)) { !std::holds_alternative<std::monostate>(request.id)) {
Out_Error out; Out_Error out;
@ -405,7 +405,7 @@ void ParseFile(Config* config,
return; return;
} }
for (std::unique_ptr<IndexFile>& new_index : *indexes) { for (std::unique_ptr<IndexFile>& new_index : indexes) {
Timer time; Timer time;
// Only emit diagnostics for non-interactive sessions, which makes it easier // Only emit diagnostics for non-interactive sessions, which makes it easier
@ -556,11 +556,11 @@ void IndexWithTuFromCodeCompletion(
ClangIndex index; ClangIndex index;
auto indexes = ParseWithTu(config, file_consumer_shared, &perf, tu, &index, auto indexes = ParseWithTu(config, file_consumer_shared, &perf, tu, &index,
path, args, file_contents); path, args, file_contents);
if (!indexes) if (indexes.empty())
return; return;
std::vector<Index_DoIdMap> result; std::vector<Index_DoIdMap> result;
for (std::unique_ptr<IndexFile>& new_index : *indexes) { for (std::unique_ptr<IndexFile>& new_index : indexes) {
Timer time; Timer time;
std::shared_ptr<ICacheManager> cache_manager; std::shared_ptr<ICacheManager> cache_manager;

View File

@ -517,7 +517,7 @@ struct NamespaceHelper {
// |desired_index_file| is the (h or cc) file which has actually changed. // |desired_index_file| is the (h or cc) file which has actually changed.
// |dependencies| are the existing dependencies of |import_file| if this is a // |dependencies| are the existing dependencies of |import_file| if this is a
// reparse. // reparse.
std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse( std::vector<std::unique_ptr<IndexFile>> Parse(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
std::string file, std::string file,
@ -526,7 +526,7 @@ std::optional<std::vector<std::unique_ptr<IndexFile>>> Parse(
PerformanceImportFile* perf, PerformanceImportFile* perf,
ClangIndex* index, ClangIndex* index,
bool dump_ast = false); bool dump_ast = false);
std::optional<std::vector<std::unique_ptr<IndexFile>>> ParseWithTu( std::vector<std::unique_ptr<IndexFile>> ParseWithTu(
Config* config, Config* config,
FileConsumerSharedState* file_consumer_shared, FileConsumerSharedState* file_consumer_shared,
PerformanceImportFile* perf, PerformanceImportFile* perf,

View File

@ -267,7 +267,6 @@ bool RunIndexTests(const std::string& filter_path, bool enable_update) {
PerformanceImportFile perf; PerformanceImportFile perf;
auto dbs = Parse(&config, &file_consumer_shared, path, flags, {}, &perf, auto dbs = Parse(&config, &file_consumer_shared, path, flags, {}, &perf,
&index, false /*dump_ast*/); &index, false /*dump_ast*/);
assert(dbs);
for (const auto& entry : all_expected_output) { for (const auto& entry : all_expected_output) {
const std::string& expected_path = entry.first; const std::string& expected_path = entry.first;
@ -298,7 +297,7 @@ bool RunIndexTests(const std::string& filter_path, bool enable_update) {
}; };
// Get output from index operation. // Get output from index operation.
IndexFile* db = FindDbForPathEnding(expected_path, *dbs); IndexFile* db = FindDbForPathEnding(expected_path, dbs);
assert(db); assert(db);
if (!db->diagnostics_.empty()) { if (!db->diagnostics_.empty()) {
std::cout << "For " << path << std::endl; std::cout << "For " << path << std::endl;