Skip to content

Commit 539f5ba

Browse files
committed
Implement encoding/decoding of GeneratedRange flags
1 parent 8a0eb42 commit 539f5ba

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

src/codec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ export const enum OriginalScopeFlags {
2727
export const enum GeneratedRangeFlags {
2828
HAS_LINE = 0x1,
2929
HAS_DEFINITION = 0x2,
30+
IS_STACK_FRAME = 0x4,
31+
IS_HIDDEN = 0x8,
3032
}
3133

3234
export const EmptyItem = Symbol("empty item");

src/decode/decode.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,10 @@ class Decoder {
134134
line: this.#rangeState.line,
135135
column: this.#rangeState.column,
136136
},
137-
isStackFrame: false,
138-
isHidden: false,
137+
isStackFrame: Boolean(
138+
item.flags & GeneratedRangeFlags.IS_STACK_FRAME,
139+
),
140+
isHidden: Boolean(item.flags & GeneratedRangeFlags.IS_HIDDEN),
139141
values: [],
140142
children: [],
141143
};

src/encode/encoder.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ export class Encoder {
151151
this.#rangeState.defScopeIdx = definitionIdx;
152152
}
153153

154+
if (range.isStackFrame) flags |= GeneratedRangeFlags.IS_STACK_FRAME;
155+
if (range.isHidden) flags |= GeneratedRangeFlags.IS_HIDDEN;
156+
154157
this.#encodeTag(EncodedTag.GENERATED_RANGE_START).#encodeUnsigned(flags);
155158
if (encodedLine > 0) this.#encodeUnsigned(encodedLine);
156159
this.#encodeUnsigned(encodedColumn);

src/roundtrip.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,16 @@ describe("round trip", () => {
120120

121121
assertCodec(builder.build());
122122
});
123+
124+
it("handles the isStackFrame flag on GeneratedRanges", () => {
125+
builder.startRange(0, 0, { isStackFrame: true }).endRange(0, 10);
126+
127+
assertCodec(builder.build());
128+
});
129+
130+
it("handles the isHidden flag on GeneratedRanges", () => {
131+
builder.startRange(0, 0, { isHidden: true }).endRange(0, 10);
132+
133+
assertCodec(builder.build());
134+
});
123135
});

0 commit comments

Comments
 (0)