Пример #1
0
        public ISymbol Resolve(ITypeResolveContext context)
        {
            var entity = owner.Resolve(context) as IEntity;

            if (entity is ITypeDefinition)
            {
                return(((ITypeDefinition)entity).TypeParameters[index]);
            }
            if (entity is IMethod)
            {
                return(((IMethod)entity).TypeParameters[index]);
            }
            return(null);
        }
        IResolveVisitorNavigator InitNavigator(ICompilation compilation)
        {
            if (currentSymbolReference == null || compilation == null)
            {
                return(null);
            }
            var            symbol         = currentSymbolReference.Resolve(compilation.TypeResolveContext);
            FindReferences findReferences = new FindReferences();

            if (symbol == null)
            {
                return(null);
            }
            var searchScopes = findReferences.GetSearchScopes(symbol);

            if (searchScopes.Count == 0)
            {
                return(null);
            }
            var navigators = new IResolveVisitorNavigator[searchScopes.Count];

            for (int i = 0; i < navigators.Length; i++)
            {
                navigators[i] = searchScopes[i].GetNavigator(compilation, ColorizeMatch);
            }
            IResolveVisitorNavigator combinedNavigator;

            if (searchScopes.Count == 1)
            {
                combinedNavigator = navigators[0];
            }
            else
            {
                combinedNavigator = new CompositeResolveVisitorNavigator(navigators);
            }
            return(combinedNavigator);
        }