rsmith added inline comments.

================
Comment at: lib/AST/Expr.cpp:1413
@@ +1412,3 @@
+    for (auto *EnableIf : Method->specific_attrs<EnableIfAttr>()) {
+      if (EnableIf->getCond()->isTypeDependent())
+        return false;
----------------
You should presumably be checking `isValueDependent` here.

I also don't see any test changes covering the handling of this attribute, and 
it's not completely clear to me why a dependent enable_if attribute would cause 
a member to be treated as not being a member of the current instantiation. This 
should probably be grouped with the check for a member with a dependent type 
down on line 1458, not as part of the determination of whether we have a member 
of the current instantiation.

================
Comment at: lib/AST/Expr.cpp:1456
@@ +1455,3 @@
+  // the field is type dependent. (14.6.2.1 [temp.dep.type])
+  if (E->isTypeDependent()
+   && IsMemberOfCurrentInstantiation(base, memberdecl)
----------------
rsmith wrote:
> Please clang-format this.
The `E->isTypeDependent()` test should be in `isMemberOfCurrentInstantiation` 
-- right now, that function is determining whether we have a member of the 
current instantiation or a member of a non-dependent type.

================
Comment at: lib/AST/Expr.cpp:1456-1458
@@ +1455,5 @@
+  // the field is type dependent. (14.6.2.1 [temp.dep.type])
+  if (E->isTypeDependent()
+   && IsMemberOfCurrentInstantiation(base, memberdecl)
+   && !memberdecl->getType()->isDependentType()) {
+    assert(!ty->isDependentType());
----------------
Please clang-format this.

================
Comment at: test/CXX/temp/temp.res/temp.dep/temp.dep.expr/p5.cpp:14-15
@@ +13,4 @@
+      i = nullptr;
+      (*this).i = j; // FIXME {{incompatible type}}
+      this->i = j; // FIXME {{incompatible type}}
+      A::i = j; // expected-error {{incompatible type}}
----------------
Do you know why we don't diagnose this?


https://reviews.llvm.org/D22476



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

Reply via email to