diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index 6ab1540..fa69d5c 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -4812,7 +4812,8 @@ void Parser::ParseFunctionDeclarator(Declarator &D,
         (D.getContext() == Declarator::MemberContext ||
          (D.getContext() == Declarator::FileContext &&
           D.getCXXScopeSpec().isValid() &&
-          Actions.CurContext->isRecord()));
+          Actions.CurContext->isRecord())) &&
+        !D.getDeclSpec().isFriendSpecified();
       Sema::CXXThisScopeRAII ThisScope(Actions,
                                dyn_cast<CXXRecordDecl>(Actions.CurContext),
                                DS.getTypeQualifiers() |
