Skip to content

Commit 558be4e

Browse files
Implemented getOccsAtPos for try-catch-finally.
1 parent 5d15cd2 commit 558be4e

File tree

4 files changed

+101
-0
lines changed

4 files changed

+101
-0
lines changed

src/services/services.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2169,10 +2169,30 @@ module ts {
21692169
}
21702170

21712171
switch (node.kind) {
2172+
case SyntaxKind.TryKeyword:
2173+
case SyntaxKind.CatchKeyword:
2174+
case SyntaxKind.FinallyKeyword:
2175+
return getTryCatchFinallyOccurrences(<TryStatement>node.parent.parent);
21722176
}
21732177

21742178
return undefined;
21752179

2180+
function getTryCatchFinallyOccurrences(tryStatement: TryStatement): ReferenceEntry[] {
2181+
var keywords: Node[] = [];
2182+
2183+
keywords.push(tryStatement.getFirstToken())
2184+
2185+
if (tryStatement.catchBlock) {
2186+
keywords.push(tryStatement.catchBlock.getFirstToken());
2187+
}
2188+
2189+
if (tryStatement.finallyBlock) {
2190+
keywords.push(tryStatement.finallyBlock.getFirstToken());
2191+
}
2192+
2193+
return keywordsToReferenceEntries(keywords);
2194+
}
2195+
21762196
function keywordsToReferenceEntries(keywords: Node[]): ReferenceEntry[]{
21772197
return keywords.map(keyword =>
21782198
new ReferenceEntry(filename, TypeScript.TextSpan.fromBounds(keyword.getStart(), keyword.end), /* isWriteAccess */ false)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
/////*1*/[|try|] {
4+
//// try {
5+
//// }
6+
//// catch (x) {
7+
//// }
8+
////
9+
//// try {
10+
//// }
11+
//// finally {
12+
//// }
13+
////}
14+
////[|cat/*2*/ch|] (e) {
15+
////}
16+
////[|fina/*3*/lly|] {
17+
////}
18+
19+
20+
for (var i = 1; i <= test.markers().length; i++) {
21+
goTo.marker("" + i);
22+
verify.occurrencesAtPositionCount(3);
23+
24+
test.ranges().forEach(range => {
25+
verify.occurrencesAtPositionContains(range, false);
26+
});
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////try {
4+
//// [|t/*1*/r/*2*/y|] {
5+
//// }
6+
//// [|c/*3*/atch|] (x) {
7+
//// }
8+
////
9+
//// try {
10+
//// }
11+
//// finally {
12+
//// }
13+
////}
14+
////catch (e) {
15+
////}
16+
////finally {
17+
////}
18+
19+
20+
for (var i = 1; i <= test.markers().length; i++) {
21+
goTo.marker("" + i);
22+
verify.occurrencesAtPositionCount(2);
23+
24+
test.ranges().forEach(range => {
25+
verify.occurrencesAtPositionContains(range, false);
26+
});
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
////try {
4+
//// try {
5+
//// }
6+
//// catch (x) {
7+
//// }
8+
////
9+
//// [|t/*1*/r/*2*/y|] {
10+
//// }
11+
//// [|finall/*3*/y|] {
12+
//// }
13+
////}
14+
////catch (e) {
15+
////}
16+
////finally {
17+
////}
18+
19+
20+
for (var i = 1; i <= test.markers().length; i++) {
21+
goTo.marker("" + i);
22+
verify.occurrencesAtPositionCount(2);
23+
24+
test.ranges().forEach(range => {
25+
verify.occurrencesAtPositionContains(range, false);
26+
});
27+
}

0 commit comments

Comments
 (0)