Block completion list on import declaration name and fix the crash in symbol display name when import declaration is incomplete

Fixes #991
This commit is contained in:
Sheetal Nandi
2014-11-06 19:37:05 -08:00
parent 8ab038f1a3
commit 38f14b5b1d
2 changed files with 24 additions and 4 deletions

View File

@@ -2614,6 +2614,7 @@ module ts {
case SyntaxKind.VarKeyword:
case SyntaxKind.GetKeyword:
case SyntaxKind.SetKeyword:
case SyntaxKind.ImportKeyword:
return true;
}
@@ -3061,13 +3062,13 @@ module ts {
displayParts.push(keywordPart(SyntaxKind.ImportKeyword));
displayParts.push(spacePart());
addFullSymbolName(symbol);
displayParts.push(spacePart());
displayParts.push(punctuationPart(SyntaxKind.EqualsToken));
displayParts.push(spacePart());
ts.forEach(symbol.declarations, declaration => {
if (declaration.kind === SyntaxKind.ImportDeclaration) {
var importDeclaration = <ImportDeclaration>declaration;
if (importDeclaration.externalModuleName) {
displayParts.push(spacePart());
displayParts.push(punctuationPart(SyntaxKind.EqualsToken));
displayParts.push(spacePart());
displayParts.push(keywordPart(SyntaxKind.RequireKeyword));
displayParts.push(punctuationPart(SyntaxKind.OpenParenToken));
displayParts.push(displayPart(getTextOfNode(importDeclaration.externalModuleName), SymbolDisplayPartKind.stringLiteral));
@@ -3075,7 +3076,12 @@ module ts {
}
else {
var internalAliasSymbol = typeResolver.getSymbolInfo(importDeclaration.entityName);
addFullSymbolName(internalAliasSymbol, enclosingDeclaration);
if (internalAliasSymbol) {
displayParts.push(spacePart());
displayParts.push(punctuationPart(SyntaxKind.EqualsToken));
displayParts.push(spacePart());
addFullSymbolName(internalAliasSymbol, enclosingDeclaration);
}
}
return true;
}

View File

@@ -0,0 +1,14 @@
///<reference path="fourslash.ts" />
////import /*1*/q = /*2*/
verifyIncompleteImport();
goTo.marker('2');
edit.insert("a.");
verifyIncompleteImport();
function verifyIncompleteImport() {
goTo.marker('1');
verify.completionListIsEmpty();
verify.quickInfoIs("import q");
}