File tree Expand file tree Collapse file tree 4 files changed +50
-2
lines changed Expand file tree Collapse file tree 4 files changed +50
-2
lines changed Original file line number Diff line number Diff line change @@ -142,6 +142,15 @@ describe("ScopeInfoBuilder", () => {
142
142
assertStrictEquals ( info . scopes [ 0 ] , info . ranges [ 0 ] . originalScope ) ;
143
143
assertStrictEquals ( info . ranges [ 0 ] . originalScope , scope ) ;
144
144
} ) ;
145
+
146
+ it ( "can set isStackFrame via option" , ( ) => {
147
+ const info = builder . startRange ( 0 , 0 , { isStackFrame : true } ) . endRange (
148
+ 10 ,
149
+ 0 ,
150
+ ) . build ( ) ;
151
+
152
+ assertStrictEquals ( info . ranges [ 0 ] ?. isStackFrame , true ) ;
153
+ } ) ;
145
154
} ) ;
146
155
147
156
describe ( "setRangeDefinitionScope" , ( ) => {
@@ -162,6 +171,18 @@ describe("ScopeInfoBuilder", () => {
162
171
} ) ;
163
172
} ) ;
164
173
174
+ describe ( "setRangeStackFrame" , ( ) => {
175
+ it ( "sets the isStackFrame flag" , ( ) => {
176
+ const info = builder . startRange ( 0 , 0 ) . setRangeStackFrame ( true ) . endRange (
177
+ 10 ,
178
+ 0 ,
179
+ )
180
+ . build ( ) ;
181
+
182
+ assertStrictEquals ( info . ranges [ 0 ] ?. isStackFrame , true ) ;
183
+ } ) ;
184
+ } ) ;
185
+
165
186
describe ( "endRange" , ( ) => {
166
187
it ( "does nothing when no range is open" , ( ) => {
167
188
builder . endRange ( 0 , 20 ) ;
Original file line number Diff line number Diff line change @@ -113,12 +113,12 @@ export class ScopeInfoBuilder {
113
113
startRange (
114
114
line : number ,
115
115
column : number ,
116
- options ?: { scope ?: number | OriginalScope } ,
116
+ options ?: { scope ?: number | OriginalScope ; isStackFrame ?: boolean } ,
117
117
) : this {
118
118
const range : GeneratedRange = {
119
119
start : { line, column } ,
120
120
end : { line, column } ,
121
- isStackFrame : false ,
121
+ isStackFrame : Boolean ( options ?. isStackFrame ) ,
122
122
isHidden : false ,
123
123
values : [ ] ,
124
124
children : [ ] ,
@@ -152,6 +152,13 @@ export class ScopeInfoBuilder {
152
152
return this ;
153
153
}
154
154
155
+ setRangeStackFrame ( isStackFrame : boolean ) : this {
156
+ const range = this . #rangeStack. at ( - 1 ) ;
157
+ if ( range ) range . isStackFrame = isStackFrame ;
158
+
159
+ return this ;
160
+ }
161
+
155
162
endRange ( line : number , column : number ) : this {
156
163
const range = this . #rangeStack. pop ( ) ;
157
164
if ( ! range ) return this ;
Original file line number Diff line number Diff line change @@ -189,6 +189,18 @@ describe("SafeScopeInfoBuilder", () => {
189
189
} ) ;
190
190
} ) ;
191
191
192
+ describe ( "setRangeStackFrame" , ( ) => {
193
+ it ( "throws when no range is on open" , ( ) => {
194
+ assertThrows ( ( ) => builder . setRangeStackFrame ( true ) ) ;
195
+ } ) ;
196
+
197
+ it ( "throws while building a scope" , ( ) => {
198
+ builder . startScope ( 0 , 0 ) ;
199
+
200
+ assertThrows ( ( ) => builder . setRangeStackFrame ( true ) ) ;
201
+ } ) ;
202
+ } ) ;
203
+
192
204
describe ( "endRange" , ( ) => {
193
205
it ( "throws when the range stack is empty" , ( ) => {
194
206
assertThrows ( ( ) => builder . endRange ( 5 , 0 ) ) ;
Original file line number Diff line number Diff line change @@ -162,6 +162,14 @@ export class SafeScopeInfoBuilder extends ScopeInfoBuilder {
162
162
return this ;
163
163
}
164
164
165
+ override setRangeStackFrame ( isStackFrame : boolean ) : this {
166
+ this . #verifyEmptyScopeStack( "setRangeStackFrame" ) ;
167
+ this . #verifyRangePresent( "setRangeStackFrame" ) ;
168
+
169
+ super . setRangeStackFrame ( isStackFrame ) ;
170
+ return this ;
171
+ }
172
+
165
173
override endRange ( line : number , column : number ) : this {
166
174
this . #verifyEmptyScopeStack( "endRange" ) ;
167
175
You can’t perform that action at this time.
0 commit comments