https://github.com/zahiraam updated https://github.com/llvm/llvm-project/pull/86339
>From ab7d280abf053b67b716e0723e2e70876e639810 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat <zahira.ammarguel...@intel.com> Date: Fri, 22 Mar 2024 13:55:44 -0700 Subject: [PATCH 1/2] Fix printing of templated records. --- clang/lib/AST/TypePrinter.cpp | 5 ----- clang/unittests/AST/DeclPrinterTest.cpp | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index 7032ff2f18468c..d9504f9dcb3899 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -2303,11 +2303,6 @@ printTo(raw_ostream &OS, ArrayRef<TA> Args, const PrintingPolicy &Policy, } else { if (!FirstArg) OS << Comma; - if (!Policy.SuppressTagKeyword && - Argument.getKind() == TemplateArgument::Type && - isa<TagType>(Argument.getAsType())) - OS << Argument.getAsType().getAsString(); - else // Tries to print the argument with location info if exists. printArgument(Arg, Policy, ArgOS, TemplateParameterList::shouldIncludeTypeForArgument( diff --git a/clang/unittests/AST/DeclPrinterTest.cpp b/clang/unittests/AST/DeclPrinterTest.cpp index e024c41e03b484..f0e360f9caf44a 100644 --- a/clang/unittests/AST/DeclPrinterTest.cpp +++ b/clang/unittests/AST/DeclPrinterTest.cpp @@ -1386,6 +1386,27 @@ TEST(DeclPrinter, TestTemplateArgumentList16) { ASSERT_TRUE(PrintedDeclCXX11Matches(Code, "NT2", "int NT2 = 5")); } +TEST(DeclPrinter, TestCXXRecordDecl17) { + ASSERT_TRUE(PrintedDeclCXX98Matches("template<typename T> struct Z {};" + "struct X {};" + "Z<X> A;", + "A", + "Z<X> A")); + [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = false; }; +} + +TEST(DeclPrinter, TestCXXRecordDecl18) { + ASSERT_TRUE(PrintedDeclCXX98Matches("template<typename T> struct Z {};" + "struct X {};" + "Z<X> A;" + "template <typename T1, int>" + "struct Y{};" + "Y<Z<X>, 2> B;", + "B", + "Y<Z<X>, 2> B")); + [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = false; }; +} + TEST(DeclPrinter, TestFunctionParamUglified) { llvm::StringLiteral Code = R"cpp( class __c; >From b1623cab26804c368adfea2eec17663e5a04f8d8 Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat <zahira.ammarguel...@intel.com> Date: Mon, 25 Mar 2024 05:04:47 -0700 Subject: [PATCH 2/2] Fixed format and added tests. --- clang/unittests/AST/DeclPrinterTest.cpp | 58 ++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/clang/unittests/AST/DeclPrinterTest.cpp b/clang/unittests/AST/DeclPrinterTest.cpp index f0e360f9caf44a..07fa02bd96e25d 100644 --- a/clang/unittests/AST/DeclPrinterTest.cpp +++ b/clang/unittests/AST/DeclPrinterTest.cpp @@ -1390,23 +1390,71 @@ TEST(DeclPrinter, TestCXXRecordDecl17) { ASSERT_TRUE(PrintedDeclCXX98Matches("template<typename T> struct Z {};" "struct X {};" "Z<X> A;", - "A", - "Z<X> A")); + "A", "Z<X> A")); [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = false; }; } TEST(DeclPrinter, TestCXXRecordDecl18) { ASSERT_TRUE(PrintedDeclCXX98Matches("template<typename T> struct Z {};" "struct X {};" - "Z<X> A;" + "Z<X> A;" "template <typename T1, int>" "struct Y{};" "Y<Z<X>, 2> B;", - "B", - "Y<Z<X>, 2> B")); + "B", "Y<Z<X>, 2> B")); [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = false; }; } +TEST(DeclPrinter, TestCXXRecordDecl19) { + ASSERT_TRUE(PrintedDeclCXX98Matches("template<typename T> struct Z {};" + "struct X {};" + "Z<X> A;" + "template <typename T1, int>" + "struct Y{};" + "Y<Z<X>, 2> B;", + "B", "Y<Z<X>, 2> B")); + [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = true; }; +} +TEST(DeclPrinter, TestCXXRecordDecl20) { + ASSERT_TRUE(PrintedDeclCXX98Matches( + "template <typename T, int N> class Inner;" + "template <typename T, int N>" + "class Inner{Inner(T val){}};" + "template <class InnerClass, int N> class Outer {" + "public:" + "struct NestedStruct {" + "int nestedValue;" + "NestedStruct(int val) : nestedValue(val) {}" + "};" + "InnerClass innerInstance;" + "Outer(const InnerClass &inner) : innerInstance(inner) {}" + "};" + "Outer<Inner<int, 10>, 5>::NestedStruct nestedInstance(100);", + "nestedInstance", + "Outer<Inner<int, 10>, 5>::NestedStruct nestedInstance(100)")); + [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = false; }; +} + +TEST(DeclPrinter, TestCXXRecordDecl21) { + ASSERT_TRUE(PrintedDeclCXX98Matches( + "template <typename T, int N> class Inner;" + "template <typename T, int N>" + "class Inner{Inner(T val){}};" + "template <class InnerClass, int N> class Outer {" + "public:" + "struct NestedStruct {" + "int nestedValue;" + "NestedStruct(int val) : nestedValue(val) {}" + "};" + "InnerClass innerInstance;" + "Outer(const InnerClass &inner) : innerInstance(inner) {}" + "};" + "Outer<Inner<int, 10>, 5>::NestedStruct nestedInstance(100);", + "nestedInstance", + "Outer<Inner<int, 10>, 5>::NestedStruct nestedInstance(100)")); + [](PrintingPolicy &Policy) { Policy.SuppressTagKeyword = true; }; +} + TEST(DeclPrinter, TestFunctionParamUglified) { llvm::StringLiteral Code = R"cpp( class __c; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits