]> granicus.if.org Git - clang/commitdiff
support the warn_unused_result in C++ class methods
authorNuno Lopes <nunoplopes@sapo.pt>
Thu, 24 Dec 2009 00:28:18 +0000 (00:28 +0000)
committerNuno Lopes <nunoplopes@sapo.pt>
Thu, 24 Dec 2009 00:28:18 +0000 (00:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92095 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Expr.cpp
test/SemaCXX/warn-unused-variables.cpp

index cb0165c8df7bc753f82f1514feaba70c57b19a45..960d83d103a58613c2205188e9960b7ebbf72fee 100644 (file)
@@ -402,6 +402,8 @@ Decl *CallExpr::getCalleeDecl() {
   Expr *CEE = getCallee()->IgnoreParenCasts();
   if (DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(CEE))
     return DRE->getDecl();
+  if (MemberExpr *ME = dyn_cast<MemberExpr>(CEE))
+    return ME->getMemberDecl();
 
   return 0;
 }
index 83a61bf8e007a06b1f923ecb0aac303f1ce05353..5620248f5005f9fe82b18cac0e0a560141f8aed3 100644 (file)
@@ -32,3 +32,14 @@ namespace PR5531 {
     C();
   }
 }
+
+
+struct X {
+ int foo() __attribute__((warn_unused_result));
+};
+
+void bah() {
+  X x, *x2;
+  x.foo(); // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
+  x2->foo(); // expected-warning {{ignoring return value of function declared with warn_unused_result attribute}}
+}