Skip to content

Commit 2bfa0c8

Browse files
committed
Fix left shift a little
Signed-off-by: Stefan Marr <git@stefan-marr.de>
1 parent 05af307 commit 2bfa0c8

1 file changed

Lines changed: 13 additions & 15 deletions

File tree

src/som/primitives/integer_primitives.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -124,21 +124,19 @@ def _greater_than_or_equal(left, right):
124124

125125

126126
def _left_shift(left, right):
127-
assert isinstance(right, Integer)
128-
129-
left_val = left.get_embedded_integer()
130-
right_val = right.get_embedded_integer()
131-
132-
assert isinstance(left_val, int)
133-
assert isinstance(right_val, int)
134-
135-
try:
136-
if not (left_val == 0 or 0 <= right_val < LONG_BIT):
137-
raise OverflowError
138-
result = ovfcheck(left_val << right_val)
139-
return Integer(result)
140-
except OverflowError:
141-
return BigInteger(bigint_from_int(left_val).lshift(right_val))
127+
if isinstance(left, Integer) and isinstance(right, Integer):
128+
left_val = left.get_embedded_integer()
129+
right_val = right.get_embedded_integer()
130+
131+
try:
132+
if not (left_val == 0 or 0 <= right_val < LONG_BIT):
133+
raise OverflowError
134+
result = ovfcheck(left_val << right_val)
135+
return Integer(result)
136+
except OverflowError:
137+
return BigInteger(bigint_from_int(left_val).lshift(right_val))
138+
else:
139+
assert False
142140

143141

144142
def _unsigned_right_shift(left, right):

0 commit comments

Comments
 (0)