diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index 3b5b1adbf15..84177cf6698 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.messageAtLastKnownMarker(message);
throw new Error(message);
}
+ private messageAtLastKnownMarker(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);
@@ -778,29 +782,29 @@ module FourSlash {
if (negative) {
if (expectedTypeName !== undefined) {
- assert.notEqual(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member name", actualQuickInfoMemberName, expectedTypeName));
+ assert.notEqual(actualQuickInfoMemberName, expectedTypeName, this.messageAtLastKnownMarker("quick info member name"));
}
if (docComment != undefined) {
- assert.notEqual(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc comment", actualQuickInfoDocComment, docComment));
+ assert.notEqual(actualQuickInfoDocComment, docComment, this.messageAtLastKnownMarker("quick info doc comment"));
}
if (symbolName !== undefined) {
- assert.notEqual(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name", actualQuickInfoSymbolName, symbolName));
+ assert.notEqual(actualQuickInfoSymbolName, symbolName, this.messageAtLastKnownMarker("quick info symbol name"));
}
if (kind !== undefined) {
- assert.notEqual(actualQuickInfoKind, kind, this.assertionMessage("quick info kind", actualQuickInfoKind, kind));
+ assert.notEqual(actualQuickInfoKind, kind, this.messageAtLastKnownMarker("quick info kind"));
}
} else {
if (expectedTypeName !== undefined) {
- assert.equal(actualQuickInfoMemberName, expectedTypeName, this.assertionMessage("quick info member", actualQuickInfoMemberName, expectedTypeName));
+ assert.equal(actualQuickInfoMemberName, expectedTypeName, this.messageAtLastKnownMarker("quick info member"));
}
if (docComment != undefined) {
- assert.equal(actualQuickInfoDocComment, docComment, this.assertionMessage("quick info doc", actualQuickInfoDocComment, docComment));
+ assert.equal(actualQuickInfoDocComment, docComment, this.messageAtLastKnownMarker("quick info doc"));
}
if (symbolName !== undefined) {
- assert.equal(actualQuickInfoSymbolName, symbolName, this.assertionMessage("quick info symbol name", actualQuickInfoSymbolName, symbolName));
+ assert.equal(actualQuickInfoSymbolName, symbolName, this.messageAtLastKnownMarker("quick info symbol name"));
}
if (kind !== undefined) {
- assert.equal(actualQuickInfoKind, kind, this.assertionMessage("quick info kind", actualQuickInfoKind, kind));
+ assert.equal(actualQuickInfoKind, kind, this.messageAtLastKnownMarker("quick info kind"));
}
}
}
@@ -1480,6 +1484,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.messageAtLastKnownMarker("Definition Info Name"));
+ assert.notEqual(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Container Name"));
+ } else {
+ assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name"));
+ assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Container Name"));
+ }
+ }
+
public getMarkers(): Marker[] {
// Return a copy of the list
return this.testData.markers.slice(0);
diff --git a/src/services/services.ts b/src/services/services.ts
index 6e49e8427e5..15295c0d054 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -2606,7 +2606,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
new file mode 100644
index 00000000000..d88e1ef688e
--- /dev/null
+++ b/tests/cases/fourslash/definitionNameOnEnumMember.ts
@@ -0,0 +1,11 @@
+///
+
+////enum e {
+//// firstMember,
+//// secondMember,
+//// thirdMember
+////}
+////var enumMember = e./*1*/thirdMember;
+
+goTo.marker("1");
+verify.verifyDefinitionsName("thirdMember", "e");
\ No newline at end of file
diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts
index 537ff8527d6..f57a910245d 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 {
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