Handle the case of completion of class member when member name is being edited

Fixes #17977
This commit is contained in:
Sheetal Nandi 2017-10-10 10:52:29 -07:00
parent 62d045f1a2
commit 3171d082a6
2 changed files with 37 additions and 0 deletions

View file

@ -1195,6 +1195,11 @@ namespace ts.Completions {
if (isClassLike(location)) {
return location;
}
// class c { method() { } b| }
if (isFromClassElementDeclaration(location) &&
(location.parent as ClassElement).name === location) {
return location.parent.parent as ClassLikeDeclaration;
}
break;
default:

View file

@ -0,0 +1,32 @@
///<reference path="fourslash.ts" />
////interface IFoo {
//// bar(): void;
////}
////class Foo1 implements IFoo {
//// zap() { }
//// /*1*/
////}
////class Foo2 implements IFoo {
//// zap() { }
//// b/*2*/() { }
////}
////class Foo3 implements IFoo {
//// zap() { }
//// b/*3*/: any;
////}
const allowedKeywordCount = verify.allowedClassElementKeywords.length;
function verifyHasBar() {
verify.completionListContains("bar", "(method) IFoo.bar(): void", /*documentation*/ undefined, "method");
verify.completionListContainsClassElementKeywords();
verify.completionListCount(allowedKeywordCount + 1);
}
goTo.marker("1");
verifyHasBar();
edit.insert("b");
verifyHasBar();
goTo.marker("2");
verifyHasBar();
goTo.marker("3");
verifyHasBar();