Mercurial > hg > CbC > CbC_llvm
view clang-tools-extra/clangd/unittests/TestWorkspace.h @ 236:c4bab56944e8 llvm-original
LLVM 16
author | kono |
---|---|
date | Wed, 09 Nov 2022 17:45:10 +0900 |
parents | 79ff65ed7e25 |
children | 1f2b6ac9f198 |
line wrap: on
line source
//===--- TestWorkspace.h - Utility for writing multi-file tests --*- 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 // //===----------------------------------------------------------------------===// // // TestWorkspace builds on TestTU to provide a way to write tests involving // several related files with inclusion relationships between them. // // The tests can exercise both index and AST based operations. // //===---------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_TESTWORKSPACE_H #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_TESTWORKSPACE_H #include "TestTU.h" #include "index/Index.h" #include "llvm/ADT/StringRef.h" #include <string> #include <vector> namespace clang { namespace clangd { class TestWorkspace { public: // The difference between addSource() and addMainFile() is that only main // files will be indexed. void addSource(llvm::StringRef Filename, llvm::StringRef Code) { addInput(Filename.str(), {Code.str(), /*IsMainFile=*/false}); } void addMainFile(llvm::StringRef Filename, llvm::StringRef Code) { addInput(Filename.str(), {Code.str(), /*IsMainFile=*/true}); } std::unique_ptr<SymbolIndex> index(); Optional<ParsedAST> openFile(llvm::StringRef Filename); private: struct SourceFile { std::string Code; bool IsMainFile = false; }; llvm::StringMap<SourceFile> Inputs; TestTU TU; void addInput(llvm::StringRef Filename, const SourceFile &Input); }; } // namespace clangd } // namespace clang #endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_UNITTESTS_TESTWORKSPACE_H