Hi Richard, Thanks for reviewing.
I have updated patch to handle this issue in typo-correction. This can be further improved is we can check if suggested typo belong to base class or not. I have merged test case in using-decl-1.cpp as suggested. Please have a look. Hi rjmccall, rsmith, http://reviews.llvm.org/D3051 CHANGE SINCE LAST DIFF http://reviews.llvm.org/D3051?vs=7764&id=8699#toc Files: lib/Sema/SemaDeclCXX.cpp test/SemaCXX/using-decl-1.cpp Index: lib/Sema/SemaDeclCXX.cpp =================================================================== --- lib/Sema/SemaDeclCXX.cpp +++ lib/Sema/SemaDeclCXX.cpp @@ -7326,6 +7326,12 @@ if (!ND || isa<NamespaceDecl>(ND)) return false; + // FIXME: We should check if ND is member of base class of class having + // using declaration and direct base class in case using declaration names + // a constructor. + if (RequireMember && !ND->isCXXClassMember()) + return false; + if (RequireMember && !isa<FieldDecl>(ND) && !isa<CXXMethodDecl>(ND) && !isa<TypeDecl>(ND)) return false; Index: test/SemaCXX/using-decl-1.cpp =================================================================== --- test/SemaCXX/using-decl-1.cpp +++ test/SemaCXX/using-decl-1.cpp @@ -194,3 +194,15 @@ using A::HiddenLocalExtern2; } } + +struct Z { + Z(); +}; + +typedef struct { + Z i; +} S; + +struct Y : S { + using S::S; // expected-error {{no member named 'S' in 'S'}} +};
Index: lib/Sema/SemaDeclCXX.cpp =================================================================== --- lib/Sema/SemaDeclCXX.cpp +++ lib/Sema/SemaDeclCXX.cpp @@ -7326,6 +7326,12 @@ if (!ND || isa<NamespaceDecl>(ND)) return false; + // FIXME: We should check if ND is member of base class of class having + // using declaration and direct base class in case using declaration names + // a constructor. + if (RequireMember && !ND->isCXXClassMember()) + return false; + if (RequireMember && !isa<FieldDecl>(ND) && !isa<CXXMethodDecl>(ND) && !isa<TypeDecl>(ND)) return false; Index: test/SemaCXX/using-decl-1.cpp =================================================================== --- test/SemaCXX/using-decl-1.cpp +++ test/SemaCXX/using-decl-1.cpp @@ -194,3 +194,15 @@ using A::HiddenLocalExtern2; } } + +struct Z { + Z(); +}; + +typedef struct { + Z i; +} S; + +struct Y : S { + using S::S; // expected-error {{no member named 'S' in 'S'}} +};
_______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits