diff options
-rw-r--r-- | lib/Parse/ParseCXXInlineMethods.cpp | 3 | ||||
-rw-r--r-- | test/Parser/DelayedTemplateParsing.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/Parse/ParseCXXInlineMethods.cpp b/lib/Parse/ParseCXXInlineMethods.cpp index 2877628f26..66f26f86f4 100644 --- a/lib/Parse/ParseCXXInlineMethods.cpp +++ b/lib/Parse/ParseCXXInlineMethods.cpp @@ -110,8 +110,7 @@ Decl *Parser::ParseCXXInlineMethodDef(AccessSpecifier AS, if (getLang().DelayedTemplateParsing && ((Actions.CurContext->isDependentContext() || TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) && - !Actions.IsInsideALocalClassWithinATemplateFunction()) && - !D.getDeclSpec().isFriendSpecified()) { + !Actions.IsInsideALocalClassWithinATemplateFunction())) { if (FnD) { LateParsedTemplatedFunction *LPT = diff --git a/test/Parser/DelayedTemplateParsing.cpp b/test/Parser/DelayedTemplateParsing.cpp index b02c4026c0..7fa87d98e5 100644 --- a/test/Parser/DelayedTemplateParsing.cpp +++ b/test/Parser/DelayedTemplateParsing.cpp @@ -12,6 +12,10 @@ template <class T> class B { void foo4() { } // expected-note {{previous definition is here}} expected-note {{previous definition is here}} void foo4() { } // expected-error {{class member cannot be redeclared}} expected-error {{redefinition of 'foo4'}} expected-note {{previous definition is here}} + + friend void foo3() { + undeclared(); + } }; |