Basic implementation for finding all references

This commit is contained in:
Yui T
2014-11-10 14:55:41 -08:00
parent e9122b4d85
commit 7e39622d5d
7 changed files with 32 additions and 17 deletions
+6 -1
View File
@@ -110,7 +110,8 @@ module ts {
getAliasedSymbol: resolveImport,
isUndefinedSymbol: symbol => symbol === undefinedSymbol,
isArgumentsSymbol: symbol => symbol === argumentsSymbol,
hasEarlyErrors: hasEarlyErrors
hasEarlyErrors: hasEarlyErrors,
resolveEntityNameForShortHandPropertyAssignment: resolveEntityNameForShortHandPropertyAssignment,
};
var undefinedSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "undefined");
@@ -537,6 +538,10 @@ module ts {
return symbol.flags & meaning ? symbol : resolveImport(symbol);
}
function resolveEntityNameForShortHandPropertyAssignment(location: Node): Symbol {
return resolveEntityName(location, <Identifier>location, SymbolFlags.Value);
}
function isExternalModuleNameRelative(moduleName: string): boolean {
// TypeScript 1.0 spec (April 2014): 11.2.1
// An external module name is "relative" if the first term is "." or "..".
+1
View File
@@ -733,6 +733,7 @@ module ts {
getEnumMemberValue(node: EnumMember): number;
isValidPropertyAccess(node: PropertyAccess, propertyName: string): boolean;
getAliasedSymbol(symbol: Symbol): Symbol;
resolveEntityNameForShortHandPropertyAssignment(location: Node): Symbol;
}
export interface SymbolDisplayBuilder {
+3
View File
@@ -4227,6 +4227,9 @@ module ts {
forEach(getPropertySymbolsFromContextualType(location), contextualSymbol => {
result.push.apply(result, typeInfoResolver.getRootSymbols(contextualSymbol));
});
if (location.kind === SyntaxKind.Identifier && location.parent.kind === SyntaxKind.ShortHandPropertyAssignment) {
result.push(typeInfoResolver.resolveEntityNameForShortHandPropertyAssignment(location));
}
}
// If this is a union property, add all the symbols from all its source symbols in all unioned types.