private void ResolveReachabilityAnnotations(IInvocableDeclarationSyntax invocable) { var canReach = invocable.ReachabilityAnnotations.CanReachAnnotation?.Parameters ?? Enumerable.Empty <IParameterNameSyntax>(); var reachableFrom = invocable.ReachabilityAnnotations.ReachableFromAnnotation?.Parameters ?? Enumerable.Empty <IParameterNameSyntax>(); var symbols = symbolTree.Children(invocable.Symbol.Result).OfType <BindingSymbol>().ToFixedSet(); foreach (var syn in canReach.Concat(reachableFrom)) { ResolveReachabilityAnnotation(invocable.File, syn, symbols); } }
private NamespaceOrPackageSymbol BuildNamespaceSymbol( NamespaceOrPackageSymbol containingSymbol, NamespaceName namespaces) { foreach (var nsName in namespaces.Segments) { var nsSymbol = treeBuilder.Children(containingSymbol) .OfType <NamespaceSymbol>() .SingleOrDefault(c => c.Name == nsName); if (nsSymbol is null) { nsSymbol = new NamespaceSymbol(containingSymbol, nsName); treeBuilder.Add(nsSymbol); } containingSymbol = nsSymbol; } return(containingSymbol); }