Boo.Lang.Compiler.Steps.ResolveImports.SelectiveImportFor C# (CSharp) Метод

SelectiveImportFor() приватный Метод

private SelectiveImportFor ( INamespace ns, MethodInvocationExpression selectiveImportSpec ) : INamespace
ns INamespace
selectiveImportSpec Boo.Lang.Compiler.Ast.MethodInvocationExpression
Результат INamespace
        private INamespace SelectiveImportFor(INamespace ns, MethodInvocationExpression selectiveImportSpec)
        {
            var importedNames = selectiveImportSpec.Arguments;
            var entities = new List<IEntity>(importedNames.Count);
            var aliases = new Dictionary<string,string>(importedNames.Count);
            foreach (Expression nameExpression in importedNames)
            {
                string name;
                if (nameExpression is ReferenceExpression) {
                    name = (nameExpression as ReferenceExpression).Name;
                    aliases[name] = name;
                } else {
                    var tce = nameExpression as TryCastExpression;
                    var alias = (tce.Type as SimpleTypeReference).Name;
                    name = (tce.Target as ReferenceExpression).Name;
                    aliases[alias] = name;
                    // Remove the trycast expression, otherwise it gets processed in later steps
                    tce.Target.Annotate("alias", alias);
                    importedNames.Replace(nameExpression, tce.Target);
                }

                if (!ns.Resolve(entities, name, EntityType.Any))
                    Errors.Add(
                        CompilerErrorFactory.MemberNotFound(
                            nameExpression, name, ns, NameResolutionService.GetMostSimilarMemberName(ns, name, EntityType.Any)));
            }
            return new SimpleNamespace(null, entities, aliases);
        }