Merge pull request #11395 from Microsoft/completionEntry

Add missing check in javascript file for valid identifier when creating completion entry from symbol
This commit is contained in:
Sheetal Nandi
2016-10-05 17:04:10 -07:00
committed by GitHub
2 changed files with 72 additions and 1 deletions

View File

@@ -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 {

View File

@@ -0,0 +1,71 @@
/// <reference path='fourslash.ts' />
// @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;/// <reference path="lib.es2015.symbol.d.ts" />
////interface SymbolConstructor {
//// /**
//// * A method that determines if a constructor object recognizes an object as one of the
//// * constructors 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]");