1*68eac9a6SSam McCall //===-- SpecialMembersTests.cpp -------------------------------------------===// 2*68eac9a6SSam McCall // 3*68eac9a6SSam McCall // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*68eac9a6SSam McCall // See https://llvm.org/LICENSE.txt for license information. 5*68eac9a6SSam McCall // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*68eac9a6SSam McCall // 7*68eac9a6SSam McCall //===----------------------------------------------------------------------===// 8*68eac9a6SSam McCall 9*68eac9a6SSam McCall #include "TweakTesting.h" 10*68eac9a6SSam McCall #include "gtest/gtest.h" 11*68eac9a6SSam McCall 12*68eac9a6SSam McCall namespace clang { 13*68eac9a6SSam McCall namespace clangd { 14*68eac9a6SSam McCall namespace { 15*68eac9a6SSam McCall 16*68eac9a6SSam McCall TWEAK_TEST(SpecialMembers); 17*68eac9a6SSam McCall TEST_F(SpecialMembersTest,Test)18*68eac9a6SSam McCallTEST_F(SpecialMembersTest, Test) { 19*68eac9a6SSam McCall EXPECT_AVAILABLE("struct ^S {};"); 20*68eac9a6SSam McCall EXPECT_UNAVAILABLE("struct S { ^ };"); 21*68eac9a6SSam McCall EXPECT_UNAVAILABLE("union ^U {};"); 22*68eac9a6SSam McCall EXPECT_AVAILABLE("struct ^S { S(const S&); S(S&&); };"); 23*68eac9a6SSam McCall EXPECT_UNAVAILABLE("struct ^S {" 24*68eac9a6SSam McCall "S(const S&); S(S&&);" 25*68eac9a6SSam McCall "S &operator=(S&&); S &operator=(const S&);" 26*68eac9a6SSam McCall "};"); 27*68eac9a6SSam McCall 28*68eac9a6SSam McCall const char *Output = R"cpp(struct S{S(const S&) = default; 29*68eac9a6SSam McCall S(S&&) = default; 30*68eac9a6SSam McCall S &operator=(const S&) = default; 31*68eac9a6SSam McCall S &operator=(S&&) = default; 32*68eac9a6SSam McCall };)cpp"; 33*68eac9a6SSam McCall EXPECT_EQ(apply("struct ^S{};"), Output); 34*68eac9a6SSam McCall 35*68eac9a6SSam McCall Output = R"cpp(struct S{S(const S&) = default; 36*68eac9a6SSam McCall S(S&&) = default; 37*68eac9a6SSam McCall S &operator=(const S&) = delete; 38*68eac9a6SSam McCall S &operator=(S&&) = delete; 39*68eac9a6SSam McCall int& ref;};)cpp"; 40*68eac9a6SSam McCall EXPECT_EQ(apply("struct ^S{int& ref;};"), Output); 41*68eac9a6SSam McCall } 42*68eac9a6SSam McCall 43*68eac9a6SSam McCall } // namespace 44*68eac9a6SSam McCall } // namespace clangd 45*68eac9a6SSam McCall } // namespace clang 46