================
@@ -2876,10 +2876,21 @@ class TreeTransform {
         return ExprError();
       Base = BaseResult.get();
 
+      // We want to use `BuildMemberReferenceExpr()` so we can use its logic
+      // that materializes `Base` into a temporary if it's a prvalue.
+      // To do so, we need to create a `LookupResult` for `Member`, even though
+      // it's an unnamed field (that we could never actually have looked up).
+      // This small hack seems preferable to duplicating the logic for
+      // materializing the temporary.
+      LookupResult R(getSema(), MemberNameInfo, Sema::LookupMemberName);
+      R.addDecl(Member);
+      R.resolveKind();
+
       CXXScopeSpec EmptySS;
-      return getSema().BuildFieldReferenceExpr(
-          Base, isArrow, OpLoc, EmptySS, cast<FieldDecl>(Member),
-          DeclAccessPair::make(FoundDecl, FoundDecl->getAccess()), 
MemberNameInfo);
+      return getSema().BuildMemberReferenceExpr(
+          Base, Base->getType(), OpLoc, isArrow, EmptySS, TemplateKWLoc,
+          FirstQualifierInScope, R, ExplicitTemplateArgs,
+          /*S*/ nullptr);
----------------
shafik wrote:

```suggestion
          /*S=*/nullptr);
```
We use 
[bugprone-argument-comment](https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)
 format for these.

https://github.com/llvm/llvm-project/pull/90842
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to