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); }