Пример #1
0
 public static void Attach(
     INamespaceSymbol @namespace,
     IList<ISymbol> imports)
 {
     var info = new CodeGenerationNamespaceInfo(imports ?? SpecializedCollections.EmptyList<ISymbol>());
     namespaceToInfoMap.Add(@namespace, info);
 }
        /// <summary>
        /// Creates a namespace symbol that can be used to describe a namespace declaration.
        /// </summary>
        public static INamespaceSymbol CreateNamespaceSymbol(string name, IList <ISymbol> imports = null, IList <INamespaceOrTypeSymbol> members = null)
        {
            var @namespace = new CodeGenerationNamespaceSymbol(name, members);

            CodeGenerationNamespaceInfo.Attach(@namespace, imports);
            return(@namespace);
        }
        public static void Attach(
            INamespaceSymbol @namespace,
            IList <ISymbol> imports)
        {
            var info = new CodeGenerationNamespaceInfo(imports ?? SpecializedCollections.EmptyList <ISymbol>());

            s_namespaceToInfoMap.Add(@namespace, info);
        }
Пример #4
0
        public static void GetNameAndInnermostNamespace(
            INamespaceSymbol @namespace,
            CodeGenerationOptions options,
            out string name,
            out INamespaceSymbol innermostNamespace)
        {
            if (options.GenerateMembers && options.MergeNestedNamespaces && @namespace.Name != string.Empty)
            {
                var names = new List <string>();
                names.Add(@namespace.Name);

                innermostNamespace = @namespace;
                while (true)
                {
                    var members = innermostNamespace.GetMembers().ToList();
                    if (members.Count == 1 &&
                        members[0] is INamespaceSymbol &&
                        CodeGenerationNamespaceInfo.GetImports(innermostNamespace).Count == 0)
                    {
                        var childNamespace = (INamespaceSymbol)members[0];
                        names.Add(childNamespace.Name);
                        innermostNamespace = childNamespace;
                        continue;
                    }

                    break;
                }

                name = string.Join(".", names.ToArray());
            }
            else
            {
                name = @namespace.Name;
                innermostNamespace = @namespace;
            }
        }
 private static IList <ISymbol> GetImports(CodeGenerationNamespaceInfo info)
 {
     return(info == null
         ? SpecializedCollections.EmptyList <ISymbol>()
         : info._imports);
 }
Пример #6
0
 private static IList<ISymbol> GetImports(CodeGenerationNamespaceInfo info)
 {
     return info == null
         ? SpecializedCollections.EmptyList<ISymbol>()
         : info.imports;
 }