balazske marked an inline comment as done.
balazske added inline comments.

================
Comment at: clang/lib/AST/ASTImporter.cpp:7944
+      if (auto ToEOrErr = Import(From->getAlignmentExpr()))
+        To = AlignedAttr::Create(ToContext, true, *ToEOrErr, ToRange,
+                                 FromAttr->getSyntax(),
----------------
shafik wrote:
> shafik wrote:
> > This call to `Create` and the one below look identical can we please 
> > refactor to avoid code duplication.
> How about something more like, maybe I am missing a detail but hopefully not:
> 
> ```
> bool IsAlignmentExpr=From->isAlignmentExpr();
> auto ToEOrErr = [IsAlignmentExpr]() {
>   if (IsAlignmentExpr)
>     return Import(From->getAlignmentExpr());
> 
>   return  Import(From->getAlignmentType());
> }();
> 
> if (!ToTOrErr)
>   return ToTOrErr.takeError();
> 
> To = AlignedAttr::Create(ToContext, IsAlignmentExpr, *ToEOrErr, ToRange,
>                                  
> From->getSyntax(),From->getSemanticSpelling());
> ```
It is only possible by using a template. Importing of AlignmentExpr returns 
`Expected<Expr *>` and importing the AlignmentType returns 
`Expected<TypeSourceInfo *>`. The `ToTOrErr` and `ToEOrErr` are of different 
types. (The create function expects a `void *` that can be a pointer to Expr or 
TypeSourceInfo).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D75048



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

Reply via email to