]> granicus.if.org Git - clang/commitdiff
[AST] Add structural eq tests for template args
authorGabor Marton <martongabesz@gmail.com>
Mon, 28 Jan 2019 10:01:11 +0000 (10:01 +0000)
committerGabor Marton <martongabesz@gmail.com>
Mon, 28 Jan 2019 10:01:11 +0000 (10:01 +0000)
Summary:
New tests added to verify equivalency of templates when their
parameters are different.

Reviewers: a_sidorin, shafik

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits

Differential Revision: https://reviews.llvm.org/D57235

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@352345 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/AST/StructuralEquivalenceTest.cpp

index 919856f4ade531f6a88c2965f8e508a1e83096dc..e6c289a5f6529f60f47ea42224e799da60c038d8 100644 (file)
@@ -802,6 +802,25 @@ TEST_F(StructuralEquivalenceEnumTest, EnumsWithDifferentBody) {
   EXPECT_FALSE(testStructuralMatch(t));
 }
 
+struct StructuralEquivalenceTemplateTest : StructuralEquivalenceTest {};
+
+TEST_F(StructuralEquivalenceTemplateTest, ExactlySameTemplates) {
+  auto t = makeNamedDecls("template <class T> struct foo;",
+                          "template <class T> struct foo;", Lang_CXX);
+  EXPECT_TRUE(testStructuralMatch(t));
+}
+
+TEST_F(StructuralEquivalenceTemplateTest, DifferentTemplateArgName) {
+  auto t = makeNamedDecls("template <class T> struct foo;",
+                          "template <class U> struct foo;", Lang_CXX);
+  EXPECT_TRUE(testStructuralMatch(t));
+}
+
+TEST_F(StructuralEquivalenceTemplateTest, DifferentTemplateArgKind) {
+  auto t = makeNamedDecls("template <class T> struct foo;",
+                          "template <int T> struct foo;", Lang_CXX);
+  EXPECT_FALSE(testStructuralMatch(t));
+}
 
 } // end namespace ast_matchers
 } // end namespace clang