diff options
-rw-r--r-- | clang/lib/Parse/ParseCXXInlineMethods.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseCXXInlineMethods.cpp b/clang/lib/Parse/ParseCXXInlineMethods.cpp index 3db75c7ee79..3c5134268e8 100644 --- a/clang/lib/Parse/ParseCXXInlineMethods.cpp +++ b/clang/lib/Parse/ParseCXXInlineMethods.cpp @@ -381,7 +381,7 @@ void Parser::ParseLexedMethodDeclaration(LateParsedMethodDeclaration &LM) { assert (!OldParam->hasUnparsedDefaultArg()); if (OldParam->hasUninstantiatedDefaultArg()) Param->setUninstantiatedDefaultArg( - Param->getUninstantiatedDefaultArg()); + OldParam->getUninstantiatedDefaultArg()); else Param->setDefaultArg(OldParam->getInit()); } diff --git a/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp b/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp index 5da00837cc0..3c7111d0583 100644 --- a/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp +++ b/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp @@ -75,3 +75,12 @@ namespace Duplicates { // here. template struct A<int>; } + +namespace PR28082 { +struct S { + template <int> + int f(int = 0); + template <> + int f<0>(int); // expected-warning {{Microsoft extension}} +}; +} |