예제 #1
0
        public INamedTypeSymbol ResolveType(QualifiedName name)
        {
            Debug.Assert(!name.IsReservedClassName);
            Debug.Assert(!name.IsEmpty());

            return
                (ExportedTypes.TryGetOrDefault(name) ??
                 GetTypeFromNonExtensionAssemblies(name.ClrName()) ??
                 _next.ResolveType(name));
        }
예제 #2
0
        /// <summary>
        /// Compares two qualified names.
        /// </summary>
        /// <remarks>
        /// The original comparison operator on <see cref="QualifiedName"/> fails when any of the comparands is not initialized.
        /// </remarks>
        public static bool NameEquals(this QualifiedName name1, QualifiedName name2)
        {
            bool name1Empty = name1.IsEmpty();
            bool name2Empty = name2.IsEmpty();

            if (name1Empty || name2Empty)
            {
                return(name1Empty && name2Empty);
            }

            return(name1 == name2);
        }
예제 #3
0
        public INamedTypeSymbol ResolveType(QualifiedName name, Dictionary <QualifiedName, INamedTypeSymbol> resolved = null)
        {
            Debug.Assert(!name.IsReservedClassName);
            Debug.Assert(!name.IsEmpty());

            if (resolved != null && resolved.TryGetValue(name, out var type))
            {
                return(type);
            }

            return
                (ExportedTypes.TryGetOrDefault(name) ??
                 GetTypeFromNonExtensionAssemblies(name.ClrName()) ??
                 _next.ResolveType(name, resolved));
        }