kadircet created this revision. kadircet added reviewers: ilya-biryukov, hokein, sammccall. Herald added a project: clang. Herald added a subscriber: cfe-commits. kadircet added a child revision: D61497: [clangd] Introduce a structured hover response.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D62487 Files: clang/lib/AST/StmtPrinter.cpp clang/unittests/AST/StmtPrinterTest.cpp Index: clang/unittests/AST/StmtPrinterTest.cpp =================================================================== --- clang/unittests/AST/StmtPrinterTest.cpp +++ clang/unittests/AST/StmtPrinterTest.cpp @@ -231,3 +231,17 @@ ASSERT_TRUE(PrintedStmtObjCMatches(ObjCSource, returnStmt().bind("id"), "return self->ivar;\n")); } + +TEST(StmtPrinter, TerseOutputWithLambdas) { + const char *CPPSource = "auto lamb = []{ return 0; };"; + + // body is printed when TerseOutput is off(default). + ASSERT_TRUE(PrintedStmtCXXMatches(StdVer::CXX11, CPPSource, + lambdaExpr(anything()).bind("id"), + "[] {\n return 0;\n}")); + + // body not printed when TerseOutput is on. + ASSERT_TRUE(PrintedStmtCXXMatches( + StdVer::CXX11, CPPSource, lambdaExpr(anything()).bind("id"), "[] {}", + PolicyAdjusterType([](PrintingPolicy &PP) { PP.TerseOutput = true; }))); +} Index: clang/lib/AST/StmtPrinter.cpp =================================================================== --- clang/lib/AST/StmtPrinter.cpp +++ clang/lib/AST/StmtPrinter.cpp @@ -1950,7 +1950,10 @@ // Print the body. OS << ' '; - PrintRawCompoundStmt(Node->getBody()); + if (Policy.TerseOutput) + OS << "{}"; + else + PrintRawCompoundStmt(Node->getBody()); } void StmtPrinter::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *Node) {
Index: clang/unittests/AST/StmtPrinterTest.cpp =================================================================== --- clang/unittests/AST/StmtPrinterTest.cpp +++ clang/unittests/AST/StmtPrinterTest.cpp @@ -231,3 +231,17 @@ ASSERT_TRUE(PrintedStmtObjCMatches(ObjCSource, returnStmt().bind("id"), "return self->ivar;\n")); } + +TEST(StmtPrinter, TerseOutputWithLambdas) { + const char *CPPSource = "auto lamb = []{ return 0; };"; + + // body is printed when TerseOutput is off(default). + ASSERT_TRUE(PrintedStmtCXXMatches(StdVer::CXX11, CPPSource, + lambdaExpr(anything()).bind("id"), + "[] {\n return 0;\n}")); + + // body not printed when TerseOutput is on. + ASSERT_TRUE(PrintedStmtCXXMatches( + StdVer::CXX11, CPPSource, lambdaExpr(anything()).bind("id"), "[] {}", + PolicyAdjusterType([](PrintingPolicy &PP) { PP.TerseOutput = true; }))); +} Index: clang/lib/AST/StmtPrinter.cpp =================================================================== --- clang/lib/AST/StmtPrinter.cpp +++ clang/lib/AST/StmtPrinter.cpp @@ -1950,7 +1950,10 @@ // Print the body. OS << ' '; - PrintRawCompoundStmt(Node->getBody()); + if (Policy.TerseOutput) + OS << "{}"; + else + PrintRawCompoundStmt(Node->getBody()); } void StmtPrinter::VisitCXXScalarValueInitExpr(CXXScalarValueInitExpr *Node) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits