1 //===--- HeaderSourceSwitch.h - ----------------------------------*- C++-*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_HEADERSOURCESWITCH_H
10 #define LLVM_CLANG_TOOLS_EXTRA_CLANGD_HEADERSOURCESWITCH_H
12 #include "ParsedAST.h"
13 #include "llvm/ADT/Optional.h"
18 /// Given a header file, returns the best matching source file, and vice visa.
19 /// It only uses the filename heuristics to do the inference.
20 llvm::Optional
<Path
> getCorrespondingHeaderOrSource(
21 PathRef OriginalFile
, llvm::IntrusiveRefCntPtr
<llvm::vfs::FileSystem
> VFS
);
23 /// Given a header file, returns the best matching source file, and vice visa.
24 /// The heuristics incorporate with the AST and the index (if provided).
25 llvm::Optional
<Path
> getCorrespondingHeaderOrSource(PathRef OriginalFile
,
27 const SymbolIndex
*Index
);
29 /// Returns all indexable decls that are present in the main file of the AST.
30 /// Exposed for unittests.
31 std::vector
<const Decl
*> getIndexableLocalDecls(ParsedAST
&AST
);
36 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_HEADERSOURCESWITCH_H