Reviewed-by: Jaben Carsey <[email protected]>
> -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Yonghong Zhu > Sent: Monday, October 15, 2018 5:45 AM > To: [email protected] > Cc: Gao, Liming <[email protected]> > Subject: [edk2] [Patch] BaseTools: Add check for the string type whether is > same > > From: zhijufan <[email protected]> > > Relational and equality operators require both operands to be of > the same type. > Treat the string 'A' and "A" as same type, but for "A" and L"A" > are not same type since one is general string, another is unicode > string. > > True:'A'<'B', "A"<"B" 'A'<"B", L'A'<L'B', L"A"<L"B", L'A'<L"B" > Error:'A'<L'B', 'A'<L"B", "A'<L'B' > > Cc: Liming Gao <[email protected]> > Cc: Yonghong Zhu <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Zhiju.Fan <[email protected]> > --- > BaseTools/Source/Python/Common/Expression.py | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/BaseTools/Source/Python/Common/Expression.py > b/BaseTools/Source/Python/Common/Expression.py > index 78c69fa..84898f7 100644 > --- a/BaseTools/Source/Python/Common/Expression.py > +++ b/BaseTools/Source/Python/Common/Expression.py > @@ -295,12 +295,12 @@ class ValueExpression(BaseExpression): > # bitwise and logical operation between number and > boolean is > allowed > pass > else: > raise BadExpression(ERR_EXPR_TYPE) > if isinstance(Oprand1, type('')) and isinstance(Oprand2, > type('')): > - if (Oprand1.startswith('L"') and not > Oprand2.startswith('L"')) or \ > - (not Oprand1.startswith('L"') and > Oprand2.startswith('L"')): > + if ((Oprand1.startswith('L"') or Oprand1.startswith('L')) > and (not > Oprand2.startswith('L"')) and (not Oprand2.startswith("L'"))) or \ > + (((not Oprand1.startswith('L"')) and (not > Oprand1.startswith("L'"))) and (Oprand2.startswith('L"') or > Oprand2.startswith('L'))): > raise BadExpression(ERR_STRING_CMP % (Oprand1, Operator, > Oprand2)) > if 'in' in Operator and isinstance(Oprand2, type('')): > Oprand2 = Oprand2.split() > EvalStr = 'Oprand1 ' + Operator + ' Oprand2' > > @@ -825,10 +825,12 @@ class ValueExpressionEx(ValueExpression): > except BadExpression as Value: > if self.PcdType in TAB_PCD_NUMERIC_TYPES: > PcdValue = PcdValue.strip() > if PcdValue.startswith('{') and PcdValue.endswith('}'): > PcdValue = SplitPcdValueString(PcdValue[1:-1]) > + if ERR_STRING_CMP.split(':')[0] in Value.message: > + raise BadExpression("Type: %s, Value: %s, %s" % > (self.PcdType, > PcdValue, Value)) > if isinstance(PcdValue, type([])): > TmpValue = 0 > Size = 0 > ValueType = '' > for Item in PcdValue: > -- > 2.6.1.windows.1 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

