While for small numbers, using "node is 0" works with CPython, it is
more portable to use "node == 0". Moreover, with Python 3, this
triggers a syntax warning:
SyntaxWarning: "is" with a literal. Did you mean "=="?
Signed-off-by: Vincent Bernat <[email protected]>
---
scripts/gdb/linux/rbtree.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/gdb/linux/rbtree.py b/scripts/gdb/linux/rbtree.py
index 39db889b874c..87d4738984d2 100644
--- a/scripts/gdb/linux/rbtree.py
+++ b/scripts/gdb/linux/rbtree.py
@@ -17,7 +17,7 @@ def rb_first(root):
raise gdb.GdbError("Must be struct rb_root not {}".format(root.type))
node = root['rb_node']
- if node is 0:
+ if node == 0:
return None
while node['rb_left']:
@@ -33,7 +33,7 @@ def rb_last(root):
raise gdb.GdbError("Must be struct rb_root not {}".format(root.type))
node = root['rb_node']
- if node is 0:
+ if node == 0:
return None
while node['rb_right']:
--
2.26.0.rc2
Hi Vincent,
On 20/03/2020 16:38, Vincent Bernat wrote:
> While for small numbers, using "node is 0" works with CPython, it is
> more portable to use "node == 0". Moreover, with Python 3, this
> triggers a syntax warning:
Oh, I thought python encouraged the 'is' style.
>
> SyntaxWarning: "is" with a literal. Did you mean "=="?
Of course that means it clearly doesn't in this case...
> Signed-off-by: Vincent Bernat <[email protected]>
Change looks acceptable to me given the report, though a potential
alternative below, otherwise
Reviewed-by: Kieran Bingham <[email protected]>
> ---
> scripts/gdb/linux/rbtree.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/gdb/linux/rbtree.py b/scripts/gdb/linux/rbtree.py
> index 39db889b874c..87d4738984d2 100644
> --- a/scripts/gdb/linux/rbtree.py
> +++ b/scripts/gdb/linux/rbtree.py
> @@ -17,7 +17,7 @@ def rb_first(root):
> raise gdb.GdbError("Must be struct rb_root not {}".format(root.type))
>
> node = root['rb_node']
> - if node is 0:
> + if node == 0:
Given the nature of the statement, would
if not node:
return None
be any more appropriate ?
> return None
>
> while node['rb_left']:
> @@ -33,7 +33,7 @@ def rb_last(root):
> raise gdb.GdbError("Must be struct rb_root not {}".format(root.type))
>
> node = root['rb_node']
> - if node is 0:
> + if node == 0:
> return None
>
> while node['rb_right']:
>
--
--
Kieran
Quoting Vincent Bernat (2020-03-20 09:38:20)
> While for small numbers, using "node is 0" works with CPython, it is
> more portable to use "node == 0". Moreover, with Python 3, this
> triggers a syntax warning:
>
> SyntaxWarning: "is" with a literal. Did you mean "=="?
>
> Signed-off-by: Vincent Bernat <[email protected]>
> ---
Reviewed-by: Stephen Boyd <[email protected]>
❦ 20 mars 2020 16:47 +00, Kieran Bingham:
> Oh, I thought python encouraged the 'is' style.
Usually, only for "None", "False" or "True" (but for the latest, this
doesn't usually make sense).
> Given the nature of the statement, would
>
> if not node:
> return None
>
> be any more appropriate ?
It would be more consistent with the other uses (like the while below
and the ifs even further). However, I don't fully understand this code
(notably the "node = node.address.cast(...)" where node is not defined
yet and node is replaced by the value of "root['rb_node']" just after),
so can't say for sure node cannot be equal to something eveluating to
False in some conditions.
--
Writing is easy; all you do is sit staring at the blank sheet of paper until
drops of blood form on your forehead.
-- Gene Fowler