public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Carsey, Jaben" <jaben.carsey@intel.com>
To: "Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: "Gao, Liming" <liming.gao@intel.com>
Subject: Re: [Patch] BaseTools: Add check for the string type whether is same
Date: Mon, 15 Oct 2018 17:43:15 +0000	[thread overview]
Message-ID: <CB6E33457884FA40993F35157061515CA4165F0C@FMSMSX103.amr.corp.intel.com> (raw)
In-Reply-To: <1539607503-8048-1-git-send-email-yonghong.zhu@intel.com>

Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Yonghong Zhu
> Sent: Monday, October 15, 2018 5:45 AM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming <liming.gao@intel.com>
> Subject: [edk2] [Patch] BaseTools: Add check for the string type whether is
> same
> 
> From: zhijufan <zhijux.fan@intel.com>
> 
> 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 <liming.gao@intel.com>
> Cc: Yonghong Zhu <yonghong.zhu@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
> ---
>  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
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


      reply	other threads:[~2018-10-15 17:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-15 12:45 [Patch] BaseTools: Add check for the string type whether is same Yonghong Zhu
2018-10-15 17:43 ` Carsey, Jaben [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CB6E33457884FA40993F35157061515CA4165F0C@FMSMSX103.amr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox