Author: gribozavr Date: Thu Feb 28 04:31:49 2019 New Revision: 355086 URL: http://llvm.org/viewvc/llvm-project?rev=355086&view=rev Log: Moved SymbolOrigin into its own header and implementation file
Reviewers: ioeric Subscribers: mgorny, jkorous, arphaman, kadircet, jdoerfert, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D58773 Added: clang-tools-extra/trunk/clangd/index/SymbolOrigin.cpp clang-tools-extra/trunk/clangd/index/SymbolOrigin.h Modified: clang-tools-extra/trunk/clangd/CMakeLists.txt clang-tools-extra/trunk/clangd/CodeComplete.h clang-tools-extra/trunk/clangd/index/FileIndex.cpp clang-tools-extra/trunk/clangd/index/Index.cpp clang-tools-extra/trunk/clangd/index/Index.h clang-tools-extra/trunk/clangd/index/IndexAction.cpp clang-tools-extra/trunk/clangd/index/Merge.cpp clang-tools-extra/trunk/clangd/index/Serialization.cpp clang-tools-extra/trunk/clangd/index/SymbolCollector.h clang-tools-extra/trunk/clangd/index/YAMLSerialization.cpp Modified: clang-tools-extra/trunk/clangd/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CMakeLists.txt?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clangd/CMakeLists.txt Thu Feb 28 04:31:49 2019 @@ -62,10 +62,11 @@ add_clang_library(clangDaemon index/IndexAction.cpp index/MemIndex.cpp index/Merge.cpp - index/SymbolID.cpp - index/SymbolLocation.cpp index/Serialization.cpp index/SymbolCollector.cpp + index/SymbolID.cpp + index/SymbolLocation.cpp + index/SymbolOrigin.cpp index/YAMLSerialization.cpp index/dex/Dex.cpp Modified: clang-tools-extra/trunk/clangd/CodeComplete.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.h?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/CodeComplete.h (original) +++ clang-tools-extra/trunk/clangd/CodeComplete.h Thu Feb 28 04:31:49 2019 @@ -21,6 +21,7 @@ #include "Path.h" #include "Protocol.h" #include "index/Index.h" +#include "index/SymbolOrigin.h" #include "clang/Frontend/PrecompiledPreamble.h" #include "clang/Sema/CodeCompleteConsumer.h" #include "clang/Sema/CodeCompleteOptions.h" Modified: clang-tools-extra/trunk/clangd/index/FileIndex.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/FileIndex.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/FileIndex.cpp (original) +++ clang-tools-extra/trunk/clangd/index/FileIndex.cpp Thu Feb 28 04:31:49 2019 @@ -14,6 +14,7 @@ #include "index/Index.h" #include "index/MemIndex.h" #include "index/Merge.h" +#include "index/SymbolOrigin.h" #include "index/dex/Dex.h" #include "clang/Index/IndexingAction.h" #include "clang/Lex/MacroInfo.h" Modified: clang-tools-extra/trunk/clangd/index/Index.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Index.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/Index.cpp (original) +++ clang-tools-extra/trunk/clangd/index/Index.cpp Thu Feb 28 04:31:49 2019 @@ -16,16 +16,6 @@ namespace clang { namespace clangd { -llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, SymbolOrigin O) { - if (O == SymbolOrigin::Unknown) - return OS << "unknown"; - constexpr static char Sigils[] = "ADSM4567"; - for (unsigned I = 0; I < sizeof(Sigils); ++I) - if (static_cast<uint8_t>(O) & 1u << I) - OS << Sigils[I]; - return OS; -} - llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, Symbol::SymbolFlag F) { if (F == Symbol::None) return OS << "None"; Modified: clang-tools-extra/trunk/clangd/index/Index.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Index.h?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/Index.h (original) +++ clang-tools-extra/trunk/clangd/index/Index.h Thu Feb 28 04:31:49 2019 @@ -12,6 +12,7 @@ #include "ExpectedTypes.h" #include "SymbolID.h" #include "SymbolLocation.h" +#include "SymbolOrigin.h" #include "clang/Index/IndexSymbol.h" #include "clang/Lex/Lexer.h" #include "llvm/ADT/DenseMap.h" @@ -31,30 +32,6 @@ namespace clang { namespace clangd { -// Describes the source of information about a symbol. -// Mainly useful for debugging, e.g. understanding code completion reuslts. -// This is a bitfield as information can be combined from several sources. -enum class SymbolOrigin : uint8_t { - Unknown = 0, - AST = 1 << 0, // Directly from the AST (indexes should not set this). - Dynamic = 1 << 1, // From the dynamic index of opened files. - Static = 1 << 2, // From the static, externally-built index. - Merge = 1 << 3, // A non-trivial index merge was performed. - // Remaining bits reserved for index implementations. -}; -inline SymbolOrigin operator|(SymbolOrigin A, SymbolOrigin B) { - return static_cast<SymbolOrigin>(static_cast<uint8_t>(A) | - static_cast<uint8_t>(B)); -} -inline SymbolOrigin &operator|=(SymbolOrigin &A, SymbolOrigin B) { - return A = A | B; -} -inline SymbolOrigin operator&(SymbolOrigin A, SymbolOrigin B) { - return static_cast<SymbolOrigin>(static_cast<uint8_t>(A) & - static_cast<uint8_t>(B)); -} -raw_ostream &operator<<(raw_ostream &, SymbolOrigin); - // The class presents a C++ symbol, e.g. class, function. // // WARNING: Symbols do not own much of their underlying data - typically strings Modified: clang-tools-extra/trunk/clangd/index/IndexAction.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/IndexAction.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/IndexAction.cpp (original) +++ clang-tools-extra/trunk/clangd/index/IndexAction.cpp Thu Feb 28 04:31:49 2019 @@ -1,4 +1,6 @@ #include "IndexAction.h" + +#include "index/SymbolOrigin.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Index/IndexDataConsumer.h" #include "clang/Index/IndexingAction.h" Modified: clang-tools-extra/trunk/clangd/index/Merge.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Merge.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/Merge.cpp (original) +++ clang-tools-extra/trunk/clangd/index/Merge.cpp Thu Feb 28 04:31:49 2019 @@ -10,6 +10,7 @@ #include "Logger.h" #include "Trace.h" #include "index/SymbolLocation.h" +#include "index/SymbolOrigin.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSet.h" Modified: clang-tools-extra/trunk/clangd/index/Serialization.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/Serialization.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/Serialization.cpp (original) +++ clang-tools-extra/trunk/clangd/index/Serialization.cpp Thu Feb 28 04:31:49 2019 @@ -10,6 +10,7 @@ #include "Logger.h" #include "RIFF.h" #include "SymbolLocation.h" +#include "SymbolOrigin.h" #include "Trace.h" #include "dex/Dex.h" #include "llvm/Support/Compression.h" Modified: clang-tools-extra/trunk/clangd/index/SymbolCollector.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolCollector.h?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/SymbolCollector.h (original) +++ clang-tools-extra/trunk/clangd/index/SymbolCollector.h Thu Feb 28 04:31:49 2019 @@ -10,6 +10,7 @@ #include "CanonicalIncludes.h" #include "Index.h" +#include "SymbolOrigin.h" #include "clang/AST/ASTContext.h" #include "clang/AST/Decl.h" #include "clang/Basic/SourceLocation.h" @@ -143,4 +144,5 @@ private: } // namespace clangd } // namespace clang + #endif Added: clang-tools-extra/trunk/clangd/index/SymbolOrigin.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolOrigin.cpp?rev=355086&view=auto ============================================================================== --- clang-tools-extra/trunk/clangd/index/SymbolOrigin.cpp (added) +++ clang-tools-extra/trunk/clangd/index/SymbolOrigin.cpp Thu Feb 28 04:31:49 2019 @@ -0,0 +1,25 @@ +//===--- SymbolOrigin.cpp ----------------------------------------*- C++-*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "SymbolOrigin.h" + +namespace clang { +namespace clangd { + +llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, SymbolOrigin O) { + if (O == SymbolOrigin::Unknown) + return OS << "unknown"; + constexpr static char Sigils[] = "ADSM4567"; + for (unsigned I = 0; I < sizeof(Sigils); ++I) + if (static_cast<uint8_t>(O) & 1u << I) + OS << Sigils[I]; + return OS; +} + +} // namespace clangd +} // namespace clang Added: clang-tools-extra/trunk/clangd/index/SymbolOrigin.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolOrigin.h?rev=355086&view=auto ============================================================================== --- clang-tools-extra/trunk/clangd/index/SymbolOrigin.h (added) +++ clang-tools-extra/trunk/clangd/index/SymbolOrigin.h Thu Feb 28 04:31:49 2019 @@ -0,0 +1,47 @@ +//===--- SymbolOrigin.h ------------------------------------------*- C++-*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOL_ORIGIN_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOL_ORIGIN_H + +#include "llvm/Support/raw_ostream.h" +#include <cstdint> + +namespace clang { +namespace clangd { + +// Describes the source of information about a symbol. +// Mainly useful for debugging, e.g. understanding code completion reuslts. +// This is a bitfield as information can be combined from several sources. +enum class SymbolOrigin : uint8_t { + Unknown = 0, + AST = 1 << 0, // Directly from the AST (indexes should not set this). + Dynamic = 1 << 1, // From the dynamic index of opened files. + Static = 1 << 2, // From the static, externally-built index. + Merge = 1 << 3, // A non-trivial index merge was performed. + // Remaining bits reserved for index implementations. +}; + +inline SymbolOrigin operator|(SymbolOrigin A, SymbolOrigin B) { + return static_cast<SymbolOrigin>(static_cast<uint8_t>(A) | + static_cast<uint8_t>(B)); +} +inline SymbolOrigin &operator|=(SymbolOrigin &A, SymbolOrigin B) { + return A = A | B; +} +inline SymbolOrigin operator&(SymbolOrigin A, SymbolOrigin B) { + return static_cast<SymbolOrigin>(static_cast<uint8_t>(A) & + static_cast<uint8_t>(B)); +} + +llvm::raw_ostream &operator<<(llvm::raw_ostream &, SymbolOrigin); + +} // namespace clangd +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_INDEX_SYMBOL_ORIGIN_H Modified: clang-tools-extra/trunk/clangd/index/YAMLSerialization.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/YAMLSerialization.cpp?rev=355086&r1=355085&r2=355086&view=diff ============================================================================== --- clang-tools-extra/trunk/clangd/index/YAMLSerialization.cpp (original) +++ clang-tools-extra/trunk/clangd/index/YAMLSerialization.cpp Thu Feb 28 04:31:49 2019 @@ -15,6 +15,7 @@ #include "Index.h" #include "Serialization.h" #include "SymbolLocation.h" +#include "SymbolOrigin.h" #include "Trace.h" #include "dex/Dex.h" #include "llvm/ADT/Optional.h" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits