[PATCH] D77176: [clangd] Force delayed-template-parsing off in code completion.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 1 02:11:00 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG038f03cb5ef5: [clangd] Force delayed-template-parsing off in code completion. (authored by sammccall).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77176/new/
https://reviews.llvm.org/D77176
Files:
clang-tools-extra/clangd/CodeComplete.cpp
clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -127,7 +127,6 @@
Annotations Test(Text);
auto TU = TestTU::withCode(Test.code());
// To make sure our tests for completiopns inside templates work on Windows.
- TU.ExtraArgs = {"-fno-delayed-template-parsing"};
TU.Filename = FilePath.str();
return completions(TU, Test.point(), std::move(IndexSymbols),
std::move(Opts));
@@ -2660,6 +2659,20 @@
EXPECT_THAT(Signatures, Contains(Sig("x() -> auto")));
}
+TEST(CompletionTest, DelayedTemplateParsing) {
+ Annotations Test(R"cpp(
+ int xxx;
+ template <typename T> int foo() { return xx^; }
+ )cpp");
+ auto TU = TestTU::withCode(Test.code());
+ // Even though delayed-template-parsing is on, we will disable it to provide
+ // completion in templates.
+ TU.ExtraArgs.push_back("-fdelayed-template-parsing");
+
+ EXPECT_THAT(completions(TU, Test.point()).Completions,
+ Contains(Named("xxx")));
+}
+
TEST(CompletionTest, CompletionRange) {
const char *WithRange = "auto x = [[abc]]^";
auto Completions = completions(WithRange);
Index: clang-tools-extra/clangd/CodeComplete.cpp
===================================================================
--- clang-tools-extra/clangd/CodeComplete.cpp
+++ clang-tools-extra/clangd/CodeComplete.cpp
@@ -1072,6 +1072,10 @@
FrontendOpts.SkipFunctionBodies = true;
// Disable typo correction in Sema.
CI->getLangOpts()->SpellChecking = false;
+ // Code completion won't trigger in delayed template bodies.
+ // This is on-by-default in windows to allow parsing SDK headers; we're only
+ // disabling it for the main-file (not preamble).
+ CI->getLangOpts()->DelayedTemplateParsing = false;
// Setup code completion.
FrontendOpts.CodeCompleteOpts = Options;
FrontendOpts.CodeCompletionAt.FileName = std::string(Input.FileName);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77176.254123.patch
Type: text/x-patch
Size: 2063 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200401/09d29224/attachment-0001.bin>
More information about the cfe-commits
mailing list