diff --git a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp b/clang/lib/Edit/RewriteObjCFoundationAPI.cpp
index f89526a..b53a70d 100644
--- a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp
+++ b/clang/lib/Edit/RewriteObjCFoundationAPI.cpp
@@ -82,7 +82,7 @@
        (NS.getNSDictionarySelector(
                               NSAPI::NSDict_dictionaryWithDictionary) == Sel ||
         NS.getNSDictionarySelector(NSAPI::NSDict_initWithDictionary) == Sel))) {
-    
+
     commit.replaceWithInner(Msg->getSourceRange(),
                            Msg->getArg(0)->getSourceRange());
     return true;
@@ -726,7 +726,7 @@
     } else
       break;
   }
-  
+
   if (!UpperU.hasValue() && !UpperL.hasValue())
     UpperU = UpperL = true;
   else if (UpperU.hasValue() && !UpperL.hasValue())
@@ -738,7 +738,7 @@
   Info.L = *UpperL ? "L" : "l";
   Info.LL = *UpperL ? "LL" : "ll";
   Info.F = UpperF ? "F" : "f";
-  
+
   Info.Hex = Info.Octal = false;
   if (text.startswith("0x"))
     Info.Hex = true;
@@ -851,7 +851,7 @@
   // Try to modify the literal make it the same type as the method call.
   // -Modify the suffix, and/or
   // -Change integer to float
-  
+
   LiteralInfo LitInfo;
   bool isIntZero = false;
   if (const IntegerLiteral *IntE = dyn_cast<IntegerLiteral>(literalE))
@@ -862,7 +862,7 @@
   // Not easy to do int -> float with hex/octal and uncommon anyway.
   if (!LitIsFloat && CallIsFloating && (LitInfo.Hex || LitInfo.Octal))
     return rewriteToNumericBoxedExpression(Msg, NS, commit);
-  
+
   SourceLocation LitB = LitInfo.WithoutSuffRange.getBegin();
   SourceLocation LitE = LitInfo.WithoutSuffRange.getEnd();
 
@@ -879,7 +879,7 @@
   } else {
     if (CallIsUnsigned)
       commit.insert(LitE, LitInfo.U);
-  
+
     if (CallIsLong)
       commit.insert(LitE, LitInfo.L);
     else if (CallIsLongLong)
@@ -997,7 +997,7 @@
   uint64_t FinalTySize = Ctx.getTypeSize(FinalTy);
   uint64_t OrigTySize = Ctx.getTypeSize(OrigTy);
 
-  bool isTruncated = FinalTySize < OrigTySize; 
+  bool isTruncated = FinalTySize < OrigTySize;
   bool needsCast = false;
 
   if (const ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(Arg)) {
@@ -1090,7 +1090,7 @@
   }
 
   if (needsCast) {
-    DiagnosticsEngine &Diags = Ctx.getDiagnostics(); 
+    DiagnosticsEngine &Diags = Ctx.getDiagnostics();
     // FIXME: Use a custom category name to distinguish migration diagnostics.
     unsigned diagID = Diags.getCustomDiagID(DiagnosticsEngine::Warning,
                        "converting to boxing syntax requires casting %0 to %1");
@@ -1145,7 +1145,7 @@
         commit.insertBefore(ArgRange.getBegin(), "@");
       else
         commit.insertWrap("@(", ArgRange, ")");
-      
+
       return true;
     }
   }
