removed pr.String and pr.Number in favor of the more general pr.Literal

This commit is contained in:
Dave Halter
2014-01-13 16:45:59 +01:00
parent 717c4315df
commit cdd356ff9b
3 changed files with 8 additions and 18 deletions

View File

@@ -92,14 +92,14 @@ class Array(use_metaclass(CachedMetaClass, pr.Base)):
if len(key_expression_list) != 1: # cannot deal with complex strings
continue
key = key_expression_list[0]
if isinstance(key, pr.String):
str_key = key.value
if isinstance(key, pr.Literal):
key = key.value
elif isinstance(key, pr.Name):
str_key = str(key)
key = str(key)
else:
continue
if mixed_index == str_key:
if mixed_index == key:
index = i
break
if index is None:

View File

@@ -1069,9 +1069,7 @@ class Statement(Simple):
is_literal = token_type in [tokenize.STRING, tokenize.NUMBER]
if isinstance(tok, Name) or is_literal:
cls = Call
if is_literal:
cls = String if token_type == tokenize.STRING else Number
cls = Literal if is_literal else Call
call = cls(self._sub_module, tok, start_pos, end_pos, self)
if is_chain:
@@ -1243,14 +1241,6 @@ class Literal(StatementElement):
return "<%s: %s>" % (type(self).__name__, s)
class String(Literal):
pass
class Number(Literal):
pass
class Array(StatementElement):
"""
Describes the different python types for an array, but also empty

View File

@@ -37,15 +37,15 @@ class TestCallAndName():
def test_literal_type(self):
literal = self.get_call('1.0')
assert isinstance(literal, pr.Number)
assert isinstance(literal, pr.Literal)
assert type(literal.value) == float
literal = self.get_call('1')
assert isinstance(literal, pr.Number)
assert isinstance(literal, pr.Literal)
assert type(literal.value) == int
literal = self.get_call('"hello"')
assert isinstance(literal, pr.String)
assert isinstance(literal, pr.Literal)
assert literal.value == 'hello'