diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | pylint/checkers/typecheck.py | 8 | ||||
-rw-r--r-- | pylint/test/functional/unsubscriptable_value.py | 28 | ||||
-rw-r--r-- | pylint/test/functional/unsubscriptable_value.txt | 28 |
4 files changed, 33 insertions, 33 deletions
@@ -3,7 +3,7 @@ ChangeLog for Pylint -- - * Add new message, 'unsubscriptable-value', that is emitted when + * Add new message, 'unsubscriptable-object', that is emitted when value used in subscription expression doesn't support subscription (i.e. doesn't define __getitem__ method). diff --git a/pylint/checkers/typecheck.py b/pylint/checkers/typecheck.py index f8067ba..8874c63 100644 --- a/pylint/checkers/typecheck.py +++ b/pylint/checkers/typecheck.py @@ -155,7 +155,7 @@ MSGS = { 'Emitted when an instance in membership test expression doesn\'t' 'implement membership protocol (__contains__/__iter__/__getitem__)'), 'E1136': ("Value '%s' is unsubscriptable", - 'unsubscriptable-value', + 'unsubscriptable-object', "Emitted when a subscripted value doesn't support subscription" "(i.e. doesn't define __getitem__ method)"), } @@ -822,19 +822,19 @@ accessed. Python regular expressions are accepted.'} if operator in ['in', 'not in']: self._check_membership_test(right) - @check_messages('unsubscriptable-value') + @check_messages('unsubscriptable-object') def visit_subscript(self, node): if isinstance(node.value, (astroid.ListComp, astroid.DictComp)): return if isinstance(node.value, astroid.SetComp): - self.add_message('unsubscriptable-value', + self.add_message('unsubscriptable-object', args=node.value.as_string(), node=node.value) infered = helpers.safe_infer(node.value) if infered is None or infered is astroid.YES: return if not supports_subscript(infered): - self.add_message('unsubscriptable-value', + self.add_message('unsubscriptable-object', args=node.value.as_string(), node=node.value) diff --git a/pylint/test/functional/unsubscriptable_value.py b/pylint/test/functional/unsubscriptable_value.py index ed94244..a6bbecd 100644 --- a/pylint/test/functional/unsubscriptable_value.py +++ b/pylint/test/functional/unsubscriptable_value.py @@ -29,10 +29,10 @@ class Subscriptable(object): def __getitem__(self, key): return key + key -NonSubscriptable()[0] # [unsubscriptable-value] -NonSubscriptable[0] # [unsubscriptable-value] +NonSubscriptable()[0] # [unsubscriptable-object] +NonSubscriptable[0] # [unsubscriptable-object] Subscriptable()[0] -Subscriptable[0] # [unsubscriptable-value] +Subscriptable[0] # [unsubscriptable-object] # generators are not subscriptable def powers_of_two(): @@ -41,20 +41,20 @@ def powers_of_two(): yield 2 ** k k += 1 -powers_of_two()[0] # [unsubscriptable-value] -powers_of_two[0] # [unsubscriptable-value] +powers_of_two()[0] # [unsubscriptable-object] +powers_of_two[0] # [unsubscriptable-object] # check that primitive non subscriptable types are catched -True[0] # [unsubscriptable-value] -None[0] # [unsubscriptable-value] -8.5[0] # [unsubscriptable-value] -10[0] # [unsubscriptable-value] +True[0] # [unsubscriptable-object] +None[0] # [unsubscriptable-object] +8.5[0] # [unsubscriptable-object] +10[0] # [unsubscriptable-object] # sets are not subscriptable -{x ** 2 for x in range(10)}[0] # [unsubscriptable-value] -set(numbers)[0] # [unsubscriptable-value] -frozenset(numbers)[0] # [unsubscriptable-value] +{x ** 2 for x in range(10)}[0] # [unsubscriptable-object] +set(numbers)[0] # [unsubscriptable-object] +frozenset(numbers)[0] # [unsubscriptable-object] # skip instances with unknown base classes from some_missing_module import LibSubscriptable @@ -74,11 +74,11 @@ class SubscriptableClass(six.with_metaclass(MetaSubscriptable, object)): pass SubscriptableClass[0] -SubscriptableClass()[0] # [unsubscriptable-value] +SubscriptableClass()[0] # [unsubscriptable-object] # functions are not subscriptable def test(*args, **kwargs): return args, kwargs test()[0] -test[0] # [unsubscriptable-value] +test[0] # [unsubscriptable-object] diff --git a/pylint/test/functional/unsubscriptable_value.txt b/pylint/test/functional/unsubscriptable_value.txt index d39c86a..64ea3c7 100644 --- a/pylint/test/functional/unsubscriptable_value.txt +++ b/pylint/test/functional/unsubscriptable_value.txt @@ -1,14 +1,14 @@ -unsubscriptable-value:32::Value 'NonSubscriptable()' is unsubscriptable -unsubscriptable-value:33::Value 'NonSubscriptable' is unsubscriptable -unsubscriptable-value:35::Value 'Subscriptable' is unsubscriptable -unsubscriptable-value:44::Value 'powers_of_two()' is unsubscriptable -unsubscriptable-value:45::Value 'powers_of_two' is unsubscriptable -unsubscriptable-value:49::Value 'True' is unsubscriptable -unsubscriptable-value:50::Value 'None' is unsubscriptable -unsubscriptable-value:51::Value '8.5' is unsubscriptable -unsubscriptable-value:52::Value '10' is unsubscriptable -unsubscriptable-value:55::Value '{(x) ** (2) for x in range(10)}' is unsubscriptable -unsubscriptable-value:56::Value 'set(numbers)' is unsubscriptable -unsubscriptable-value:57::Value 'frozenset(numbers)' is unsubscriptable -unsubscriptable-value:77::Value 'SubscriptableClass()' is unsubscriptable -unsubscriptable-value:84::Value 'test' is unsubscriptable +unsubscriptable-object:32::Value 'NonSubscriptable()' is unsubscriptable +unsubscriptable-object:33::Value 'NonSubscriptable' is unsubscriptable +unsubscriptable-object:35::Value 'Subscriptable' is unsubscriptable +unsubscriptable-object:44::Value 'powers_of_two()' is unsubscriptable +unsubscriptable-object:45::Value 'powers_of_two' is unsubscriptable +unsubscriptable-object:49::Value 'True' is unsubscriptable +unsubscriptable-object:50::Value 'None' is unsubscriptable +unsubscriptable-object:51::Value '8.5' is unsubscriptable +unsubscriptable-object:52::Value '10' is unsubscriptable +unsubscriptable-object:55::Value '{(x) ** (2) for x in range(10)}' is unsubscriptable +unsubscriptable-object:56::Value 'set(numbers)' is unsubscriptable +unsubscriptable-object:57::Value 'frozenset(numbers)' is unsubscriptable +unsubscriptable-object:77::Value 'SubscriptableClass()' is unsubscriptable +unsubscriptable-object:84::Value 'test' is unsubscriptable |