Skip to content

Commit 1144056

Browse files
committed
Merge pull request #6 from gthb/improve-error-handling
More helpful exception on negative line/col
2 parents 08a7d07 + 51e9263 commit 1144056

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

sourcemap/decoder.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,24 +145,38 @@ def decode(self, source):
145145
if len(parse) > 1:
146146
try:
147147
src_id += parse[1]
148+
if not 0 <= src_id < len(sources):
149+
raise SourceMapDecodeError(
150+
"Segment %s references source %d; there are "
151+
"%d sources" % (segment, src_id, len(sources))
152+
)
153+
148154
src = sources[src_id]
149155
src_line += parse[2]
150156
src_col += parse[3]
151157

152158
if len(parse) > 4:
153159
name_id += parse[4]
160+
if not 0 <= name_id < len(names):
161+
raise SourceMapDecodeError(
162+
"Segment %s references name %d; there are "
163+
"%d names" % (segment, name_id, len(names))
164+
)
165+
154166
name = names[name_id]
155167
except IndexError:
156-
raise SourceMapDecodeError
157-
158-
# lol for now
159-
try:
160-
assert dst_line >= 0
161-
assert dst_col >= 0
162-
assert src_line >= 0
163-
assert src_col >= 0
164-
except AssertionError:
165-
raise SourceMapDecodeError
168+
raise SourceMapDecodeError(
169+
"Invalid segment %s, parsed as %r"
170+
% (segment, parse)
171+
)
172+
173+
locs = locals()
174+
for var in 'dst_line', 'dst_col', 'src_line', 'src_col':
175+
if locs[var] < 0:
176+
raise SourceMapDecodeError(
177+
"Segment %s has negative %s (%d), in file %s"
178+
% (segment, var, locs[var], src)
179+
)
166180

167181
token = Token(dst_line, dst_col, src, src_line, src_col, name)
168182
tokens.append(token)

0 commit comments

Comments
 (0)