Beispiel #1
0
        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());
        }