diff --git a/src/services/completions.ts b/src/services/completions.ts
index 5df87d16865..3fff0df5f9e 100644
--- a/src/services/completions.ts
+++ b/src/services/completions.ts
@@ -24,7 +24,7 @@ namespace ts.Completions {
const entries: CompletionEntry[] = [];
if (isSourceFileJavaScript(sourceFile)) {
- const uniqueNames = getCompletionEntriesFromSymbols(symbols, entries, location, /*performCharacterChecks*/ false);
+ const uniqueNames = getCompletionEntriesFromSymbols(symbols, entries, location, /*performCharacterChecks*/ true);
addRange(entries, getJavaScriptCompletionEntries(sourceFile, location.pos, uniqueNames));
}
else {
diff --git a/tests/cases/fourslash/completionListInvalidMemberNames3.ts b/tests/cases/fourslash/completionListInvalidMemberNames3.ts
new file mode 100644
index 00000000000..cf1141b4094
--- /dev/null
+++ b/tests/cases/fourslash/completionListInvalidMemberNames3.ts
@@ -0,0 +1,71 @@
+///
+
+// @allowjs: true
+
+// @Filename: test.js
+////interface Symbol {
+//// /** Returns a string representation of an object. */
+//// toString(): string;
+
+//// /** Returns the primitive value of the specified object. */
+//// valueOf(): Object;
+////}
+
+////interface SymbolConstructor {
+//// /**
+//// * A reference to the prototype.
+//// */
+//// readonly prototype: Symbol;
+
+//// /**
+//// * Returns a new unique Symbol value.
+//// * @param description Description of the new Symbol object.
+//// */
+//// (description?: string | number): symbol;
+
+//// /**
+//// * Returns a Symbol object from the global symbol registry matching the given key if found.
+//// * Otherwise, returns a new symbol with this key.
+//// * @param key key to search for.
+//// */
+//// for(key: string): symbol;
+
+//// /**
+//// * Returns a key from the global symbol registry matching the given Symbol if found.
+//// * Otherwise, returns a undefined.
+//// * @param sym Symbol to find the key for.
+//// */
+//// keyFor(sym: symbol): string | undefined;
+////}
+
+////declare var Symbol: SymbolConstructor;///
+
+////interface SymbolConstructor {
+//// /**
+//// * A method that determines if a constructor object recognizes an object as one of the
+//// * constructor’s instances. Called by the semantics of the instanceof operator.
+//// */
+//// readonly hasInstance: symbol;
+////}
+
+////interface Function {
+//// /**
+//// * Determines whether the given value inherits from this function if this function was used
+//// * as a constructor function.
+//// *
+//// * A constructor function can control which objects are recognized as its instances by
+//// * 'instanceof' by overriding this method.
+//// */
+//// [Symbol.hasInstance](value: any): boolean;
+////}
+
+////interface SomeInterface {
+//// (value: number): any;
+////}
+
+////var _ : SomeInterface;
+////_./**/
+
+goTo.marker();
+
+verify.not.completionListContains("[Symbol.hasInstance]");
\ No newline at end of file