Skip to content

Commit 4548898

Browse files
committed
Handle strict/loose mode for free bindings item
1 parent 7e6034e commit 4548898

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/decode/decode.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,4 +237,24 @@ describe("decode", () => {
237237

238238
assertEquals(info.scopes, []);
239239
});
240+
241+
it("throws for free GENERATED_RANGE_BINDINGS items in strict mode", () => {
242+
const encoder = new ItemEncoder();
243+
encoder.addUnsignedVLQs(Tag.GENERATED_RANGE_BINDINGS);
244+
encoder.addSignedVLQs(0, -1).finishItem();
245+
const map = createMap(encoder.encode(), ["foo"]);
246+
247+
assertThrows(() => decode(map, { mode: DecodeMode.STRICT }));
248+
});
249+
250+
it("ignores free ORIGINAL_SCOPE_VARIABLES items in loose mode", () => {
251+
const encoder = new ItemEncoder();
252+
encoder.addUnsignedVLQs(Tag.GENERATED_RANGE_BINDINGS);
253+
encoder.addSignedVLQs(0, -1).finishItem();
254+
const map = createMap(encoder.encode(), ["foo"]);
255+
256+
const info = decode(map, { mode: DecodeMode.LOOSE });
257+
258+
assertEquals(info.scopes, []);
259+
});
240260
});

src/decode/decode.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,10 @@ class Decoder {
230230
case Tag.GENERATED_RANGE_BINDINGS: {
231231
const range = this.#rangeStack.at(-1);
232232
if (!range) {
233-
throw new Error(
233+
this.#throwInStrictMode(
234234
"Encountered GENERATED_RANGE_BINDINGS without surrounding GENERATED_RANGE_START",
235235
);
236+
continue;
236237
}
237238

238239
for (const valueIdx of item.valueIdxs) {

0 commit comments

Comments
 (0)