]> granicus.if.org Git - clang/commitdiff
A few small cleanups to r187504. Thanks to dblaikie for the assist.
authorKaelyn Uhrain <rikka@google.com>
Wed, 31 Jul 2013 20:16:17 +0000 (20:16 +0000)
committerKaelyn Uhrain <rikka@google.com>
Wed, 31 Jul 2013 20:16:17 +0000 (20:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187521 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExprCXX.cpp
test/FixIt/fixit.cpp
test/SemaCXX/member-expr.cpp

index 78dce619eabc935770a703e8e08af6898ad3f47f..ee2eb6d02f6afffdc18be31d50d1694163d6ed71 100644 (file)
@@ -5102,14 +5102,13 @@ Sema::ActOnStartCXXMemberReference(Scope *S, Expr *Base, SourceLocation OpLoc,
               << FixItHint::CreateReplacement(OpLoc, ".");
             OpKind = tok::period;
             break;
-          } else {
-            Diag(OpLoc, diag::err_typecheck_member_reference_arrow)
-              << BaseType << Base->getSourceRange();
-            CallExpr *CE = dyn_cast<CallExpr>(Base);
-            if (Decl *CD = (CE ? CE->getCalleeDecl() : 0)) {
-              Diag(CD->getLocStart(),
-                   diag::note_member_reference_arrow_from_operator_arrow);
-            }
+          }
+          Diag(OpLoc, diag::err_typecheck_member_reference_arrow)
+            << BaseType << Base->getSourceRange();
+          CallExpr *CE = dyn_cast<CallExpr>(Base);
+          if (Decl *CD = (CE ? CE->getCalleeDecl() : 0)) {
+            Diag(CD->getLocStart(),
+                 diag::note_member_reference_arrow_from_operator_arrow);
           }
         }
         return ExprError();
index 3bd5b57a4ea4e799ad0e7576515b43265cf819d8..52bbb3849a8fd516cdb9d989ede46d4028eb71dd 100644 (file)
@@ -326,3 +326,15 @@ namespace PR5898 {
     return foo->(x) == y;  // expected-error {{unexpected '->' in function call; perhaps remove the '->'?}}
   }
 }
+
+namespace PR15045 {
+  class Cl0 {
+  public:
+    int a;
+  };
+
+  int f() {
+    Cl0 c;
+    return c->a;  // expected-error {{member reference type 'PR15045::Cl0' is not a pointer; maybe you meant to use '.'?}}
+  }
+}
index e2462aa48d6d33895b381fc4881e5bb1d63bb1aa..cd8951f5f127236b4e16735fe0efb74cf9d1f761 100644 (file)
@@ -79,9 +79,11 @@ namespace test5 {
   };
 
   void test0(int x) {
+    x.A::foo<int>(); // expected-error {{'int' is not a structure or union}}
   }
 
   void test1(A *x) {
+    x.A::foo<int>(); // expected-error {{'test5::A *' is a pointer}}
   }
 
   void test2(A &x) {