clang-tools
15.0.0git
llvm-project
clang-tools-extra
clangd
DumpAST.h
Go to the documentation of this file.
1
//===--- DumpAST.h - Serialize clang AST to LSP -----------------*- C++-*--===//
2
//
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
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// Exposing clang's AST can give insight into the precise meaning of code.
10
// (C++ is a complicated language, and very few people know all its rules).
11
// Despite the name, clang's AST describes *semantics* and so includes nodes
12
// for implicit behavior like conversions.
13
//
14
// It's also useful to developers who work with the clang AST specifically,
15
// and want to know how certain constructs are represented.
16
//
17
// The main representation is not based on the familiar -ast-dump output,
18
// which is heavy on internal details.
19
// It also does not use the -ast-dump=json output, which captures the same
20
// detail in a machine-friendly way, but requires client-side logic to present.
21
// Instead, the key information is bundled into a few fields (role/kind/detail)
22
// with weakly-defined semantics, optimized for easy presentation.
23
// The -ast-dump output is preserved in the 'arcana' field, and may be shown
24
// e.g. as a tooltip.
25
//
26
// The textDocument/ast method implemented here is a clangd extension.
27
//
28
//===----------------------------------------------------------------------===//
29
30
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_DUMPAST_H
31
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_DUMPAST_H
32
33
#include "
Protocol.h
"
34
#include "clang/AST/ASTContext.h"
35
36
namespace
clang
{
37
class
DynTypedNode;
38
namespace
syntax {
39
class
TokenBuffer;
40
}
// namespace syntax
41
namespace
clangd {
42
43
// Note: It's safe for the node to be a TranslationUnitDecl, as this function
44
// does not deserialize the preamble.
45
ASTNode
dumpAST
(
const
DynTypedNode &,
const
syntax::TokenBuffer &Tokens,
46
const
ASTContext &);
47
48
}
// namespace clangd
49
}
// namespace clang
50
51
#endif
Protocol.h
clang::clangd::dumpAST
ASTNode dumpAST(const DynTypedNode &N, const syntax::TokenBuffer &Tokens, const ASTContext &Ctx)
Definition:
DumpAST.cpp:401
clang
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
Definition:
ApplyReplacements.h:27
Generated on Wed Jul 6 2022 21:04:14 for clang-tools by
1.8.17