private Result <ArrayOrObject <Location, Location>, ResponseError> GetDefinitionFromSymbol([NotNull] ISymbol symbol, INode node) { var result = new List <Location>(); var declarations = symbol.GetDeclarations(); var symbolName = TypeChecker.SymbolToString(symbol); var symbolKind = DScriptUtilities.GetSymbolKind(symbol, node); var containerSymbol = symbol.Parent; var containerName = containerSymbol != null?TypeChecker.SymbolToString(containerSymbol, node) : string.Empty; if (!TryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !TryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { // Just add all the declarations foreach (var declaration in declarations) { result.Add(GetLocationFromNode(declaration)); } } return(Success(result.ToArray())); }
private Possible <IReadOnlyList <SymbolLocation> > GetDefinitionFromSymbol([NotNull] ISymbol symbol, INode node) { var result = new List <SymbolLocation>(); var declarations = symbol.GetDeclarations(); var symbolName = TypeChecker.SymbolToString(symbol); var symbolKind = Utilities.GetSymbolKind(symbol, node); var containerSymbol = symbol.Parent; var containerName = containerSymbol != null?TypeChecker.SymbolToString(containerSymbol, node) : string.Empty; if (!TryAddConstructSignature(symbol, node, symbolKind, symbolName, containerName, result) && !TryAddCallSignature(symbol, node, symbolKind, symbolName, containerName, result)) { // Just add all the declarations foreach (var declaration in declarations) { result.Add(GetLocationFromNode(declaration, symbol)); } } return(result.Count != 0 ? Success(result.ToArray()) : SilentError()); }