Esempio n. 1
0
        private static List <INamedTypeSymbol> FindSymbolCandidates(ICsharpMacroContext context, TypeInfo typeInfo)
        {
            var namedCandidates = context.SemanticModel.Compilation.GetSymbolsWithName(typeInfo.Name)
                                  .OfType <INamedTypeSymbol>()
                                  .ToList();

            if (namedCandidates.Count != 0)
            {
                return(namedCandidates);
            }

            var symbol = context.SemanticModel.Compilation.GetTypeByMetadataName(typeInfo.FullName);

            if (symbol != null)
            {
                return(new List <INamedTypeSymbol>()
                {
                    symbol
                });
            }

            return(new List <INamedTypeSymbol>());
        }
Esempio n. 2
0
        public static INamedTypeSymbol FindMatchingSymbol(IEnumerable <INamedTypeSymbol> namedCandidates, TypeInfo typeInfo)
        {
            var candidates = namedCandidates.Where(x =>
                                                   x.Name == typeInfo.Name && x.ContainingNamespace.ToString().EndsWith(typeInfo.Namespace));

            if (typeInfo.IsGeneric == false)
            {
                return(candidates?.FirstOrDefault());
            }

            return(candidates?.FirstOrDefault(x => x.Arity == typeInfo.GenericParameterValues.Length));
        }
Esempio n. 3
0
        private static INamedTypeSymbol FindMatchingSymbol(ICsharpMacroContext context, TypeInfo typeInfo)
        {
            var namedCandidates = FindSymbolCandidates(context, typeInfo);

            return(FindMatchingSymbol(namedCandidates, typeInfo));
        }