[PATCH] D149009: [Sema]Select correct lexical context during template instantiate

Congcong Cai via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Apr 24 16:04:36 PDT 2023


HerrCai0907 added inline comments.


================
Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:3598
+      FD->isDefined(FDFriend, true) &&
+      FDFriend->getFriendObjectKind() != Decl::FriendObjectKind::FOK_None) {
+    // if Function defined by inline friend, use inline fried as DeclContext
----------------
erichkeane wrote:
> So in what case would the currently-instantiated definition NOT also be a friend?  I would think this last condition should be able to be an assert instead.
Last condition cannot be an assert, define and declare in difference place is common case, what we need to identifier in here is inlined friend define.


================
Comment at: clang/lib/Sema/SemaTemplateDeduction.cpp:3601
+    FD = const_cast<FunctionDecl *>(FDFriend);
+    Owner = FD->getDescribedFunctionTemplate()->getLexicalDeclContext();
+  }
----------------
erichkeane wrote:
> I THINK this should just be:
> `Owner = FD->getLexicalDeclContext()` here.  
The old `Owner` is `FunctionTemplate->getLexicalDeclContext()`. So I think we should use same level owner.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149009



More information about the cfe-commits mailing list