diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2022-09-22 23:32:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-22 17:32:16 -0400 |
commit | 705ac4cd88f3efae44309cd46494780ffaa93ca1 (patch) | |
tree | 41c2877ef252d4bc9efb518e88b624423299ad11 /tests/functional/c | |
parent | 1918a4d21ca803d43c65eaa198b905bf2cf5be3f (diff) | |
download | pylint-git-705ac4cd88f3efae44309cd46494780ffaa93ca1.tar.gz |
Add ``consider-using-augmented-assign`` checker (#7514)
Co-authored-by: clavedeluna <danalitovsky+git@gmail.com>
Co-authored-by: Mark Byrne <31762852+mbyrnepr2@users.noreply.github.com>
Diffstat (limited to 'tests/functional/c')
-rw-r--r-- | tests/functional/c/consider/consider_using_augmented_assign.py | 77 | ||||
-rw-r--r-- | tests/functional/c/consider/consider_using_augmented_assign.txt | 20 |
2 files changed, 97 insertions, 0 deletions
diff --git a/tests/functional/c/consider/consider_using_augmented_assign.py b/tests/functional/c/consider/consider_using_augmented_assign.py new file mode 100644 index 000000000..e4af95686 --- /dev/null +++ b/tests/functional/c/consider/consider_using_augmented_assign.py @@ -0,0 +1,77 @@ +"""Tests for consider-using-augmented-assign.""" + +# pylint: disable=invalid-name,too-few-public-methods,import-error,consider-using-f-string + +from unknown import Unknown + +x = 1 +x = x + 1 # [consider-using-augmented-assign] +x = 1 + x # [consider-using-augmented-assign] +x, y = 1 + x, 2 + x +# We don't warn on intricate expressions as we lack knowledge +# of simplifying such expressions which is necessary to see +# if they can become augmented +x = 1 + x - 2 +x = 1 + x + 2 + +# For anything other than a float or an int we only want to warn on +# assignments where the 'itself' is on the left side of the assignment +my_list = [2, 3, 4] +my_list = [1] + my_list + + +class MyClass: + """Simple base class.""" + + def __init__(self) -> None: + self.x = 1 + self.x = self.x + 1 # [consider-using-augmented-assign] + self.x = 1 + self.x # [consider-using-augmented-assign] + + x = 1 # [redefined-outer-name] + self.x = x + + +instance = MyClass() + +x = instance.x + 1 + +my_str = "" +my_str = my_str + "foo" # [consider-using-augmented-assign] +my_str = "foo" + my_str + +my_bytes = b"" +my_bytes = my_bytes + b"foo" # [consider-using-augmented-assign] +my_bytes = b"foo" + my_bytes + + +def return_str() -> str: + """Return a string.""" + return "" + + +# Currently we disregard all calls +my_str = return_str() + my_str + +my_str = my_str % return_str() +my_str = my_str % 1 # [consider-using-augmented-assign] +my_str = my_str % (1, 2) # [consider-using-augmented-assign] +my_str = "%s" % my_str +my_str = return_str() % my_str +my_str = Unknown % my_str +my_str = my_str % Unknown # [consider-using-augmented-assign] + +x = x - 3 # [consider-using-augmented-assign] +x = x * 3 # [consider-using-augmented-assign] +x = x / 3 # [consider-using-augmented-assign] +x = x // 3 # [consider-using-augmented-assign] +x = x << 3 # [consider-using-augmented-assign] +x = x >> 3 # [consider-using-augmented-assign] +x = x % 3 # [consider-using-augmented-assign] +x = x**3 # [consider-using-augmented-assign] +x = x ^ 3 # [consider-using-augmented-assign] +x = x & 3 # [consider-using-augmented-assign] +x = x > 3 +x = x < 3 +x = x >= 3 +x = x <= 3 diff --git a/tests/functional/c/consider/consider_using_augmented_assign.txt b/tests/functional/c/consider/consider_using_augmented_assign.txt new file mode 100644 index 000000000..1684953e9 --- /dev/null +++ b/tests/functional/c/consider/consider_using_augmented_assign.txt @@ -0,0 +1,20 @@ +consider-using-augmented-assign:8:0:8:9::Use '+=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:9:0:9:9::Use '+=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:28:8:28:27:MyClass.__init__:Use '+=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:29:8:29:27:MyClass.__init__:Use '+=' to do an augmented assign directly:INFERENCE +redefined-outer-name:31:8:31:9:MyClass.__init__:Redefining name 'x' from outer scope (line 7):UNDEFINED +consider-using-augmented-assign:40:0:40:23::Use '+=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:44:0:44:28::Use '+=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:57:0:57:19::Use '%=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:58:0:58:24::Use '%=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:62:0:62:25::Use '%=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:64:0:64:9::Use '-=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:65:0:65:9::Use '*=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:66:0:66:9::Use '/=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:67:0:67:10::Use '//=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:68:0:68:10::Use '<<=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:69:0:69:10::Use '>>=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:70:0:70:9::Use '%=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:71:0:71:8::Use '**=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:72:0:72:9::Use '^=' to do an augmented assign directly:INFERENCE +consider-using-augmented-assign:73:0:73:9::Use '&=' to do an augmented assign directly:INFERENCE |