kadircet added inline comments.

================
Comment at: clang/lib/AST/StmtPrinter.cpp:2011
+      Expr *Init = D->getInit();
+      if (D->getInitStyle() == VarDecl::CallInit && !isa<ParenListExpr>(Init))
+        OS << "(";
----------------
walrus wrote:
> kadircet wrote:
> > what about having a `Pre` and `Post` print blocks, set to `"(" and ")"` or 
> > `" = ` and ""` respectively?
> > 
> > that way we could get rid of the second if block below.
> > 
> > 
> > also i don't follow why blacklisting for parenlistexpr is needed here (i 
> > can see that it will end up printing double parens, but so is `ParenExpr`s, 
> > and I think both of them shouldn't be showing up as initializer exprs of 
> > captured variables), could you elaborate with a comment and a test case?
> I think you're right that skipping `ParenListExpr` is wrong here. I took this 
> part of code from DeclPrinter. The `ParenListExpr`s are skipped when printing 
> variable declarations, but I think it is not applicable when printing lambda 
> expression captures.
> 
> Honestly, I didn't get about `Pre` and `Post` blocks. I know it is supported 
> when printing types, but I could not find how to do this for expressions.
i meant something like below, (modulo naming):
```
llvm::StringRef Pre;
llvm::StringRef Post;
if(Style == CallInit) {
  Pre = "(";
  Post = ")";
}
else if (Style == CInit)
  Pre = " = ";

OS << Pre;
PrintExpr(Init):
OS << Post;
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83855/new/

https://reviews.llvm.org/D83855



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to