diff options
author | jlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-02-08 05:22:26 +0000 |
---|---|---|
committer | jlin16 <jlin16@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-02-08 05:22:26 +0000 |
commit | 96e6b8e67b359af8d0c97a5ebf8a00d9be29ce08 (patch) | |
tree | a808362d71aeebe9039bf2b40f61e0770d8def23 /BaseTools/Source/Python/Ecc | |
parent | 58125fb3f9dda7f15a540b16595dc24dab0dd423 (diff) | |
download | edk2-platforms-96e6b8e67b359af8d0c97a5ebf8a00d9be29ce08.tar.xz |
Update ECC predicate expression checks for brace-quoted and boolean pointer variables.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9946 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'BaseTools/Source/Python/Ecc')
-rw-r--r-- | BaseTools/Source/Python/Ecc/c.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/BaseTools/Source/Python/Ecc/c.py b/BaseTools/Source/Python/Ecc/c.py index b8b1d2d6f5..989ba7091d 100644 --- a/BaseTools/Source/Python/Ecc/c.py +++ b/BaseTools/Source/Python/Ecc/c.py @@ -742,7 +742,7 @@ def SplitPredicateByOp(Str, Op, IsFuncCalling = False): return [Name]
Name = Str[0:Index + IndexInRemainingStr].strip()
- Value = Str[Index+IndexInRemainingStr+len(Op):].strip()
+ Value = Str[Index+IndexInRemainingStr+len(Op):].strip().strip(')')
return [Name, Value]
TmpStr = Str.rstrip(';').rstrip(')')
@@ -759,6 +759,8 @@ def SplitPredicateByOp(Str, Op, IsFuncCalling = False): TmpStr = Str[0:Index - 1]
def SplitPredicateStr(Str):
+
+ Str = Str.lstrip('(')
IsFuncCalling = False
p = GetFuncDeclPattern()
TmpStr = Str.replace('.', '').replace('->', '')
@@ -1219,6 +1221,16 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall = False, Target Type = GetRealType(Type, TypedefDict, TargetType)
return Type
+def GetTypeFromArray(Type, Var):
+ Count = Var.count('[')
+
+ while Count > 0:
+ Type = Type.strip()
+ Type = Type.rstrip('*')
+ Count = Count - 1
+
+ return Type
+
def CheckFuncLayoutReturnType(FullFileName):
ErrorMsgList = []
@@ -1931,6 +1943,7 @@ def CheckPointerNullComparison(FullFileName): FuncReturnTypeDict[PredVarStr] = Type
if Type == None:
continue
+ Type = GetTypeFromArray(Type, PredVarStr)
if Type.find('*') != -1:
PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_COMPARISON_NULL_TYPE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])
|