cor3ntin marked an inline comment as done.
cor3ntin added inline comments.

================
Comment at: clang/lib/CodeGen/CGExpr.cpp:4283
+  if (HasExplicitObjectParameter) {
+    const VarDecl *D = cast<CXXMethodDecl>(CurCodeDecl)->getParamDecl(0);
+    auto It = LocalDeclMap.find(D);
----------------
aaron.ballman wrote:
> Above we did `dyn_cast_if_present<CXXMethodDecl>(CurCodeDecl)` and here we're 
> doing a straight-up `cast<>`. Which is incorrect?
neither, once `HasExplicitObjectParameter` is true we know it's a CXXMethodDecl


================
Comment at: clang/test/SemaCXX/cxx2b-deducing-this.cpp:42
+    int f(this B&, int); // expected-warning {{hides overloaded virtual 
function}}
+    int f(this B&);  // expected-error {{an explicit object parameter cannot 
appear in a virtual function}}
+    int g(this B&); // expected-warning {{hides overloaded virtual function}}
----------------
aaron.ballman wrote:
> According to the paper, this is accepted but `B::f()` does not override 
> `A::f()`.
> 
> https://eel.is/c++draft/dcl.fct#6.sentence-3
> 
> `B::f()` is not declared as virtual, only `A::f()` is.
> 
> When this gets corrected, please add some codegen tests to demonstrate that a 
> call to `f()` does not dispatch to `B::f()` unless the static type of the 
> object is `B`.
This is this is https://cplusplus.github.io/CWG/issues/2553.html, I will leave 
a comment to clarify


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D140828

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to