예제 #1
0
파일: Extensions.cs 프로젝트: belav/roslyn
 public static INamedTypeSymbol GetTypeMember(
     this INamespaceOrTypeSymbol symbol,
     string name
     )
 {
     return(symbol.GetTypeMembers(name).Single());
 }
예제 #2
0
            private IEnumerable <INamedTypeSymbol> Resolve(
                Compilation compilation,
                INamespaceOrTypeSymbol container,
                bool ignoreAssemblyKey)
            {
                var types  = container.GetTypeMembers(GetName(_metadataName), _arity);
                var result = InstantiateTypes(compilation, ignoreAssemblyKey, types, _arity, _typeArgumentKeysOpt);

                return(_isUnboundGenericType
                    ? result.Select(t => t.ConstructUnboundGenericType())
                    : result);
            }
예제 #3
0
        private bool ContainsAccessibleTypeMember(INamespaceOrTypeSymbol namespaceOrTypeSymbol, IAssemblySymbol assemblySymbol)
        {
            foreach (var typeMember in namespaceOrTypeSymbol.GetTypeMembers())
            {
                if (IncludeSymbol(typeMember) && typeMember.IsAccessibleWithin(assemblySymbol))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #4
0
        private ImmutableArray <INamedTypeSymbol> GetAccessibleTypeMembers(INamespaceOrTypeSymbol namespaceOrTypeSymbol, IAssemblySymbol assemblySymbol)
        {
            var typeMembers = namespaceOrTypeSymbol.GetTypeMembers();
            var builder     = ImmutableArray.CreateBuilder <INamedTypeSymbol>(typeMembers.Length);

            foreach (var typeMember in typeMembers)
            {
                if (IncludeTypeMember(typeMember, assemblySymbol))
                {
                    builder.Add(typeMember);
                }
            }

            return(builder.ToImmutable());
        }
예제 #5
0
            private static IEnumerable <INamedTypeSymbol> Resolve(
                SymbolKeyReader reader,
                INamespaceOrTypeSymbol container,
                string metadataName,
                int arity,
                TypeKind typeKind,
                bool isUnboundGenericType,
                ImmutableArray <SymbolKeyResolution> typeArguments)
            {
                var types  = container.GetTypeMembers(GetName(metadataName), arity);
                var result = InstantiateTypes(
                    reader.Compilation, reader.IgnoreAssemblyKey, types, arity, typeArguments);

                return(isUnboundGenericType
                    ? result.Select(t => t.ConstructUnboundGenericType())
                    : result);
            }
            private static IEnumerable<INamedTypeSymbol> Resolve(
                SymbolKeyReader reader,
                INamespaceOrTypeSymbol container,
                string metadataName,
                int arity,
                TypeKind typeKind,
                bool isUnboundGenericType,
                ImmutableArray<SymbolKeyResolution> typeArguments)
            {
                var types = container.GetTypeMembers(GetName(metadataName), arity);
                var result = InstantiateTypes(
                    reader.Compilation, reader.IgnoreAssemblyKey, types, arity, typeArguments);

                return isUnboundGenericType
                    ? result.Select(t => t.ConstructUnboundGenericType())
                    : result;
            }
 private IEnumerable <ClassDeclarationSyntax> CreateNamedTypeDeclaration(INamespaceOrTypeSymbol namepace)
 {
     return(namepace.GetTypeMembers()
            .Where(val => val.Kind == SymbolKind.NamedType && (val.Name == ScriptHostName || val.GetAttributes().Any(x => x.AttributeClass.Name == CakeAliasCategoryName)))
            .Select(val => _metadataGeneratorService.CreateNamedTypeDeclaration(val)));
 }
예제 #8
0
 public static IEnumerable <ITypeSymbol> EnumAllNestedTypes(this INamespaceOrTypeSymbol source)
 {
     return(source.GetTypeMembers().SelectMany(nestedType => EnumAllNestedTypes(nestedType)));
 }
        private IEnumerable<INamedTypeSymbol> GetAllTypes(INamespaceOrTypeSymbol namespaceOrTypeSymbol)
        {
            foreach (var typeMember in namespaceOrTypeSymbol.GetTypeMembers())
            {
                foreach (var childType in GetAllTypes(typeMember))
                    yield return childType;

                yield return typeMember;
            }

            INamespaceSymbol namespaceSymbol = namespaceOrTypeSymbol as INamespaceSymbol;
            if (namespaceSymbol != null)
            {
                foreach (var childNamespace in namespaceSymbol.GetNamespaceMembers())
                {
                    foreach (var childType in GetAllTypes(childNamespace))
                        yield return childType;
                }
            }
        }
예제 #10
0
 public static IEnumerable <INamedTypeSymbol> Types(this INamespaceOrTypeSymbol symbol, string name) =>
 symbol.GetTypeMembers().Where(member => member.Name == name);