summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/unittests/FindTargetTests.cpp16
-rw-r--r--clang-tools-extra/clangd/unittests/ParsedASTTests.cpp3
-rw-r--r--clang-tools-extra/clangd/unittests/SelectionTests.cpp10
-rw-r--r--clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp10
-rw-r--r--clang-tools-extra/clangd/unittests/TweakTesting.cpp2
-rw-r--r--clang-tools-extra/clangd/unittests/TweakTesting.h3
-rw-r--r--clang-tools-extra/clangd/unittests/TweakTests.cpp11
-rw-r--r--clang-tools-extra/clangd/unittests/XRefsTests.cpp9
8 files changed, 57 insertions, 7 deletions
diff --git a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
index bf100630b30..9e1f1c18989 100644
--- a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
@@ -226,18 +226,26 @@ TEST_F(TargetDeclTest, Types) {
EXPECT_DECLS("TypedefTypeLoc", {"typedef S X", Rel::Alias},
{"struct S", Rel::Underlying});
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ Flags = {"-fno-delayed-template-parsing"};
Code = R"cpp(
template<class T>
void foo() { [[T]] x; }
)cpp";
// FIXME: We don't do a good job printing TemplateTypeParmDecls, apparently!
EXPECT_DECLS("TemplateTypeParmTypeLoc", "");
+ Flags.clear();
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ Flags = {"-fno-delayed-template-parsing"};
Code = R"cpp(
template<template<typename> class T>
void foo() { [[T<int>]] x; }
)cpp";
EXPECT_DECLS("TemplateSpecializationTypeLoc", "template <typename> class T");
+ Flags.clear();
Code = R"cpp(
struct S{};
@@ -394,6 +402,10 @@ TEST_F(TargetDeclTest, Lambda) {
}
TEST_F(TargetDeclTest, OverloadExpr) {
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ Flags = {"-fno-delayed-template-parsing"};
+
Code = R"cpp(
void func(int*);
void func(char*);
@@ -509,6 +521,10 @@ protected:
TestTU TU;
TU.Code = Code;
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
+
auto AST = TU.build();
auto *TestDecl = &findDecl(AST, "foo");
diff --git a/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp b/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
index 53e2f4b68e1..04a57676934 100644
--- a/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
+++ b/clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
@@ -144,6 +144,9 @@ TEST(ParsedASTTest,
template <>
int foo<bool> = 0;
)cpp";
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
auto AST = TU.build();
EXPECT_THAT(
diff --git a/clang-tools-extra/clangd/unittests/SelectionTests.cpp b/clang-tools-extra/clangd/unittests/SelectionTests.cpp
index e2cbff37b3d..309f4c0dbcd 100644
--- a/clang-tools-extra/clangd/unittests/SelectionTests.cpp
+++ b/clang-tools-extra/clangd/unittests/SelectionTests.cpp
@@ -289,7 +289,15 @@ TEST(SelectionTest, CommonAncestor) {
};
for (const Case &C : Cases) {
Annotations Test(C.Code);
- auto AST = TestTU::withCode(Test.code()).build();
+
+ TestTU TU;
+ TU.Code = Test.code();
+
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
+
+ auto AST = TU.build();
auto T = makeSelectionTree(C.Code, AST);
EXPECT_EQ("TranslationUnitDecl", nodeKind(&T.root())) << C.Code;
diff --git a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
index 8003e359bbb..1085b6f4928 100644
--- a/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
+++ b/clang-tools-extra/clangd/unittests/SemanticHighlightingTests.cpp
@@ -99,7 +99,13 @@ void checkHighlightings(llvm::StringRef Code,
/*FileContent*/ llvm::StringRef>>
AdditionalFiles = {}) {
Annotations Test(Code);
- auto TU = TestTU::withCode(Test.code());
+ TestTU TU;
+ TU.Code = Test.code();
+
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
+
for (auto File : AdditionalFiles)
TU.AdditionalFiles.insert({File.first, File.second});
auto AST = TU.build();
@@ -720,4 +726,4 @@ TEST(SemanticHighlighting, DiffBeyondTheEndOfFile) {
} // namespace
} // namespace clangd
-} // namespace clang \ No newline at end of file
+} // namespace clang
diff --git a/clang-tools-extra/clangd/unittests/TweakTesting.cpp b/clang-tools-extra/clangd/unittests/TweakTesting.cpp
index 2e72cbd0a70..63ecd7b4d4d 100644
--- a/clang-tools-extra/clangd/unittests/TweakTesting.cpp
+++ b/clang-tools-extra/clangd/unittests/TweakTesting.cpp
@@ -82,9 +82,11 @@ std::string TweakTest::apply(llvm::StringRef MarkedCode) const {
std::string WrappedCode = wrap(Context, MarkedCode);
Annotations Input(WrappedCode);
auto Selection = rangeOrPoint(Input);
+
TestTU TU;
TU.HeaderCode = Header;
TU.Code = Input.code();
+ TU.ExtraArgs = ExtraArgs;
ParsedAST AST = TU.build();
Tweak::Selection S(AST, Selection.first, Selection.second);
diff --git a/clang-tools-extra/clangd/unittests/TweakTesting.h b/clang-tools-extra/clangd/unittests/TweakTesting.h
index 6817e727699..1e8cd58849b 100644
--- a/clang-tools-extra/clangd/unittests/TweakTesting.h
+++ b/clang-tools-extra/clangd/unittests/TweakTesting.h
@@ -55,6 +55,9 @@ protected:
// testcases.
std::string Header;
+ // Extra flags passed to the compilation in apply().
+ std::vector<const char *> ExtraArgs;
+
// Context in which snippets of code should be placed to run tweaks.
CodeContext Context = File;
diff --git a/clang-tools-extra/clangd/unittests/TweakTests.cpp b/clang-tools-extra/clangd/unittests/TweakTests.cpp
index 8cc29dd182b..36efbef0a1a 100644
--- a/clang-tools-extra/clangd/unittests/TweakTests.cpp
+++ b/clang-tools-extra/clangd/unittests/TweakTests.cpp
@@ -481,6 +481,7 @@ TEST_F(ExpandMacroTest, Test) {
TWEAK_TEST(ExpandAutoType);
TEST_F(ExpandAutoTypeTest, Test) {
+
Header = R"cpp(
namespace ns {
struct Class {
@@ -507,9 +508,6 @@ TEST_F(ExpandAutoTypeTest, Test) {
// check that namespaces are shortened
EXPECT_EQ(apply("namespace ns { void f() { ^auto C = Class(); } }"),
"namespace ns { void f() { Class C = Class(); } }");
- // unknown types in a template should not be replaced
- EXPECT_THAT(apply("template <typename T> void x() { ^auto y = T::z(); }"),
- StartsWith("fail: Could not deduce type for 'auto' type"));
// undefined functions should not be replaced
EXPECT_THAT(apply("au^to x = doesnt_exist();"),
StartsWith("fail: Could not deduce type for 'auto' type"));
@@ -530,6 +528,13 @@ TEST_F(ExpandAutoTypeTest, Test) {
R"cpp(const char * x = "test")cpp");
EXPECT_UNAVAILABLE("dec^ltype(au^to) x = 10;");
+
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ ExtraArgs.push_back("-fno-delayed-template-parsing");
+ // unknown types in a template should not be replaced
+ EXPECT_THAT(apply("template <typename T> void x() { ^auto y = T::z(); }"),
+ StartsWith("fail: Could not deduce type for 'auto' type"));
}
TWEAK_TEST(ExtractFunction);
diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
index 60cba82492d..aafcb475baa 100644
--- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -462,7 +462,14 @@ TEST(LocateSymbol, All) {
if (!T.ranges("def").empty())
WantDef = T.range("def");
- auto AST = TestTU::withCode(T.code()).build();
+ TestTU TU;
+ TU.Code = T.code();
+
+ // FIXME: Auto-completion in a template requires disabling delayed template
+ // parsing.
+ TU.ExtraArgs.push_back("-fno-delayed-template-parsing");
+
+ auto AST = TU.build();
auto Results = locateSymbolAt(AST, T.point());
if (!WantDecl) {
OpenPOWER on IntegriCloud