Fix a diagnostics crasher with -Wmissing-noreturn in Objective-C
methods, and improve the diagnostic slightly along the way. Fixes
<rdar://problem/10098695>.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139446 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 823cbf7..30b6b0c 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -382,7 +382,10 @@
         if (ReturnsVoid && !HasNoReturn && CD.diag_NeverFallThroughOrReturn) {
           if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
             S.Diag(Compound->getLBracLoc(), CD.diag_NeverFallThroughOrReturn)
-              << FD;
+              << 0 << FD;
+          } else if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D)) {
+            S.Diag(Compound->getLBracLoc(), CD.diag_NeverFallThroughOrReturn)
+              << 1 << MD;
           } else {
             S.Diag(Compound->getLBracLoc(), CD.diag_NeverFallThroughOrReturn);
           }