From 54faba4f7f3f0e8f1376da1c459312596ad5486d Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Wed, 21 Mar 2012 20:56:29 +0000 Subject: [PATCH] For enums with no tag name, display its location in the diagnostic instead of displaying ''. // rdar://11082110 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153219 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaStmt.cpp | 6 +++--- test/Sema/switch.c | 49 +++++++++++++++++++++++++++++-------------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 1ddedcfe68..6db66a5eff 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -881,7 +881,7 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, EI++; if (EI == EIend || EI->first > CI->first) Diag(CI->second->getLHS()->getExprLoc(), diag::warn_not_in_enum) - << ED->getDeclName(); + << CondTypeBeforePromotion; } // See which of case ranges aren't in enum EI = EnumVals.begin(); @@ -892,7 +892,7 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, if (EI == EIend || EI->first != RI->first) { Diag(RI->second->getLHS()->getExprLoc(), diag::warn_not_in_enum) - << ED->getDeclName(); + << CondTypeBeforePromotion; } llvm::APSInt Hi = @@ -902,7 +902,7 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, EI++; if (EI == EIend || EI->first != Hi) Diag(RI->second->getRHS()->getExprLoc(), diag::warn_not_in_enum) - << ED->getDeclName(); + << CondTypeBeforePromotion; } // Check which enum vals aren't in switch diff --git a/test/Sema/switch.c b/test/Sema/switch.c index 5c8ebf516c..a7a7f60492 100644 --- a/test/Sema/switch.c +++ b/test/Sema/switch.c @@ -109,14 +109,14 @@ void test7() { switch(a) { case A: case B: - case 3: // expected-warning{{case value not in enumerated type ''}} + case 3: // expected-warning{{case value not in enumerated type 'enum