efriedma added a comment.

(Partial review; I'll continue reviewing later.)



================
Comment at: clang/lib/Sema/SemaDecl.cpp:1543
+    // in class 'C', where we look up 'f' to determine if we're declaring a
+    // constructor.
+  } else if (D->isInIdentifierNamespace(Lookup.FirstIDNS)) {
----------------
Not really about this patch, but take given the following example:

```
typedef int f;
class C { C (f)(); };
```

It looks like every compiler somehow parses this as an invalid constructor 
declaration.  As far as I can tell, it doesn't conform to the grammar for a 
constructor, though: parentheses aren't allowed after the 
parameter-declaration-clause. So it should declare a member function f, whether 
or not `f` is a type.  Maybe I'm missing something, though.

It doesn't matter for this patch, of course, because you can also write 
`C(f());`, which actually depends on whether `f` is a type.


================
Comment at: clang/test/CXX/basic/basic.scope/basic.scope.class/p2.cpp:154
+
+  static int a = unique_member_function_name(); // expected-error {{undeclared 
identifier}}
+  static int unique_member_function_name();
----------------
I'm seeing a test failure here with this patch applied.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D80977



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D80977: D... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D809... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D809... Eli Friedman via Phabricator via cfe-commits

Reply via email to