@@ -696,6 +696,10 @@ namespace clang {
696696 ExpectedStmt VisitCXXFoldExpr (CXXFoldExpr *E);
697697 ExpectedStmt VisitRequiresExpr (RequiresExpr* E);
698698 ExpectedStmt VisitConceptSpecializationExpr (ConceptSpecializationExpr* E);
699+ ExpectedStmt
700+ VisitSubstNonTypeTemplateParmPackExpr (SubstNonTypeTemplateParmPackExpr *E);
701+ ExpectedStmt VisitPseudoObjectExpr (PseudoObjectExpr *E);
702+ ExpectedStmt VisitCXXParenListInitExpr (CXXParenListInitExpr *E);
699703
700704 // Helper for chaining together multiple imports. If an error is detected,
701705 // subsequent imports will return default constructed nodes, so that failure
@@ -9273,6 +9277,50 @@ ASTNodeImporter::VisitConceptSpecializationExpr(ConceptSpecializationExpr *E) {
92739277 const_cast <ImplicitConceptSpecializationDecl *>(CSD), &Satisfaction);
92749278}
92759279
9280+ ExpectedStmt ASTNodeImporter::VisitSubstNonTypeTemplateParmPackExpr (
9281+ SubstNonTypeTemplateParmPackExpr *E) {
9282+ Error Err = Error::success ();
9283+ auto ToType = importChecked (Err, E->getType ());
9284+ auto ToPackLoc = importChecked (Err, E->getParameterPackLocation ());
9285+ auto ToArgPack = importChecked (Err, E->getArgumentPack ());
9286+ auto ToAssociatedDecl = importChecked (Err, E->getAssociatedDecl ());
9287+ if (Err)
9288+ return std::move (Err);
9289+
9290+ return new (Importer.getToContext ()) SubstNonTypeTemplateParmPackExpr (
9291+ ToType, E->getValueKind (), ToPackLoc, ToArgPack, ToAssociatedDecl,
9292+ E->getIndex (), E->getFinal ());
9293+ }
9294+
9295+ ExpectedStmt ASTNodeImporter::VisitPseudoObjectExpr (PseudoObjectExpr *E) {
9296+ SmallVector<Expr *, 4 > ToSemantics (E->getNumSemanticExprs ());
9297+ if (Error Err = ImportContainerChecked (E->semantics (), ToSemantics))
9298+ return std::move (Err);
9299+ auto ToSyntOrErr = import (E->getSyntacticForm ());
9300+ if (!ToSyntOrErr)
9301+ return ToSyntOrErr.takeError ();
9302+ return PseudoObjectExpr::Create (Importer.getToContext (), *ToSyntOrErr,
9303+ ToSemantics, E->getResultExprIndex ());
9304+ }
9305+
9306+ ExpectedStmt
9307+ ASTNodeImporter::VisitCXXParenListInitExpr (CXXParenListInitExpr *E) {
9308+ Error Err = Error::success ();
9309+ auto ToType = importChecked (Err, E->getType ());
9310+ auto ToInitLoc = importChecked (Err, E->getInitLoc ());
9311+ auto ToBeginLoc = importChecked (Err, E->getBeginLoc ());
9312+ auto ToEndLoc = importChecked (Err, E->getEndLoc ());
9313+ if (Err)
9314+ return std::move (Err);
9315+
9316+ SmallVector<Expr *, 4 > ToArgs (E->getInitExprs ().size ());
9317+ if (Error Err = ImportContainerChecked (E->getInitExprs (), ToArgs))
9318+ return std::move (Err);
9319+ return CXXParenListInitExpr::Create (Importer.getToContext (), ToArgs, ToType,
9320+ E->getUserSpecifiedInitExprs ().size (),
9321+ ToInitLoc, ToBeginLoc, ToEndLoc);
9322+ }
9323+
92769324Error ASTNodeImporter::ImportOverriddenMethods (CXXMethodDecl *ToMethod,
92779325 CXXMethodDecl *FromMethod) {
92789326 Error ImportErrors = Error::success ();
0 commit comments