From 999dd85e16a99e1e762a7cbd858065bf5bf9fd2f Mon Sep 17 00:00:00 2001 From: Kaelyn Takata Date: Tue, 2 Dec 2014 23:32:20 +0000 Subject: [PATCH] Ensure typos in the default values of template parameters get diagnosed. llvm-svn: 223177 --- clang/lib/Parse/ParseTemplate.cpp | 2 +- clang/test/SemaCXX/default2.cpp | 6 ++++++ clang/test/SemaCXX/typo-correction-delayed.cpp | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index 2f1c189..ba1f985 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -676,7 +676,7 @@ Parser::ParseNonTypeTemplateParameter(unsigned Depth, unsigned Position) { GreaterThanIsOperatorScope G(GreaterThanIsOperator, false); EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated); - DefaultArg = ParseAssignmentExpression(); + DefaultArg = Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression()); if (DefaultArg.isInvalid()) SkipUntil(tok::comma, tok::greater, StopAtSemi | StopBeforeMatch); } diff --git a/clang/test/SemaCXX/default2.cpp b/clang/test/SemaCXX/default2.cpp index 1626044..c4d40b4 100644 --- a/clang/test/SemaCXX/default2.cpp +++ b/clang/test/SemaCXX/default2.cpp @@ -122,3 +122,9 @@ class XX { void A(int length = -1 ) { } void B() { A(); } }; + +template struct S {}; // expected-error-re {{use of undeclared identifier 'I'{{$}}}} +S<1> s; + +template struct T {}; // expected-error-re {{use of undeclared identifier 'I2'{{$}}}} +T<0, 1> t; diff --git a/clang/test/SemaCXX/typo-correction-delayed.cpp b/clang/test/SemaCXX/typo-correction-delayed.cpp index bff1d76..7bf9258 100644 --- a/clang/test/SemaCXX/typo-correction-delayed.cpp +++ b/clang/test/SemaCXX/typo-correction-delayed.cpp @@ -102,3 +102,7 @@ void f(int *i) { __atomic_load(i, i, something_something); // expected-error-re {{use of undeclared identifier 'something_something'{{$}}}} } } + +const int DefaultArg = 9; // expected-note {{'DefaultArg' declared here}} +template struct S {}; // expected-error {{use of undeclared identifier 'defaultArg'; did you mean 'DefaultArg'?}} +S<1> s; -- 2.7.4