diff options
| -rw-r--r-- | clang/lib/AST/DeclPrinter.cpp | 9 | ||||
| -rw-r--r-- | clang/unittests/AST/DeclPrinterTest.cpp | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index faafe30..c6a392c 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -895,12 +895,15 @@ void DeclPrinter::VisitVarDecl(VarDecl *D) { Expr *Init = D->getInit(); if (!Policy.SuppressInitializers && Init) { bool ImplicitInit = false; - if (CXXConstructExpr *Construct = - dyn_cast<CXXConstructExpr>(Init->IgnoreImplicit())) { + if (D->isCXXForRangeDecl()) { + // FIXME: We should print the range expression instead. + ImplicitInit = true; + } else if (CXXConstructExpr *Construct = + dyn_cast<CXXConstructExpr>(Init->IgnoreImplicit())) { if (D->getInitStyle() == VarDecl::CallInit && !Construct->isListInitialization()) { ImplicitInit = Construct->getNumArgs() == 0 || - Construct->getArg(0)->isDefaultArgument(); + Construct->getArg(0)->isDefaultArgument(); } } if (!ImplicitInit) { diff --git a/clang/unittests/AST/DeclPrinterTest.cpp b/clang/unittests/AST/DeclPrinterTest.cpp index c2d7d78..11dca6e 100644 --- a/clang/unittests/AST/DeclPrinterTest.cpp +++ b/clang/unittests/AST/DeclPrinterTest.cpp @@ -1426,4 +1426,7 @@ TEST(DeclPrinter, VarDeclWithInitializer) { ASSERT_TRUE(PrintedDeclCXX17Matches( "int a = 0x15;", namedDecl(hasName("a")).bind("id"), "int a = 0x15", [](PrintingPolicy &Policy) { Policy.ConstantsAsWritten = true; })); + ASSERT_TRUE( + PrintedDeclCXX17Matches("void foo() {int arr[42]; for(int a : arr);}", + namedDecl(hasName("a")).bind("id"), "int a")); } |
