diff --git a/src/services/services.ts b/src/services/services.ts index 2560c5baa94..537bd795003 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2833,6 +2833,14 @@ module ts { } } } + if (symbolFlags & SymbolFlags.Import) { + addNewLineIfDisplayPartsExist(); + displayParts.push(punctuationPart(SyntaxKind.OpenParenToken)); + displayParts.push(textPart("alias")); + displayParts.push(punctuationPart(SyntaxKind.CloseParenToken)); + displayParts.push(spacePart()); + displayParts.push.apply(displayParts, symbolToDisplayParts(typeResolver, symbol, sourceFile)); + } else if (!hasAddedSymbolInfo && symbolKind !== ScriptElementKind.unknown) { if (type) { addPrefixForAnyFunctionOrVar(symbol, symbolKind); diff --git a/tests/cases/fourslash/commentsExternalModules.ts b/tests/cases/fourslash/commentsExternalModules.ts new file mode 100644 index 00000000000..dd91972b11a --- /dev/null +++ b/tests/cases/fourslash/commentsExternalModules.ts @@ -0,0 +1,97 @@ +/// + +// @Filename: commentsExternalModules_file0.ts +/////** Module comment*/ +////export module m/*1*/1 { +//// /** b's comment*/ +//// export var b: number; +//// /** foo's comment*/ +//// function foo() { +//// return /*2*/b; +//// } +//// /** m2 comments*/ +//// export module m2 { +//// /** class comment;*/ +//// export class c { +//// }; +//// /** i*/ +//// export var i = new c(); +//// } +//// /** exported function*/ +//// export function fooExport() { +//// return f/*3q*/oo(/*3*/); +//// } +////} +/////*4*/m1./*5*/fooEx/*6q*/port(/*6*/); +////var my/*7*/var = new m1.m2./*8*/c(); + +// @Filename: commentsExternalModules_file1.ts +/////**This is on import declaration*/ +////import ex/*9*/tMod = require("commentsExternalModules_file0"); +/////*10*/extMod./*11*/m1./*12*/fooExp/*13q*/ort(/*13*/); +////var new/*14*/Var = new extMod.m1.m2./*15*/c(); + +// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed +edit.insert(''); + +goTo.file("commentsExternalModules_file0.ts"); +goTo.marker('1'); +verify.quickInfoIs("module m1", "Module comment"); + +goTo.marker('2'); +verify.completionListContains("b", "(var) m1.b: number", "b's comment"); +verify.completionListContains("foo", "(function) foo(): number", "foo's comment"); + +goTo.marker('3'); +verify.currentSignatureHelpDocCommentIs("foo's comment"); +goTo.marker('3q'); +verify.quickInfoIs("(function) foo(): number", "foo's comment"); + +goTo.marker('4'); +verify.completionListContains("m1", "module m1", "Module comment"); + +goTo.marker('5'); +verify.memberListContains("b", "(var) m1.b: number", "b's comment"); +verify.memberListContains("fooExport", "(function) m1.fooExport(): number", "exported function"); +verify.memberListContains("m2", "module m1.m2"); + +goTo.marker('6'); +verify.currentSignatureHelpDocCommentIs("exported function"); +goTo.marker('6q'); +verify.quickInfoIs("(function) m1.fooExport(): number", "exported function"); + +goTo.marker('7'); +verify.quickInfoIs("(var) myvar: m1.m2.c", ""); + +goTo.marker('8'); +verify.memberListContains("c", "class m1.m2.c", "class comment;"); +verify.memberListContains("i", "(var) m1.m2.i: m1.m2.c", "i"); + +goTo.file("commentsExternalModules_file1.ts"); +goTo.marker('9'); +verify.quickInfoIs('(alias) extMod', "This is on import declaration"); + +goTo.marker('10'); +// TODO: extMod should exist in the completion list +//verify.completionListContains("extMod", "(alias) extMod", "This is on import declaration"); +verify.not.completionListContains("extMod", "(alias) extMod", "This is on import declaration"); + +goTo.marker('11'); +verify.memberListContains("m1", "module extMod.m1"); + +goTo.marker('12'); +verify.memberListContains("b", "(var) extMod.m1.b: number", "b's comment"); +verify.memberListContains("fooExport", "(function) extMod.m1.fooExport(): number", "exported function"); +verify.memberListContains("m2", "module extMod.m1.m2"); + +goTo.marker('13'); +verify.currentSignatureHelpDocCommentIs("exported function"); +goTo.marker('13q'); +verify.quickInfoIs("(function) extMod.m1.fooExport(): number", "exported function"); + +goTo.marker('14'); +verify.quickInfoIs("(var) newVar: extMod.m1.m2.c", ""); + +goTo.marker('15'); +verify.memberListContains("c", "class extMod.m1.m2.c", "class comment;"); +verify.memberListContains("i", "(var) extMod.m1.m2.i: extMod.m1.m2.c", "i"); diff --git a/tests/cases/fourslash_old/commentsImportDeclaration.ts b/tests/cases/fourslash/commentsImportDeclaration.ts similarity index 52% rename from tests/cases/fourslash_old/commentsImportDeclaration.ts rename to tests/cases/fourslash/commentsImportDeclaration.ts index 29bfc3e2a61..192cb2763ca 100644 --- a/tests/cases/fourslash_old/commentsImportDeclaration.ts +++ b/tests/cases/fourslash/commentsImportDeclaration.ts @@ -20,32 +20,32 @@ // @Filename: commentsImportDeclaration_file1.ts /////// /////** Import declaration*/ -////import extMod/*3*/ = require("commentsImportDeclaration_file0/*4*/"); +////import /*3*/extMod = require("commentsImportDeclaration_file0/*4*/"); ////extMod./*6*/m1./*7*/fooEx/*8q*/port(/*8*/); ////var new/*9*/Var = new extMod.m1.m2./*10*/c(); goTo.marker('2'); -verify.quickInfoIs("m1", "ModuleComment", "m1", "module"); +verify.quickInfoIs("module m1", "ModuleComment"); goTo.marker('3'); -verify.quickInfoIs("extMod", "Import declaration", "extMod", "module"); +verify.quickInfoIs("(alias) extMod", "Import declaration"); goTo.marker('6'); -verify.memberListContains("m1", "extMod.m1"); +verify.memberListContains("m1", "module extMod.m1"); goTo.marker('7'); -verify.memberListContains("b", "number", "b's comment", "extMod.m1.b", "var"); -verify.memberListContains("fooExport", "(): number", "exported function", "extMod.m1.fooExport", "function"); -verify.memberListContains("m2", "extMod.m1.m2"); +verify.memberListContains("b", "(var) extMod.m1.b: number", "b's comment"); +verify.memberListContains("fooExport", "(function) extMod.m1.fooExport(): number", "exported function"); +verify.memberListContains("m2", "module extMod.m1.m2"); goTo.marker('8'); verify.currentSignatureHelpDocCommentIs("exported function"); goTo.marker('8q'); -verify.quickInfoIs("(): number", "exported function", "extMod.m1.fooExport", "function"); +verify.quickInfoIs("(function) extMod.m1.fooExport(): number", "exported function"); goTo.marker('9'); -verify.quickInfoIs("extMod.m1.m2.c", "", "newVar", "var"); +verify.quickInfoIs("(var) newVar: extMod.m1.m2.c", ""); goTo.marker('10'); -verify.memberListContains("c", undefined, "class comment;", "extMod.m1.m2.c", "class"); -verify.memberListContains("i", "extMod.m1.m2.c", "i", "extMod.m1.m2.i", "var"); +verify.memberListContains("c", "class extMod.m1.m2.c", "class comment;"); +verify.memberListContains("i", "(var) extMod.m1.m2.i: extMod.m1.m2.c", "i"); diff --git a/tests/cases/fourslash_old/commentsExternalModules.ts b/tests/cases/fourslash_old/commentsExternalModules.ts deleted file mode 100644 index 55a8d720a6f..00000000000 --- a/tests/cases/fourslash_old/commentsExternalModules.ts +++ /dev/null @@ -1,95 +0,0 @@ -/// - -// @Filename: commentsExternalModules_file0.ts -/////** Module comment*/ -////export module m/*1*/1 { -//// /** b's comment*/ -//// export var b: number; -//// /** foo's comment*/ -//// function foo() { -//// return /*2*/b; -//// } -//// /** m2 comments*/ -//// export module m2 { -//// /** class comment;*/ -//// export class c { -//// }; -//// /** i*/ -//// export var i = new c(); -//// } -//// /** exported function*/ -//// export function fooExport() { -//// return f/*3q*/oo(/*3*/); -//// } -////} -/////*4*/m1./*5*/fooEx/*6q*/port(/*6*/); -////var my/*7*/var = new m1.m2./*8*/c(); - -// @Filename: commentsExternalModules_file1.ts -/////**This is on import declaration*/ -////import ex/*9*/tMod = require("commentsExternalModules_file0"); -/////*10*/extMod./*11*/m1./*12*/fooExp/*13q*/ort(/*13*/); -////var new/*14*/Var = new extMod.m1.m2./*15*/c(); - -// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed -edit.insert(''); - -goTo.file("commentsExternalModules_file0.ts"); -goTo.marker('1'); -verify.quickInfoIs("m1", "Module comment", "m1", "module"); - -goTo.marker('2'); -verify.completionListContains("b", "number", "b's comment", "m1.b", "var"); -verify.completionListContains("foo", "(): number", "foo's comment", "foo", "function"); - -goTo.marker('3'); -verify.currentSignatureHelpDocCommentIs("foo's comment"); -goTo.marker('3q'); -verify.quickInfoIs("(): number", "foo's comment", "foo", "function"); - -goTo.marker('4'); -verify.completionListContains("m1", "m1", "Module comment", "m1", "module"); - -goTo.marker('5'); -verify.memberListContains("b", "number", "b's comment", "m1.b", "var"); -verify.memberListContains("fooExport", "(): number", "exported function", "m1.fooExport", "function"); -verify.memberListContains("m2", "m1.m2"); - -goTo.marker('6'); -verify.currentSignatureHelpDocCommentIs("exported function"); -goTo.marker('6q'); -verify.quickInfoIs("(): number", "exported function", "m1.fooExport", "function"); - -goTo.marker('7'); -verify.quickInfoIs("m1.m2.c", "", "myvar", "var"); - -goTo.marker('8'); -verify.memberListContains("c", undefined, "class comment;", "m1.m2.c", "class"); -verify.memberListContains("i", "m1.m2.c", "i", "m1.m2.i", "var"); - -goTo.file("commentsExternalModules_file1.ts"); -goTo.marker('9'); -verify.quickInfoIs(undefined, "This is on import declaration", "extMod", "module"); - -goTo.marker('10'); -verify.completionListContains("extMod", "extMod", "This is on import declaration", "extMod", "module"); - -goTo.marker('11'); -verify.memberListContains("m1", "extMod.m1"); - -goTo.marker('12'); -verify.memberListContains("b", "number", "b's comment", "extMod.m1.b", "var"); -verify.memberListContains("fooExport", "(): number", "exported function", "extMod.m1.fooExport", "function"); -verify.memberListContains("m2", "extMod.m1.m2"); - -goTo.marker('13'); -verify.currentSignatureHelpDocCommentIs("exported function"); -goTo.marker('13q'); -verify.quickInfoIs("(): number", "exported function", "extMod.m1.fooExport", "function"); - -goTo.marker('14'); -verify.quickInfoIs("extMod.m1.m2.c", "", "newVar", "var"); - -goTo.marker('15'); -verify.memberListContains("c", undefined, "class comment;", "extMod.m1.m2.c", "class"); -verify.memberListContains("i", "extMod.m1.m2.c", "i", "extMod.m1.m2.i", "var");