Skip to content

Commit d1dc837

Browse files
committed
Cache ranges by text
1 parent 6dc2ba7 commit d1dc837

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/harness/fourslash.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ namespace FourSlash {
4242
* is a range with `text in range` "selected".
4343
*/
4444
ranges: Range[];
45+
rangesByText?: ts.MultiMap<Range>;
4546
}
4647

4748
export interface Marker {
@@ -1002,7 +1003,7 @@ namespace FourSlash {
10021003
}
10031004

10041005
public verifySingleReferenceGroup(definition: FourSlashInterface.ReferenceGroupDefinition, ranges?: Range[] | string) {
1005-
ranges = ts.isString(ranges) ? this.rangesByText().get(ranges)! : ranges || this.getRanges();
1006+
ranges = ts.isString(ranges) ? this.rangesByText().get(ranges)! : ranges || this.getRanges();
10061007
this.verifyReferenceGroups(ranges, [{ definition, ranges }]);
10071008
}
10081009

@@ -1853,6 +1854,7 @@ Actual: ${stringify(fullActual)}`);
18531854
range.end = updatePosition(range.end, editStart, editEnd, newText);
18541855
}
18551856
}
1857+
this.testData.rangesByText = undefined;
18561858
}
18571859

18581860
private removeWhitespace(text: string): string {
@@ -2035,7 +2037,9 @@ Actual: ${stringify(fullActual)}`);
20352037
}
20362038

20372039
public rangesByText(): ts.Map<Range[]> {
2040+
if (this.testData.rangesByText) return this.testData.rangesByText;
20382041
const result = ts.createMultiMap<Range>();
2042+
this.testData.rangesByText = result;
20392043
for (const range of this.getRanges()) {
20402044
const text = this.rangeText(range);
20412045
result.add(text, range);

0 commit comments

Comments
 (0)