zhouyizhou added a comment. In D137263#3909722 <https://reviews.llvm.org/D137263#3909722>, @MaskRay wrote:
> I find that if I comment out ` > cast<CXXRecordDecl>(Shadow->getDeclContext())->removeConversion(Shadow);` in > `Sema::HideUsingShadowDecl`, no test fails... So we have a missing coverage > issue. Hi I found a counterexample for above case, excited! ! and I could not hesitate to report you that good news ;-) struct A { struct Nested {}; operator Nested*() {return 0;}; }; struct B : A { using A::operator typename A::Nested*; operator typename A::Nested *() { struct A * thi = this; return *thi; }; }; int main() { struct B b; auto s = *b; } After comment out ` cast<CXXRecordDecl>(Shadow->getDeclContext())->removeConversion(Shadow);` clang++ report following: using.C:21:11: error: use of overloaded operator '*' is ambiguous (operand type 'struct B') auto s = *b; ^~ using.C:21:11: note: because of ambiguity in conversion of 'struct B' to 'A::Nested *' using.C:4:9: note: candidate function operator Nested*() {return 0;}; ^ using.C:10:9: note: candidate function operator typename A::Nested *() { ^ using.C:21:11: note: built-in candidate operator*(struct A::Nested *) auto s = *b; ^ using.C:21:11: note: built-in candidate operator*(const struct A::Nested *) 1 error generated. So I think we could add above to the test case. What's your opinion? I learned a lot under your guidance! Thank you both Sincerely Zhouyi CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137263/new/ https://reviews.llvm.org/D137263 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits