[clang] [libcxx] [Clang] Implement resolution for CWG1835 (PR #92957)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 6 08:30:47 PDT 2024
================
@@ -1442,19 +1442,27 @@ SourceLocation CXXUnresolvedConstructExpr::getBeginLoc() const {
CXXDependentScopeMemberExpr::CXXDependentScopeMemberExpr(
const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow,
SourceLocation OperatorLoc, NestedNameSpecifierLoc QualifierLoc,
- SourceLocation TemplateKWLoc, NamedDecl *FirstQualifierFoundInScope,
+ SourceLocation TemplateKWLoc, ArrayRef<DeclAccessPair> UnqualifiedLookups,
DeclarationNameInfo MemberNameInfo,
const TemplateArgumentListInfo *TemplateArgs)
: Expr(CXXDependentScopeMemberExprClass, Ctx.DependentTy, VK_LValue,
OK_Ordinary),
- Base(Base), BaseType(BaseType), QualifierLoc(QualifierLoc),
- MemberNameInfo(MemberNameInfo) {
+ Base(Base), BaseType(BaseType), MemberNameInfo(MemberNameInfo),
+ OperatorLoc(OperatorLoc) {
CXXDependentScopeMemberExprBits.IsArrow = IsArrow;
+ CXXDependentScopeMemberExprBits.HasQualifier = QualifierLoc.hasQualifier();
+ CXXDependentScopeMemberExprBits.NumUnqualifiedLookups =
+ UnqualifiedLookups.size();
CXXDependentScopeMemberExprBits.HasTemplateKWAndArgsInfo =
(TemplateArgs != nullptr) || TemplateKWLoc.isValid();
- CXXDependentScopeMemberExprBits.HasFirstQualifierFoundInScope =
- FirstQualifierFoundInScope != nullptr;
- CXXDependentScopeMemberExprBits.OperatorLoc = OperatorLoc;
+
+ if (hasQualifier())
+ new (getTrailingObjects<NestedNameSpecifierLoc>())
+ NestedNameSpecifierLoc(QualifierLoc);
+
+ std::uninitialized_copy_n(UnqualifiedLookups.data(),
+ UnqualifiedLookups.size(),
----------------
erichkeane wrote:
Any reason for `std::uninitialized_copy_n` vs `std::uninitialized_copy`? Don't mind, mostly curious.
https://github.com/llvm/llvm-project/pull/92957
More information about the cfe-commits
mailing list