From 6a3d9573667ed654c339005fec44d23a7cff3a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Thu, 6 Nov 2008 00:04:52 +0000 Subject: [PATCH] CheckAlpha: Expanded checking to include 'isupper' and 'islower' --- CheckOther.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/CheckOther.cpp b/CheckOther.cpp index efd78d0aa..591e9feb7 100644 --- a/CheckOther.cpp +++ b/CheckOther.cpp @@ -91,11 +91,37 @@ void WarningIsAlpha() { for (const TOKEN *tok = tokens; tok; tok = tok->next) { - bool err = false; - if ( tok->str[0] != '(' ) continue; + bool err = false; + + err |= Match(tok, "( %var% >= 'A' && %var% <= 'Z' )"); + err |= Match(tok, "( * %var% >= 'A' && * %var% <= 'Z' )"); + err |= Match(tok, "( ( %var% >= 'A' ) && ( %var% <= 'Z' ) )"); + err |= Match(tok, "( ( * %var% >= 'A' ) && ( * %var% <= 'Z' ) )"); + if (err) + { + std::ostringstream ostr; + ostr << FileLine(tok) << ": The condition can be simplified; use 'isupper'"; + ReportErr(ostr.str()); + continue; + } + + err = false; + err |= Match(tok, "( %var% >= 'a' && %var% <= 'z' )"); + err |= Match(tok, "( * %var% >= 'a' && * %var% <= 'z' )"); + err |= Match(tok, "( ( %var% >= 'a' ) && ( %var% <= 'z' ) )"); + err |= Match(tok, "( ( * %var% >= 'a' ) && ( * %var% <= 'z' ) )"); + if (err) + { + std::ostringstream ostr; + ostr << FileLine(tok) << ": The condition can be simplified; use 'islower'"; + ReportErr(ostr.str()); + continue; + } + + err = false; err |= Match(tok, "( %var% >= 'A' && %var% <= 'Z' ) || ( %var% >= 'a' && %var% <= 'z' )"); err |= Match(tok, "( %var% >= 'a' && %var% <= 'z' ) || ( %var% >= 'A' && %var% <= 'Z' )"); err |= Match(tok, "( * %var% >= 'A' && * %var% <= 'Z' ) || ( * %var% >= 'a' && * %var% <= 'z' )");