summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp
diff options
context:
space:
mode:
authorShuai Wang <shuaiwang@google.com>2018-09-10 23:58:04 +0000
committerShuai Wang <shuaiwang@google.com>2018-09-10 23:58:04 +0000
commitcec7d3a055ede1655707c1c3a0b6fcc69c1569cf (patch)
tree86e2fc663f3d30c239a37b90fb1cab1364b96164 /clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp
parenta80d6faa10d9b1562bb8d08506da8c69ff0b0ec6 (diff)
downloadbcm5719-llvm-cec7d3a055ede1655707c1c3a0b6fcc69c1569cf.tar.gz
bcm5719-llvm-cec7d3a055ede1655707c1c3a0b6fcc69c1569cf.zip
Revert "[clang-tidy] Handle unresolved expressions in ExprMutationAnalyzer"
Summary: Tests somehow break on windows (and only on windows) http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/13003 http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/13747 I have yet figure out why so reverting to unbreak first. Reviewers: george.karpenkov Subscribers: xazax.hun, a.sidorin, Szelethus, cfe-commits Differential Revision: https://reviews.llvm.org/D51898 llvm-svn: 341886
Diffstat (limited to 'clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp')
-rw-r--r--clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp110
1 files changed, 4 insertions, 106 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp b/clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp
index 013493ef2c0..9d0728bf9c1 100644
--- a/clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp
+++ b/clang-tools-extra/unittests/clang-tidy/ExprMutationAnalyzerTest.cpp
@@ -114,26 +114,6 @@ TEST(ExprMutationAnalyzerTest, NonConstMemberFunc) {
EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.mf()"));
}
-TEST(ExprMutationAnalyzerTest, AssumedNonConstMemberFunc) {
- auto AST = tooling::buildASTFromCode(
- "struct X { template <class T> void mf(); };"
- "template <class T> void f() { X x; x.mf<T>(); }");
- auto Results =
- match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.mf<T>()"));
-
- AST =
- tooling::buildASTFromCode("template <class T> void f() { T x; x.mf(); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.mf()"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> struct X;"
- "template <class T> void f() { X<T> x; x.mf(); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.mf()"));
-}
-
TEST(ExprMutationAnalyzerTest, ConstMemberFunc) {
const auto AST = tooling::buildASTFromCode(
"void f() { struct Foo { void mf() const; }; Foo x; x.mf(); }");
@@ -312,51 +292,6 @@ TEST(ExprMutationAnalyzerTest, Forward) {
ElementsAre("std::forward<A &>(x)"));
}
-TEST(ExprMutationAnalyzerTest, CallUnresolved) {
- auto AST =
- tooling::buildASTFromCode("template <class T> void f() { T x; g(x); }");
- auto Results =
- match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("g(x)"));
-
- AST = tooling::buildASTFromCode(
- "template <int N> void f() { char x[N]; g(x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("g(x)"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> void f(T t) { int x; g(t, x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("g(t, x)"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> void f(T t) { int x; t.mf(x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("t.mf(x)"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> struct S;"
- "template <class T> void f() { S<T> s; int x; s.mf(x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("s.mf(x)"));
-
- AST = tooling::buildASTFromCode(
- "struct S { template <class T> void mf(); };"
- "template <class T> void f(S s) { int x; s.mf<T>(x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("s.mf<T>(x)"));
-
- AST = tooling::buildASTFromCode("template <class F>"
- "void g(F f) { int x; f(x); } ");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("f(x)"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> void f() { int x; (void)T(x); }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("T(x)"));
-}
-
TEST(ExprMutationAnalyzerTest, ReturnAsValue) {
const auto AST = tooling::buildASTFromCode("int f() { int x; return x; }");
const auto Results =
@@ -412,21 +347,6 @@ TEST(ExprMutationAnalyzerTest, ArrayToPointerDecay) {
EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x"));
}
-TEST(ExprMutationAnalyzerTest, TemplateWithArrayToPointerDecay) {
- const auto AST = tooling::buildASTFromCode(
- "template <typename T> struct S { static constexpr int v = 8; };"
- "template <> struct S<int> { static constexpr int v = 4; };"
- "void g(char*);"
- "template <typename T> void f() { char x[S<T>::v]; g(x); }"
- "template <> void f<int>() { char y[S<int>::v]; g(y); }");
- const auto ResultsX =
- match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(ResultsX, AST.get()), ElementsAre("g(x)"));
- const auto ResultsY =
- match(withEnclosingCompound(declRefTo("y")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(ResultsY, AST.get()), ElementsAre("y"));
-}
-
TEST(ExprMutationAnalyzerTest, FollowRefModified) {
const auto AST = tooling::buildASTFromCode(
"void f() { int x; int& r0 = x; int& r1 = r0; int& r2 = r1; "
@@ -478,43 +398,21 @@ TEST(ExprMutationAnalyzerTest, ArrayElementNotModified) {
}
TEST(ExprMutationAnalyzerTest, NestedMemberModified) {
- auto AST = tooling::buildASTFromCode(
+ const auto AST = tooling::buildASTFromCode(
"void f() { struct A { int vi; }; struct B { A va; }; "
"struct C { B vb; }; C x; x.vb.va.vi = 10; }");
- auto Results =
+ const auto Results =
match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.vb.va.vi = 10"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> void f() { T x; x.y.z = 10; }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.y.z = 10"));
-
- AST = tooling::buildASTFromCode(
- "template <class T> struct S;"
- "template <class T> void f() { S<T> x; x.y.z = 10; }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_THAT(mutatedBy(Results, AST.get()), ElementsAre("x.y.z = 10"));
}
TEST(ExprMutationAnalyzerTest, NestedMemberNotModified) {
- auto AST = tooling::buildASTFromCode(
+ const auto AST = tooling::buildASTFromCode(
"void f() { struct A { int vi; }; struct B { A va; }; "
"struct C { B vb; }; C x; x.vb.va.vi; }");
- auto Results =
+ const auto Results =
match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
EXPECT_FALSE(isMutated(Results, AST.get()));
-
- AST =
- tooling::buildASTFromCode("template <class T> void f() { T x; x.y.z; }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_FALSE(isMutated(Results, AST.get()));
-
- AST = tooling::buildASTFromCode(
- "template <class T> struct S;"
- "template <class T> void f() { S<T> x; x.y.z; }");
- Results = match(withEnclosingCompound(declRefTo("x")), AST->getASTContext());
- EXPECT_FALSE(isMutated(Results, AST.get()));
}
TEST(ExprMutationAnalyzerTest, CastToValue) {
OpenPOWER on IntegriCloud