Skip to content

Commit c57fc1f

Browse files
authored
Merge pull request #14055 from aozgaa/UnduplicateAbstractMethodCodeFix
Unduplicate missing abstract member codefix
2 parents b3bb8ae + 6c2c2f8 commit c57fc1f

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/harness/fourslash.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2150,10 +2150,18 @@ namespace FourSlash {
21502150
* @param fileName Path to file where error should be retrieved from.
21512151
*/
21522152
private getCodeFixActions(fileName: string, errorCode?: number): ts.CodeAction[] {
2153-
const diagnostics: ts.Diagnostic[] = this.getDiagnostics(fileName);
2153+
const diagnosticsForCodeFix = this.getDiagnostics(fileName).map(diagnostic => {
2154+
return {
2155+
start: diagnostic.start,
2156+
length: diagnostic.length,
2157+
code: diagnostic.code
2158+
}
2159+
});
2160+
const dedupedDiagnositcs = ts.deduplicate(diagnosticsForCodeFix, ts.equalOwnProperties);
21542161

21552162
let actions: ts.CodeAction[] = undefined;
2156-
for (const diagnostic of diagnostics) {
2163+
2164+
for (const diagnostic of dedupedDiagnositcs) {
21572165

21582166
if (errorCode && errorCode !== diagnostic.code) {
21592167
continue;

src/services/services.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,7 @@ namespace ts {
16881688

16891689
let allFixes: CodeAction[] = [];
16901690

1691-
forEach(errorCodes, error => {
1691+
forEach(deduplicate(errorCodes), error => {
16921692
cancellationToken.throwIfCancellationRequested();
16931693

16941694
const context = {

tests/cases/fourslash/codeFixClassExtendAbstractProperty.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22

33
//// abstract class A {
44
//// abstract x: number;
5+
//// abstract foo(): number;
56
//// }
67
////
78
//// class C extends A {[|
89
//// |]}
910

1011
verify.rangeAfterCodeFix(`
11-
x: number;
12+
x: number;
13+
foo(): number {
14+
throw new Error('Method not implemented.');
15+
}
1216
`);

0 commit comments

Comments
 (0)