private List <HandlerCompletionItem> DetermineHandlers(ISolution solution) { var handlers = new List <HandlerCompletionItem>(); using (ReadLockCookie.Create()) { var projects = solution.GetAllProjects(); foreach (var project in projects) { if (!LambdaFinder.IsLambdaProjectType(project)) { continue; } var psiModules = project.GetPsiModules(); foreach (var psiModule in psiModules) { using (CompilationContextCookie.OverrideOrCreate(psiModule.GetContextFromModule())) { var scope = _symbolCache.GetSymbolScope(psiModule, false, true); var namespaces = scope.GlobalNamespace.GetNestedNamespaces(scope); foreach (var @namespace in namespaces) { ProcessNamespace(@namespace, scope, handlers); } } } } } return(handlers); }
private void GetHandlers(IMethod method, ICollection <HandlerCompletionItem> handlers) { if (!LambdaFinder.IsSuitableLambdaMethod(method)) { return; } var handlerString = LambdaHandlerUtils.ComposeHandlerString(method); var iconId = _psiIconManager.GetImage(method.GetElementType()); var iconModel = _iconHost.Transform(iconId); handlers.Add(new HandlerCompletionItem(handlerString, iconModel)); }