From d86a4ad0c84eaf5bb5dbd33036960e997e2352e0 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223177 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParseTemplate.cpp | 2 +- test/SemaCXX/default2.cpp | 6 ++++++ test/SemaCXX/typo-correction-delayed.cpp | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/Parse/ParseTemplate.cpp b/lib/Parse/ParseTemplate.cpp index 2f1c189c1a..ba1f98515e 100644 --- a/lib/Parse/ParseTemplate.cpp +++ b/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/test/SemaCXX/default2.cpp b/test/SemaCXX/default2.cpp index 16260449d4..c4d40b4280 100644 --- a/test/SemaCXX/default2.cpp +++ b/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/test/SemaCXX/typo-correction-delayed.cpp b/test/SemaCXX/typo-correction-delayed.cpp index bff1d7633f..7bf925816d 100644 --- a/test/SemaCXX/typo-correction-delayed.cpp +++ b/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.40.0