diff options
-rw-r--r-- | clang/lib/Sema/SemaExprMember.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/member-expr.cpp | 22 |
2 files changed, 1 insertions, 23 deletions
diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp index 47b18dc39ea..1c34ace8562 100644 --- a/clang/lib/Sema/SemaExprMember.cpp +++ b/clang/lib/Sema/SemaExprMember.cpp @@ -243,6 +243,7 @@ Sema::BuildPossibleImplicitMemberExpr(const CXXScopeSpec &SS, return BuildImplicitMemberExpr(SS, TemplateKWLoc, R, TemplateArgs, true, S); case IMA_Mixed: + case IMA_Mixed_Unrelated: case IMA_Unresolved: return BuildImplicitMemberExpr(SS, TemplateKWLoc, R, TemplateArgs, false, S); @@ -251,7 +252,6 @@ Sema::BuildPossibleImplicitMemberExpr(const CXXScopeSpec &SS, Diag(R.getNameLoc(), diag::warn_cxx98_compat_non_static_member_use) << R.getLookupNameInfo().getName(); // Fall through. - case IMA_Mixed_Unrelated: case IMA_Static: case IMA_Abstract: case IMA_Mixed_StaticContext: diff --git a/clang/test/SemaCXX/member-expr.cpp b/clang/test/SemaCXX/member-expr.cpp index 53f4673a3d4..3571fa748b8 100644 --- a/clang/test/SemaCXX/member-expr.cpp +++ b/clang/test/SemaCXX/member-expr.cpp @@ -228,25 +228,3 @@ namespace pr16676 { .i; // expected-error {{member reference type 'pr16676::S *' is a pointer; did you mean to use '->'}} } } - -namespace unrelated_class_instance_call_should_be_illformed { - - -struct A { - void bar(int) { } - static void bar(double) { } - - void g(int*); - static void g(char *); -}; - - -struct B { - void f() { - A::bar(3); //expected-error{{call to non-static member}} - A::g((int*)0); //expected-error{{call to non-static member}} - } -}; - - -} // ns unrelated_class_mixed_static_nonstatic_call_should_be_illformed |