diff --git a/src/services/services.ts b/src/services/services.ts
index 41ffc04e5ae..4609c722786 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -2404,6 +2404,11 @@ module ts {
return undefined;
}
+ // If this is the default export, get the name of the declaration if it exists
+ if (displayName === "default" && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) && symbol.valueDeclaration.localSymbol && symbol.valueDeclaration.localSymbol.name) {
+ displayName = symbol.valueDeclaration.localSymbol.name;
+ }
+
let firstCharCode = displayName.charCodeAt(0);
// First check of the displayName is not external module; if it is an external module, it is not valid entry
if ((symbol.flags & SymbolFlags.Namespace) && (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) {
@@ -2620,7 +2625,7 @@ module ts {
previousToken.getStart() :
position;
- let scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile);
+ let scopeNode = getScopeNode(contextToken, adjustedPosition, sourceFile) || sourceFile;
/// TODO filter meaning based on the current context
let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias;
diff --git a/tests/cases/fourslash/exportDefaultClass.ts b/tests/cases/fourslash/exportDefaultClass.ts
new file mode 100644
index 00000000000..04ab351ab36
--- /dev/null
+++ b/tests/cases/fourslash/exportDefaultClass.ts
@@ -0,0 +1,12 @@
+///
+
+////export default class C {
+//// method() { /*1*/ }
+////}
+//// /*2*/
+
+goTo.marker('1');
+verify.completionListContains("C", "class C", /*documentation*/ undefined, "class");
+
+goTo.marker('2');
+verify.completionListContains("C", "class C", /*documentation*/ undefined, "class");
\ No newline at end of file
diff --git a/tests/cases/fourslash/exportDefaultFunction.ts b/tests/cases/fourslash/exportDefaultFunction.ts
new file mode 100644
index 00000000000..859d9641acd
--- /dev/null
+++ b/tests/cases/fourslash/exportDefaultFunction.ts
@@ -0,0 +1,12 @@
+///
+
+////export default function func() {
+//// /*1*/
+////}
+//// /*2*/
+
+goTo.marker('1');
+verify.completionListContains("func", "function func(): void", /*documentation*/ undefined, "function");
+
+goTo.marker('2');
+verify.completionListContains("func", "function func(): void", /*documentation*/ undefined, "function");
\ No newline at end of file