[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
//===--- Hover.h - Information about code at the cursor location -*- 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_HOVER_H
|
|
|
|
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_HOVER_H
|
|
|
|
|
|
|
|
#include "ParsedAST.h"
|
|
|
|
#include "Protocol.h"
|
2020-05-02 12:53:47 +00:00
|
|
|
#include "support/Markup.h"
|
2019-12-02 18:34:03 +00:00
|
|
|
#include "clang/Index/IndexSymbol.h"
|
2023-01-08 04:02:20 +00:00
|
|
|
#include <optional>
|
2023-02-28 16:27:05 +00:00
|
|
|
#include <string>
|
2023-03-16 17:06:08 +00:00
|
|
|
#include <vector>
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
|
|
|
|
namespace clang {
|
|
|
|
namespace clangd {
|
|
|
|
|
|
|
|
/// Contains detailed information about a Symbol. Especially useful when
|
|
|
|
/// generating hover responses. It can be rendered as a hover panel, or
|
|
|
|
/// embedding clients can use the structured information to provide their own
|
|
|
|
/// UI.
|
|
|
|
struct HoverInfo {
|
2021-12-08 04:31:00 +00:00
|
|
|
/// Contains pretty-printed type and desugared type
|
|
|
|
struct PrintedType {
|
|
|
|
PrintedType() = default;
|
|
|
|
PrintedType(const char *Type) : Type(Type) {}
|
|
|
|
PrintedType(const char *Type, const char *AKAType)
|
|
|
|
: Type(Type), AKA(AKAType) {}
|
|
|
|
|
|
|
|
/// Pretty-printed type
|
|
|
|
std::string Type;
|
|
|
|
/// Desugared type
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::string> AKA;
|
2021-12-08 04:31:00 +00:00
|
|
|
};
|
|
|
|
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Represents parameters of a function, a template or a macro.
|
|
|
|
/// For example:
|
|
|
|
/// - void foo(ParamType Name = DefaultValue)
|
|
|
|
/// - #define FOO(Name)
|
|
|
|
/// - template <ParamType Name = DefaultType> class Foo {};
|
|
|
|
struct Param {
|
2021-12-08 04:31:00 +00:00
|
|
|
/// The printable parameter type, e.g. "int", or "typename" (in
|
2022-12-11 00:59:22 +00:00
|
|
|
/// TemplateParameters), might be std::nullopt for macro parameters.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<PrintedType> Type;
|
2022-12-11 00:59:22 +00:00
|
|
|
/// std::nullopt for unnamed parameters.
|
2022-12-16 19:46:00 +00:00
|
|
|
std::optional<std::string> Name;
|
2022-12-11 00:59:22 +00:00
|
|
|
/// std::nullopt if no default is provided.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::string> Default;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/// For a variable named Bar, declared in clang::clangd::Foo::getFoo the
|
|
|
|
/// following fields will hold:
|
|
|
|
/// - NamespaceScope: clang::clangd::
|
|
|
|
/// - LocalScope: Foo::getFoo::
|
|
|
|
/// - Name: Bar
|
|
|
|
|
|
|
|
/// Scopes might be None in cases where they don't make sense, e.g. macros and
|
|
|
|
/// auto/decltype.
|
|
|
|
/// Contains all of the enclosing namespaces, empty string means global
|
|
|
|
/// namespace.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::string> NamespaceScope;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Remaining named contexts in symbol's qualified name, empty string means
|
|
|
|
/// symbol is not local.
|
|
|
|
std::string LocalScope;
|
|
|
|
/// Name of the symbol, does not contain any "::".
|
|
|
|
std::string Name;
|
2023-02-28 16:27:05 +00:00
|
|
|
/// Header providing the symbol (best match). Contains ""<>.
|
|
|
|
std::string Provider;
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<Range> SymRange;
|
2019-12-02 18:34:03 +00:00
|
|
|
index::SymbolKind Kind = index::SymbolKind::Unknown;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
std::string Documentation;
|
|
|
|
/// Source code containing the definition of the symbol.
|
|
|
|
std::string Definition;
|
2021-08-12 22:04:19 +00:00
|
|
|
const char *DefinitionLanguage = "cpp";
|
2020-05-27 16:17:07 +00:00
|
|
|
/// Access specifier for declarations inside class/struct/unions, empty for
|
|
|
|
/// others.
|
|
|
|
std::string AccessSpecifier;
|
2021-12-08 04:31:00 +00:00
|
|
|
/// Printable variable type.
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Set only for variables.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<PrintedType> Type;
|
2020-04-05 06:28:11 +00:00
|
|
|
/// Set for functions and lambdas.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<PrintedType> ReturnType;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Set for functions, lambdas and macros with parameters.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::vector<Param>> Parameters;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Set for all templates(function, class, variable).
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::vector<Param>> TemplateParameters;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
/// Contains the evaluated value of the symbol if available.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<std::string> Value;
|
2023-06-05 15:52:06 +00:00
|
|
|
/// Contains the bit-size of fields and types where it's interesting.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<uint64_t> Size;
|
2020-04-03 01:07:10 +00:00
|
|
|
/// Contains the offset of fields within the enclosing class.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<uint64_t> Offset;
|
2021-03-11 00:20:36 +00:00
|
|
|
/// Contains the padding following a field within the enclosing class.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<uint64_t> Padding;
|
[clangd] Improve hover on arguments to function call
Summary:
In cases like:
foo(a, ^b);
We now additionally show the name and type of the parameter to foo that
corresponds that "b" is passed as.
The name should help with understanding what it's used for and type can
be useful to find out if call to foo() can mutate variable "b" or not
(i.e. if it is pass by value, reference, const reference, etc).
Patch By: adamcz@ !
Reviewers: kadircet
Reviewed By: kadircet
Subscribers: nridge, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81169
2020-07-03 09:20:22 +00:00
|
|
|
// Set when symbol is inside function call. Contains information extracted
|
|
|
|
// from the callee definition about the argument this is passed as.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<Param> CalleeArgInfo;
|
[clangd] Improve hover on arguments to function call
Summary:
In cases like:
foo(a, ^b);
We now additionally show the name and type of the parameter to foo that
corresponds that "b" is passed as.
The name should help with understanding what it's used for and type can
be useful to find out if call to foo() can mutate variable "b" or not
(i.e. if it is pass by value, reference, const reference, etc).
Patch By: adamcz@ !
Reviewers: kadircet
Reviewed By: kadircet
Subscribers: nridge, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81169
2020-07-03 09:20:22 +00:00
|
|
|
struct PassType {
|
|
|
|
// How the variable is passed to callee.
|
|
|
|
enum PassMode { Ref, ConstRef, Value };
|
|
|
|
PassMode PassBy = Ref;
|
|
|
|
// True if type conversion happened. This includes calls to implicit
|
|
|
|
// constructor, as well as built-in type conversions. Casting to base class
|
|
|
|
// is not considered conversion.
|
|
|
|
bool Converted = false;
|
|
|
|
};
|
|
|
|
// Set only if CalleeArgInfo is set.
|
2023-01-08 04:19:42 +00:00
|
|
|
std::optional<PassType> CallPassType;
|
2023-03-16 17:06:08 +00:00
|
|
|
// Filled when hovering over the #include line. Contains the names of symbols
|
|
|
|
// from a #include'd file that are used in the main file, sorted in
|
|
|
|
// alphabetical order.
|
|
|
|
std::vector<std::string> UsedSymbolNames;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
|
|
|
|
/// Produce a user-readable information.
|
2019-12-10 09:28:37 +00:00
|
|
|
markup::Document present() const;
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
};
|
2020-03-24 11:30:51 +00:00
|
|
|
|
2021-12-08 04:31:00 +00:00
|
|
|
inline bool operator==(const HoverInfo::PrintedType &LHS,
|
|
|
|
const HoverInfo::PrintedType &RHS) {
|
|
|
|
return std::tie(LHS.Type, LHS.AKA) == std::tie(RHS.Type, RHS.AKA);
|
|
|
|
}
|
|
|
|
|
[clangd] Improve hover on arguments to function call
Summary:
In cases like:
foo(a, ^b);
We now additionally show the name and type of the parameter to foo that
corresponds that "b" is passed as.
The name should help with understanding what it's used for and type can
be useful to find out if call to foo() can mutate variable "b" or not
(i.e. if it is pass by value, reference, const reference, etc).
Patch By: adamcz@ !
Reviewers: kadircet
Reviewed By: kadircet
Subscribers: nridge, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D81169
2020-07-03 09:20:22 +00:00
|
|
|
inline bool operator==(const HoverInfo::PassType &LHS,
|
|
|
|
const HoverInfo::PassType &RHS) {
|
|
|
|
return std::tie(LHS.PassBy, LHS.Converted) ==
|
|
|
|
std::tie(RHS.PassBy, RHS.Converted);
|
|
|
|
}
|
|
|
|
|
2020-03-24 11:30:51 +00:00
|
|
|
// Try to infer structure of a documentation comment (e.g. line breaks).
|
2020-04-30 08:49:32 +00:00
|
|
|
// FIXME: move to another file so CodeComplete doesn't depend on Hover.
|
2020-03-24 11:30:51 +00:00
|
|
|
void parseDocumentation(llvm::StringRef Input, markup::Document &Output);
|
|
|
|
|
2021-12-08 04:31:00 +00:00
|
|
|
llvm::raw_ostream &operator<<(llvm::raw_ostream &,
|
|
|
|
const HoverInfo::PrintedType &);
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
llvm::raw_ostream &operator<<(llvm::raw_ostream &, const HoverInfo::Param &);
|
|
|
|
inline bool operator==(const HoverInfo::Param &LHS,
|
|
|
|
const HoverInfo::Param &RHS) {
|
|
|
|
return std::tie(LHS.Type, LHS.Name, LHS.Default) ==
|
|
|
|
std::tie(RHS.Type, RHS.Name, RHS.Default);
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Get the hover information when hovering at \p Pos.
|
2022-12-16 07:56:52 +00:00
|
|
|
std::optional<HoverInfo> getHover(ParsedAST &AST, Position Pos,
|
|
|
|
const format::FormatStyle &Style,
|
|
|
|
const SymbolIndex *Index);
|
[clangd] Untangle Hover from XRefs, move into own file.
Summary:
This is mostly mechanical, with a few exceptions:
- getDeducedType moved into AST.h where it belongs. It now takes
ASTContext instead of ParsedAST, and avoids using the preprocessor.
- hover now uses SelectionTree directly rather than via
getDeclAtPosition helper
- hover on 'auto' used to find the decl that contained the 'auto' and
use that to set Kind and documentation for the hover result.
Now we use targetDecl() to find the decl matching the deduced type instead.
This changes tests, e.g. 'variable' -> class for auto on lambdas.
I think this is better, but the motivation was to avoid depending on
the internals of DeducedTypeVisitor. This functionality is removed
from the visitor.
Reviewers: kadircet
Subscribers: mgorny, ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70357
2019-11-16 16:00:19 +00:00
|
|
|
|
|
|
|
} // namespace clangd
|
|
|
|
} // namespace clang
|
|
|
|
|
|
|
|
#endif
|