private NullabilityAttributeSymbols ScanInReferences([NotNull] Compilation compilation, CancellationToken cancellationToken) { foreach (MetadataReference reference in compilation.References) { cancellationToken.ThrowIfCancellationRequested(); var externalAssemblySymbol = compilation.GetAssemblyOrModuleSymbol(reference) as IAssemblySymbol; if (externalAssemblySymbol != null) { var visitor = new NullabilityAttributesVisitor(); visitor.Visit(externalAssemblySymbol.GlobalNamespace); if (visitor.NotNullAttributeSymbol != null && visitor.CanBeNullAttributeSymbol != null && visitor.ItemNotNullAttributeSymbol != null && visitor.ItemCanBeNullAttributeSymbol != null) { return new NullabilityAttributeSymbols(visitor.NotNullAttributeSymbol, visitor.CanBeNullAttributeSymbol, visitor.ItemNotNullAttributeSymbol, visitor.ItemCanBeNullAttributeSymbol); } } } return null; }
private NullabilityAttributeSymbols ScanInReferences([NotNull] Compilation compilation, CancellationToken cancellationToken) { foreach (MetadataReference reference in compilation.References) { cancellationToken.ThrowIfCancellationRequested(); var externalAssemblySymbol = compilation.GetAssemblyOrModuleSymbol(reference) as IAssemblySymbol; if (externalAssemblySymbol != null) { var visitor = new NullabilityAttributesVisitor(); visitor.Visit(externalAssemblySymbol.GlobalNamespace); if (visitor.NotNullAttributeSymbol != null && visitor.CanBeNullAttributeSymbol != null && visitor.ItemNotNullAttributeSymbol != null && visitor.ItemCanBeNullAttributeSymbol != null) { return(new NullabilityAttributeSymbols(visitor.NotNullAttributeSymbol, visitor.CanBeNullAttributeSymbol, visitor.ItemNotNullAttributeSymbol, visitor.ItemCanBeNullAttributeSymbol)); } } } return(null); }