Fix the completion entry for __proto

Fixes #850
This commit is contained in:
Sheetal Nandi
2014-11-11 15:56:56 -08:00
parent 4c28e73372
commit 37d84996db
5 changed files with 138 additions and 8 deletions
+8 -5
View File
@@ -2385,7 +2385,7 @@ module ts {
if (isValid) {
return displayName;
return unescapeIdentifier(displayName);
}
}
@@ -2561,9 +2561,12 @@ module ts {
var start = new Date().getTime();
forEach(symbols, symbol => {
var entry = createCompletionEntry(symbol, session.typeChecker, location);
if (entry && !lookUp(session.symbols, entry.name)) {
session.entries.push(entry);
session.symbols[entry.name] = symbol;
if (entry) {
var id = escapeIdentifier(entry.name);
if (!lookUp(session.symbols, id)) {
session.entries.push(entry);
session.symbols[id] = symbol;
}
}
});
host.log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start));
@@ -2771,7 +2774,7 @@ module ts {
return undefined;
}
var symbol = lookUp(activeCompletionSession.symbols, entryName);
var symbol = lookUp(activeCompletionSession.symbols, escapeIdentifier(entryName));
if (symbol) {
var location = getTouchingPropertyName(sourceFile, position);
var completionEntry = createCompletionEntry(symbol, session.typeChecker, location);
+3 -3
View File
@@ -12,9 +12,9 @@ verify.quickInfoIs("interface M.__proto__", "");
goTo.marker('2');
verify.quickInfoIs("(var) __proto__: M.__proto__", "");
goTo.marker('3');
//verify.completionListContains("__proto__", "(var) __proto__: M.__proto__", "");
verify.completionListContains("__proto__", "(var) __proto__: M.__proto__", "");
edit.insert("__proto__");
//goTo.definition();
//verify.caretAtMarker('2');
goTo.definition();
verify.caretAtMarker('2');
goTo.marker('4');
verify.quickInfoIs("(var) fun: (__proto__: any) => boolean", "");
@@ -0,0 +1,21 @@
/// <reference path='fourslash.ts' />
////var o1 = {
//// "__proto__": 10
////};
////var o2 = {
//// __proto__: 10
////};
////o1./*1*/
////o2./*2*/
goTo.marker('1');
verify.completionListContains("__proto__", '(property) "__proto__": number');
edit.insert("__proto__ = 10;");
goTo.marker('1');
verify.quickInfoIs('(property) "__proto__": number');
goTo.marker('2');
verify.completionListContains("__proto__", '(property) __proto__: number');
edit.insert("__proto__ = 10;");
goTo.marker('2');
verify.quickInfoIs('(property) __proto__: number');
@@ -0,0 +1,94 @@
/// <reference path='fourslash.ts' />
////var o1 : {
//// __proto__: number;
//// p: number;
////} = {
//// /*1*/
//// };
////var o2: {
//// __proto__: number;
//// p: number;
////} = {
//// /*2*/
//// };
////var o3: {
//// "__proto__": number;
//// p: number;
////} = {
//// /*3*/
//// };
////var o4: {
//// "__proto__": number;
//// p: number;
////} = {
//// /*4*/
//// };
////var o5: {
//// __proto__: number;
//// ___proto__: string;
//// p: number;
////} = {
//// /*5*/
//// };
////var o6: {
//// __proto__: number;
//// ___proto__: string;
//// p: number;
////} = {
//// /*6*/
//// };
goTo.marker('1');
verify.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
edit.insert('__proto__: 10,');
verify.not.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
goTo.marker('2');
verify.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
edit.insert('"__proto__": 10,');
verify.not.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
goTo.marker('3');
verify.completionListContains("__proto__", '(property) "__proto__": number');
verify.completionListContains("p", '(property) p: number');
edit.insert('__proto__: 10,');
verify.not.completionListContains("__proto__", '(property) "__proto__": number');
verify.completionListContains("p", '(property) p: number');
goTo.marker('4');
verify.completionListContains("__proto__", '(property) "__proto__": number');
verify.completionListContains("p", '(property) p: number');
edit.insert('"__proto__": 10,');
verify.not.completionListContains("__proto__", '(property) "__proto__": number');
verify.completionListContains("p", '(property) p: number');
goTo.marker('5');
verify.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
edit.insert('__proto__: 10,');
verify.not.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("p", '(property) p: number');
edit.insert('"___proto__": "10",');
verify.not.completionListContains("__proto__", '(property) __proto__: number');
verify.not.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("p", '(property) p: number');
goTo.marker('6');
verify.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("__proto__", '(property) __proto__: number');
verify.completionListContains("p", '(property) p: number');
edit.insert('___proto__: "10",');
verify.completionListContains("__proto__", '(property) __proto__: number');
verify.not.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("p", '(property) p: number');
edit.insert('"__proto__": 10,');
verify.not.completionListContains("__proto__", '(property) __proto__: number');
verify.not.completionListContains("___proto__", '(property) ___proto__: string');
verify.completionListContains("p", '(property) p: number');
@@ -0,0 +1,12 @@
/// <reference path='fourslash.ts' />
////// outer
////var ___proto__ = 10;
////function foo() {
//// var __proto__ = "hello";
//// /**/
////}
goTo.marker('');
verify.completionListContains("__proto__", '(local var) __proto__: string');
verify.completionListContains("___proto__", '(var) ___proto__: number');