forked from OSchip/llvm-project
55a79318c6
This covers both C-style variadic functions and template variadic w/ parameter packs. Previously we would return no signatures when working with template variadic functions once activeParameter reached the position of the parameter pack (except when it was the only param, then we'd still show it when no arguments were given). With this commit, we now show signathure help correctly. Additionally, this commit fixes the activeParameter value in LSP output of clangd in the presence of variadic functions (both kinds). LSP does not allow the activeParamter to be higher than the number of parameters in the active signature. With "..." or parameter pack being just one argument, for all but first argument passed to "..." we'd report incorrect activeParameter value. Clients such as VSCode would then treat it as 0, as suggested in the spec) and highlight the wrong parameter. In the future, we should add support for per-signature activeParamter value, which exists in LSP since 3.16.0. This is not part of this commit. Differential Revision: https://reviews.llvm.org/D111318 |
||
---|---|---|
.. | ||
Inputs | ||
PR9728.cpp | ||
accessibility-crash.cpp | ||
accessibility.cpp | ||
after-function-equals.cpp | ||
attr.cpp | ||
auto.cpp | ||
auto_type.c | ||
bracket-decl.c | ||
call.c | ||
call.cpp | ||
comments.cpp | ||
concepts.cpp | ||
constexpr.cpp | ||
crash-func-decl.cpp | ||
crash-func-init.cpp | ||
crash-if-directive.cpp | ||
crash-null-type.cpp | ||
crash-skipped-bodies-template-inst.cpp | ||
ctor-initializer.cpp | ||
ctor-signature.cpp | ||
desig-init.cpp | ||
documentation.cpp | ||
documentation.m | ||
enable-if-attr-crash.cpp | ||
end-of-file.cpp | ||
end-of-ident-macro.cpp | ||
end-of-ident.cpp | ||
enum-preferred-type.cpp | ||
enum-switch-case-qualified.cpp | ||
enum-switch-case.c | ||
enum-switch-case.cpp | ||
function-overloads.cpp | ||
function-templates.cpp | ||
functions.cpp | ||
ignore-ns-level-decls.cpp | ||
included-files.cpp | ||
included-frameworks.m | ||
included-symlinks.cpp | ||
incomplete-member.cpp | ||
incomplete-ret-type.cpp | ||
inside-macros.cpp | ||
invalid-initialized-class.cpp | ||
keywords.cpp | ||
lambdas.cpp | ||
macros-in-modules.c | ||
macros-in-modules.m | ||
macros.c | ||
member-access-qualifiers.cpp | ||
member-access.c | ||
member-access.cpp | ||
namespace-alias.cpp | ||
namespace.cpp | ||
nested-name-specifier.cpp | ||
objc-expr.m | ||
objc-member-access.m | ||
objc-message.m | ||
objc-message.mm | ||
objc-protocol-member-access.m | ||
operator.cpp | ||
ordinary-name-cxx11.cpp | ||
ordinary-name.c | ||
ordinary-name.cpp | ||
overrides.cpp | ||
paren_locs.cpp | ||
patterns.cpp | ||
pch-and-module.m | ||
pragma-macro-token-caching.c | ||
preamble.c | ||
preferred-type.cpp | ||
qualifiers-as-written.cpp | ||
self-inits.cpp | ||
signatures-crash.cpp | ||
skip-auto-funcs.cpp | ||
some_struct.h | ||
stdin.c | ||
tag.c | ||
tag.cpp | ||
templates.cpp | ||
this-quals.cpp | ||
truncation.c | ||
truncation.c.h | ||
uninstantiated_params.cpp | ||
using-namespace.cpp | ||
using.cpp | ||
variadic-template.cpp |