From 71b77106a883bec43707a1d8c75c4e12e5009bfc Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 3 Oct 2014 14:51:22 -0700 Subject: [PATCH 1/4] Add test case to verify the definition name and container name Rename dialog will use this name and scope name returned --- src/harness/fourslash.ts | 41 +++++++++++++------ .../fourslash/definitionNameOnEnumMember.ts | 12 ++++++ tests/cases/fourslash/fourslash.ts | 4 ++ 3 files changed, 44 insertions(+), 13 deletions(-) create mode 100644 tests/cases/fourslash/definitionNameOnEnumMember.ts diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index e746bd9e7c9..b5a3897196b 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -413,10 +413,14 @@ module FourSlash { } private raiseError(message: string) { - message = "Marker: " + currentTestState.lastKnownMarker + "\n" + message; + message = this.assertionMessage(message); throw new Error(message); } + private assertionMessage(message: string) { + return "Marker: " + currentTestState.lastKnownMarker + "\n" + message; + } + private getDiagnostics(fileName: string): ts.Diagnostic[] { var syntacticErrors = this.languageService.getSyntacticDiagnostics(fileName); var semanticErrors = this.languageService.getSemanticDiagnostics(fileName); @@ -772,35 +776,31 @@ module FourSlash { var actualQuickInfoSymbolName = actualQuickInfo ? actualQuickInfo.fullSymbolName : ""; var actualQuickInfoKind = actualQuickInfo ? actualQuickInfo.kind : ""; - function assertionMessage(name: string, actualValue: string, expectedValue: string) { - return "\nActual " + name + ":\n\t" + actualValue + "\nExpected value:\n\t" + expectedValue; - } - if (negative) { if (expectedTypeName !== undefined) { - assert.notEqual(actualQuickInfoMemberName, expectedTypeName, assertionMessage("quick info member name", actualQuickInfoMemberName, expectedTypeName)); + assert.notEqual(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member name")); } if (docComment != undefined) { - assert.notEqual(actualQuickInfoDocComment, docComment, assertionMessage("quick info doc comment", actualQuickInfoDocComment, docComment)); + assert.notEqual(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc comment")); } if (symbolName !== undefined) { - assert.notEqual(actualQuickInfoSymbolName, symbolName, assertionMessage("quick info symbol name", actualQuickInfoSymbolName, symbolName)); + assert.notEqual(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name")); } if (kind !== undefined) { - assert.notEqual(actualQuickInfoKind, kind, assertionMessage("quick info kind", actualQuickInfoKind, kind)); + assert.notEqual(actualQuickInfoKind, kind, this.assertionMessage("quick info kind")); } } else { if (expectedTypeName !== undefined) { - assert.equal(actualQuickInfoMemberName, expectedTypeName, assertionMessage("quick info member", actualQuickInfoMemberName, expectedTypeName)); + assert.equal(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member")); } if (docComment != undefined) { - assert.equal(actualQuickInfoDocComment, docComment, assertionMessage("quick info doc", actualQuickInfoDocComment, docComment)); + assert.equal(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc")); } if (symbolName !== undefined) { - assert.equal(actualQuickInfoSymbolName, symbolName, assertionMessage("quick info symbol name", actualQuickInfoSymbolName, symbolName)); + assert.equal(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name")); } if (kind !== undefined) { - assert.equal(actualQuickInfoKind, kind, assertionMessage("quick info kind", actualQuickInfoKind, kind)); + assert.equal(actualQuickInfoKind, kind, this.assertionMessage("quick info kind")); } } } @@ -1448,6 +1448,21 @@ module FourSlash { } } + public verifyDefinitionsName(negative: boolean, expectedName: string, expectedContainerName: string) { + this.taoInvalidReason = 'verifyDefinititionsInfo NYI'; + + var definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition); + var actualDefinitionName = definitions && definitions.length ? definitions[0].name : ""; + var actualDefinitionContainerName = definitions && definitions.length ? definitions[0].containerName : ""; + if (negative) { + assert.notEqual(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Name")); + assert.notEqual(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Container Name")); + } else { + assert.equal(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Name")); + assert.equal(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Container Name")); + } + } + public getMarkers(): Marker[] { // Return a copy of the list return this.testData.markers.slice(0); diff --git a/tests/cases/fourslash/definitionNameOnEnumMember.ts b/tests/cases/fourslash/definitionNameOnEnumMember.ts new file mode 100644 index 00000000000..b22b9d16c07 --- /dev/null +++ b/tests/cases/fourslash/definitionNameOnEnumMember.ts @@ -0,0 +1,12 @@ +/// + +////enum e { +//// firstMember, +//// secondMember, +//// thirdMember +////} +////var enumMember = e./*1*/thirdMember; + +goTo.marker("1"); +// This is bug #652 +verify.verifyDefinitionsName("e.thirdMember", "e"); \ No newline at end of file diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index c204a98c4a4..9b5958792bc 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -237,6 +237,10 @@ module FourSlashInterface { public definitionLocationExists() { FourSlash.currentTestState.verifyDefinitionLocationExists(this.negative); } + + public verifyDefinitionsName(name: string, containerName: string) { + FourSlash.currentTestState.verifyDefinitionsName(this.negative, name, containerName); + } } export class verify extends verifyNegatable { From 8a650bf7ed16cf326b4623ce069cc454b8a95677 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 3 Oct 2014 14:58:11 -0700 Subject: [PATCH 2/4] Get just the name of the symbol (instead of qualified path) as symbolName of the definition info. Fixes #652 --- src/services/services.ts | 2 +- tests/cases/fourslash/definitionNameOnEnumMember.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 88efbaf2a2a..6b098add581 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2599,7 +2599,7 @@ module ts { var result: DefinitionInfo[] = []; var declarations = symbol.getDeclarations(); - var symbolName = typeInfoResolver.symbolToString(symbol, node); + var symbolName = typeInfoResolver.symbolToString(symbol); // Do not get scoped name, just the name of the symbol var symbolKind = getSymbolKind(symbol); var containerSymbol = symbol.parent; var containerName = containerSymbol ? typeInfoResolver.symbolToString(containerSymbol, node) : ""; diff --git a/tests/cases/fourslash/definitionNameOnEnumMember.ts b/tests/cases/fourslash/definitionNameOnEnumMember.ts index b22b9d16c07..d88e1ef688e 100644 --- a/tests/cases/fourslash/definitionNameOnEnumMember.ts +++ b/tests/cases/fourslash/definitionNameOnEnumMember.ts @@ -8,5 +8,4 @@ ////var enumMember = e./*1*/thirdMember; goTo.marker("1"); -// This is bug #652 -verify.verifyDefinitionsName("e.thirdMember", "e"); \ No newline at end of file +verify.verifyDefinitionsName("thirdMember", "e"); \ No newline at end of file From 468e9b62baf412b77c5198254f063111ae82760e Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 3 Oct 2014 15:53:41 -0700 Subject: [PATCH 3/4] Renamed assertionMessage to messageAtLastKnownMarker in fourslash --- src/harness/fourslash.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index b5a3897196b..1e0369ff098 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -413,11 +413,11 @@ module FourSlash { } private raiseError(message: string) { - message = this.assertionMessage(message); + message = this.messageAtLastKnownMarker(message); throw new Error(message); } - private assertionMessage(message: string) { + private messageAtLastKnownMarker(message: string) { return "Marker: " + currentTestState.lastKnownMarker + "\n" + message; } @@ -778,29 +778,29 @@ module FourSlash { if (negative) { if (expectedTypeName !== undefined) { - assert.notEqual(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member name")); + assert.notEqual(actualQuickInfoMemberName, expectedTypeName, this.messageAtLastKnownMarker("quick info member name")); } if (docComment != undefined) { - assert.notEqual(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc comment")); + assert.notEqual(actualQuickInfoDocComment, docComment, this.messageAtLastKnownMarker("quick info doc comment")); } if (symbolName !== undefined) { - assert.notEqual(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name")); + assert.notEqual(actualQuickInfoSymbolName, symbolName, this.messageAtLastKnownMarker("quick info symbol name")); } if (kind !== undefined) { - assert.notEqual(actualQuickInfoKind, kind, this.assertionMessage("quick info kind")); + assert.notEqual(actualQuickInfoKind, kind, this.messageAtLastKnownMarker("quick info kind")); } } else { if (expectedTypeName !== undefined) { - assert.equal(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member")); + assert.equal(actualQuickInfoMemberName, expectedTypeName, this.messageAtLastKnownMarker("quick info member")); } if (docComment != undefined) { - assert.equal(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc")); + assert.equal(actualQuickInfoDocComment, docComment, this.messageAtLastKnownMarker("quick info doc")); } if (symbolName !== undefined) { - assert.equal(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name")); + assert.equal(actualQuickInfoSymbolName, symbolName, this.messageAtLastKnownMarker("quick info symbol name")); } if (kind !== undefined) { - assert.equal(actualQuickInfoKind, kind, this.assertionMessage("quick info kind")); + assert.equal(actualQuickInfoKind, kind, this.messageAtLastKnownMarker("quick info kind")); } } } @@ -1455,11 +1455,11 @@ module FourSlash { var actualDefinitionName = definitions && definitions.length ? definitions[0].name : ""; var actualDefinitionContainerName = definitions && definitions.length ? definitions[0].containerName : ""; if (negative) { - assert.notEqual(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Name")); - assert.notEqual(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Container Name")); + assert.notEqual(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name")); + assert.notEqual(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Container Name")); } else { - assert.equal(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Name")); - assert.equal(actualDefinitionName, expectedName, this.assertionMessage("Definition Info Container Name")); + assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name")); + assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Container Name")); } } From 61f776b8f42ab7f99d62924d3146d3385c043877 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 6 Oct 2014 11:30:03 -0700 Subject: [PATCH 4/4] Added test case for rename of enum member using rename api --- tests/cases/fourslash/renameNameOnEnumMember.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 tests/cases/fourslash/renameNameOnEnumMember.ts diff --git a/tests/cases/fourslash/renameNameOnEnumMember.ts b/tests/cases/fourslash/renameNameOnEnumMember.ts new file mode 100644 index 00000000000..155c293cc84 --- /dev/null +++ b/tests/cases/fourslash/renameNameOnEnumMember.ts @@ -0,0 +1,11 @@ +/// + +////enum e { +//// firstMember, +//// secondMember, +//// thirdMember +////} +////var enumMember = e.[|/**/thirdMember|]; + +goTo.marker(""); +verify.renameInfoSucceeded("thirdMember", "e.thirdMember"); \ No newline at end of file