[clang] [Clang][ASTImporter] Implement AST import for CXXParenListInitExpr, SubstNonTypeTemplateParmPackExpr, PseudoObjectExpr (PR #160904)
Balázs Kéri via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 14 07:58:36 PDT 2025
================
@@ -9274,6 +9278,54 @@ ASTNodeImporter::VisitConceptSpecializationExpr(ConceptSpecializationExpr *E) {
const_cast<ImplicitConceptSpecializationDecl *>(CSD), &Satisfaction);
}
+ExpectedStmt ASTNodeImporter::VisitSubstNonTypeTemplateParmPackExpr(
+ SubstNonTypeTemplateParmPackExpr *E) {
+ Error Err = Error::success();
+ auto ToType = importChecked(Err, E->getType());
+ auto ToNameLoc = importChecked(Err, E->getParameterPackLocation());
+ auto ToArgPack = importChecked(Err, E->getArgumentPack());
+ auto ToAssociatedDecl = importChecked(Err, E->getAssociatedDecl());
+ if (Err)
+ return std::move(Err);
+
+ return new (Importer.getToContext()) SubstNonTypeTemplateParmPackExpr(
+ ToType, E->getValueKind(), ToNameLoc, ToArgPack, ToAssociatedDecl,
+ E->getIndex(), E->getFinal());
+}
+
+ExpectedStmt ASTNodeImporter::VisitPseudoObjectExpr(PseudoObjectExpr *E) {
+ SmallVector<Expr *, 4> ToSemantics(E->getNumSemanticExprs());
+ if (Error Err = ImportContainerChecked(E->semantics(), ToSemantics))
+ return std::move(Err);
+ Expr *ToSynt = nullptr;
+ if (const Expr *FromSynt = E->getSyntacticForm()) {
+ if (auto ToSyntOrErr = import(FromSynt))
+ ToSynt = *ToSyntOrErr;
+ else
+ return ToSyntOrErr.takeError();
+ }
+ return PseudoObjectExpr::Create(Importer.getToContext(), ToSynt, ToSemantics,
----------------
balazske wrote:
`import` can handle null pointers.
```suggestion
auto ToSyntOrErr = import(FromSynt);
if (!ToSyntOrErr)
return ToSyntOrErr.takeError();
return PseudoObjectExpr::Create(Importer.getToContext(), *ToSyntOrErr, ToSemantics,
```
https://github.com/llvm/llvm-project/pull/160904
More information about the cfe-commits
mailing list