src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (72)
29ImmutableArray<AttributeData> attributes, Accessibility accessibility,
31ImmutableArray<IEventSymbol> explicitInterfaceImplementations,
44ImmutableArray<AttributeData> attributes,
49ImmutableArray<IPropertySymbol> explicitInterfaceImplementations,
51ImmutableArray<IParameterSymbol> parameters,
78ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
79ITypeSymbol type, RefKind refKind, ImmutableArray<IPropertySymbol> explicitInterfaceImplementations, string name,
80ImmutableArray<IParameterSymbol> parameters, IMethodSymbol? getMethod, IMethodSymbol? setMethod,
103ImmutableArray<AttributeData> attributes,
120ImmutableArray<AttributeData> attributes,
124ImmutableArray<IParameterSymbol> parameters,
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
139ImmutableArray<AttributeData> attributes, string typeName,
140ImmutableArray<SyntaxNode> statements = default)
149ImmutableArray<AttributeData> attributes,
154ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
156ImmutableArray<ITypeParameterSymbol> typeParameters,
157ImmutableArray<IParameterSymbol> parameters,
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
160ImmutableArray<AttributeData> returnTypeAttributes = default,
173ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
176ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
177string? name, ImmutableArray<ITypeParameterSymbol> typeParameters,
178ImmutableArray<IParameterSymbol> parameters,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
181ImmutableArray<AttributeData> returnTypeAttributes = default,
192ImmutableArray<AttributeData> attributes,
197ImmutableArray<IParameterSymbol> parameters,
198ImmutableArray<SyntaxNode> statements = default,
199ImmutableArray<AttributeData> returnTypeAttributes = default,
224ImmutableArray<SyntaxNode> statements = default,
225ImmutableArray<AttributeData> toTypeAttributes = default,
245ImmutableArray<AttributeData> attributes,
252ImmutableArray<SyntaxNode> statements = default,
253ImmutableArray<AttributeData> toTypeAttributes = default,
277ImmutableArray<AttributeData> attributes, RefKind refKind, bool isParams, ITypeSymbol type, string name, bool isOptional = false, bool hasDefaultValue = false, object? defaultValue = null)
287ImmutableArray<AttributeData>? attributes = null,
329ImmutableArray<AttributeData> attributes,
331ImmutableArray<ITypeSymbol> constraintTypes,
358ImmutableArray<AttributeData> attributes = default,
360ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
361ImmutableArray<SyntaxNode> statements = default)
383ImmutableArray<AttributeData> attributes,
385ImmutableArray<SyntaxNode> statements)
405ImmutableArray<TypedConstant> constructorArguments = default,
406ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments = default)
415ImmutableArray<AttributeData> attributes,
419ImmutableArray<ITypeParameterSymbol> typeParameters = default,
421ImmutableArray<INamedTypeSymbol> interfaces = default,
423ImmutableArray<ISymbol> members = default,
434ImmutableArray<AttributeData> attributes,
438ImmutableArray<ITypeParameterSymbol> typeParameters = default,
440ImmutableArray<INamedTypeSymbol> interfaces = default,
442ImmutableArray<ISymbol> members = default,
460ImmutableArray<AttributeData> attributes,
466ImmutableArray<ITypeParameterSymbol> typeParameters = default,
467ImmutableArray<IParameterSymbol> parameters = default,
512ImmutableArray<AttributeData> attributes = default,
515ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
517ImmutableArray<IParameterSymbol>? parameters = null,
518ImmutableArray<SyntaxNode> statements = default,
521Optional<ImmutableArray<AttributeData>> returnTypeAttributes = default)
542ImmutableArray<AttributeData> attributes = default,
543ImmutableArray<IParameterSymbol>? parameters = null,
546ImmutableArray<IPropertySymbol> explicitInterfaceImplementations = default,
570ImmutableArray<AttributeData> attributes = default,
573ImmutableArray<IEventSymbol> explicitInterfaceImplementations = default,
591ImmutableArray<AttributeData> attributes = default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\ITypeInferenceServiceExtensions.cs (9)
15public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
18public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
21public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
24public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
33var types = typeInferenceService.InferTypes(semanticModel, expression, cancellationToken);
43var types = typeInferenceService.InferTypes(semanticModel, position, cancellationToken);
47private static INamedTypeSymbol? GetFirstDelegateType(SemanticModel semanticModel, ImmutableArray<ITypeSymbol> types)
73var types = typeInferenceService.InferTypes(semanticModel, expression, name, cancellationToken);
103var types = typeInferenceService.InferTypes(semanticModel, position, name, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (4)
24public async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (9)
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
57var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
58var containers = GetAllContainers(root, contextLocation);
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
137var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
138var containers = GetAllContainers(root, contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\TypeInferenceService\ITypeInferenceService.cs (4)
27ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
28ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
30ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
31ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
MetaAnalyzers\DiagnosticDescriptorCreationAnalyzer_IdRangeAndCategoryValidation.cs (9)
70ImmutableArray<(string? prefix, int start, int end)> allowedIdsInfoList,
138ImmutableArray<IArgumentOperation> creationArguments,
141ImmutableDictionary<string, ImmutableArray<(string? prefix, int start, int end)>>? categoryAndAllowedIdsInfoMap,
143out ImmutableArray<(string? prefix, int start, int end)> allowedIdsInfoList)
195ImmutableArray<AdditionalText> additionalFiles,
198[NotNullWhen(returnValue: true)] out ImmutableDictionary<string, ImmutableArray<(string? prefix, int start, int end)>>? categoryAndAllowedIdsMap,
211private static AdditionalText? TryGetCategoryAndAllowedIdsInfoFile(ImmutableArray<AdditionalText> additionalFiles, CancellationToken cancellationToken)
231[NotNullWhen(returnValue: true)] out ImmutableDictionary<string, ImmutableArray<(string? prefix, int start, int end)>>? categoryAndAllowedIdsInfoMap,
241var builder = ImmutableDictionary.CreateBuilder<string, ImmutableArray<(string? prefix, int start, int end)>>();
MetaAnalyzers\DiagnosticDescriptorCreationAnalyzer.cs (20)
29using PooledFieldToCustomTagsConcurrentDictionary = PooledConcurrentDictionary<IFieldSymbol, ImmutableArray<string>>;
177public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(
225out ImmutableDictionary<string, ImmutableArray<(string? prefix, int start, int end)>>? categoryAndAllowedIdsMap,
256if (!TryGetDescriptorCreateMethodAndArguments(fieldInitializer, diagnosticDescriptorType, out var creationMethod, out var creationArguments))
273diagnosticCategoryAndIdRangeText, categoryAndAllowedIdsMap, out var category, out var allowedIdsInfoList))
437if (customTagsMap.TryGetValue(field, out var customTags) &&
528[NotNullWhen(returnValue: true)] out ImmutableArray<IArgumentOperation> creationArguments)
617ImmutableArray<IArgumentOperation> creationArguments,
674var additionalLocations = ImmutableArray<Location>.Empty;
720ImmutableArray<IArgumentOperation> creationArguments,
767ImmutableArray<IArgumentOperation> creationArguments,
1029ImmutableArray<IArgumentOperation> creationArguments,
1056ImmutableArray<IArgumentOperation> creationArguments,
1061ImmutableArray<string> customTags = default;
1082customTags = ImmutableArray<string>.Empty;
1096ImmutableArray<string> customTags,
1107private static (bool? isEnabledByDefault, DiagnosticSeverity? defaultSeverity) GetDefaultSeverityAndEnabledByDefault(Compilation compilation, ImmutableArray<IArgumentOperation> creationArguments)
1184ImmutableArray<IArgumentOperation> creationArguments,
1195ImmutableArray<(string? prefix, int start, int end)> allowedIdsInfoListOpt,
MetaAnalyzers\Fixers\AnalyzerReleaseTrackingFix.FixAllProvider.cs (16)
28var diagnosticsToFix = new List<KeyValuePair<Project, ImmutableArray<Diagnostic>>>();
33ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(fixAllContext.Document!).ConfigureAwait(false);
34diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
41ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(project).ConfigureAwait(false);
42diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
50ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(project).ConfigureAwait(false);
51diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(project, diagnostics));
67var projectIds = diagnosticsToFix.SelectAsArray(d => d.Key.Id);
76private readonly List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> _diagnosticsToFix;
79public FixAllAdditionalDocumentChangeAction(FixAllScope fixAllScope, Solution solution, List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> diagnosticsToFix, string? equivalenceKey)
94foreach (KeyValuePair<Project, ImmutableArray<Diagnostic>> pair in _diagnosticsToFix)
97ImmutableArray<Diagnostic> diagnostics = pair.Value;
130private static async Task<SourceText> AddEntriesToUnshippedFileForDiagnosticsAsync(TextDocument unshippedDataDocument, ImmutableArray<Diagnostic> diagnostics, CancellationToken cancellationToken)
144private static async Task<SourceText> UpdateEntriesInUnshippedFileForDiagnosticsAsync(TextDocument unshippedDataDocument, ImmutableArray<Diagnostic> diagnostics, CancellationToken cancellationToken)
162private readonly ImmutableArray<ProjectId> _projectIds;
165public FixAllAddAdditionalDocumentsAction(ImmutableArray<ProjectId> projectIds, Solution solution)
MetaAnalyzers\Fixers\DefineDiagnosticDescriptorArgumentsCorrectlyFix.CustomFixAllProvider.cs (11)
41var diagnosticsToFix = new List<KeyValuePair<Project, ImmutableArray<Diagnostic>>>();
46ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(fixAllContext.Document!).ConfigureAwait(false);
47diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
54ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(project).ConfigureAwait(false);
55diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
63ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(project).ConfigureAwait(false);
64diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(project, diagnostics));
83private readonly List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> _diagnosticsToFix;
86public FixAllAdditionalDocumentChangeAction(FixAllScope fixAllScope, Solution solution, List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> diagnosticsToFix, string equivalenceKey)
104var diagnostics = kvp.Value;
106var additionalDocuments = project.AdditionalDocuments.ToImmutableArray();
MetaAnalyzers\ReportDiagnosticAnalyzer.cs (9)
38public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(InvalidReportDiagnosticRule);
119private ImmutableDictionary<INamedTypeSymbol, ImmutableArray<IFieldSymbol>> _supportedDescriptorFieldsMap;
127_supportedDescriptorFieldsMap = ImmutableDictionary<INamedTypeSymbol, ImmutableArray<IFieldSymbol>>.Empty;
138ImmutableArray<IFieldSymbol> descriptorFields = GetSupportedDescriptors(symbolContext.Compilation, (INamedTypeSymbol)symbolContext.Symbol, symbolContext.CancellationToken);
145private ImmutableArray<IFieldSymbol> GetSupportedDescriptors(Compilation compilation, INamedTypeSymbol analyzer, CancellationToken cancellationToken)
147if (_supportedDescriptorFieldsMap.TryGetValue(analyzer, out ImmutableArray<IFieldSymbol> descriptorFields))
179private ImmutableArray<IFieldSymbol> GetReferencedDescriptorFields(SyntaxNode syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
181ImmutableArray<IFieldSymbol>.Builder builder = ImmutableArray.CreateBuilder<IFieldSymbol>();
241ImmutableArray<IFieldSymbol> descriptorFields = GetReferencedDescriptorFields(diagnosticInitializer, semanticModel, symbolContext.CancellationToken);
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (72)
29ImmutableArray<AttributeData> attributes, Accessibility accessibility,
31ImmutableArray<IEventSymbol> explicitInterfaceImplementations,
44ImmutableArray<AttributeData> attributes,
49ImmutableArray<IPropertySymbol> explicitInterfaceImplementations,
51ImmutableArray<IParameterSymbol> parameters,
78ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
79ITypeSymbol type, RefKind refKind, ImmutableArray<IPropertySymbol> explicitInterfaceImplementations, string name,
80ImmutableArray<IParameterSymbol> parameters, IMethodSymbol? getMethod, IMethodSymbol? setMethod,
103ImmutableArray<AttributeData> attributes,
120ImmutableArray<AttributeData> attributes,
124ImmutableArray<IParameterSymbol> parameters,
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
139ImmutableArray<AttributeData> attributes, string typeName,
140ImmutableArray<SyntaxNode> statements = default)
149ImmutableArray<AttributeData> attributes,
154ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
156ImmutableArray<ITypeParameterSymbol> typeParameters,
157ImmutableArray<IParameterSymbol> parameters,
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
160ImmutableArray<AttributeData> returnTypeAttributes = default,
173ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
176ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
177string? name, ImmutableArray<ITypeParameterSymbol> typeParameters,
178ImmutableArray<IParameterSymbol> parameters,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
181ImmutableArray<AttributeData> returnTypeAttributes = default,
192ImmutableArray<AttributeData> attributes,
197ImmutableArray<IParameterSymbol> parameters,
198ImmutableArray<SyntaxNode> statements = default,
199ImmutableArray<AttributeData> returnTypeAttributes = default,
224ImmutableArray<SyntaxNode> statements = default,
225ImmutableArray<AttributeData> toTypeAttributes = default,
245ImmutableArray<AttributeData> attributes,
252ImmutableArray<SyntaxNode> statements = default,
253ImmutableArray<AttributeData> toTypeAttributes = default,
277ImmutableArray<AttributeData> attributes, RefKind refKind, bool isParams, ITypeSymbol type, string name, bool isOptional = false, bool hasDefaultValue = false, object? defaultValue = null)
287ImmutableArray<AttributeData>? attributes = null,
329ImmutableArray<AttributeData> attributes,
331ImmutableArray<ITypeSymbol> constraintTypes,
358ImmutableArray<AttributeData> attributes = default,
360ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
361ImmutableArray<SyntaxNode> statements = default)
383ImmutableArray<AttributeData> attributes,
385ImmutableArray<SyntaxNode> statements)
405ImmutableArray<TypedConstant> constructorArguments = default,
406ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments = default)
415ImmutableArray<AttributeData> attributes,
419ImmutableArray<ITypeParameterSymbol> typeParameters = default,
421ImmutableArray<INamedTypeSymbol> interfaces = default,
423ImmutableArray<ISymbol> members = default,
434ImmutableArray<AttributeData> attributes,
438ImmutableArray<ITypeParameterSymbol> typeParameters = default,
440ImmutableArray<INamedTypeSymbol> interfaces = default,
442ImmutableArray<ISymbol> members = default,
460ImmutableArray<AttributeData> attributes,
466ImmutableArray<ITypeParameterSymbol> typeParameters = default,
467ImmutableArray<IParameterSymbol> parameters = default,
512ImmutableArray<AttributeData> attributes = default,
515ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
517ImmutableArray<IParameterSymbol>? parameters = null,
518ImmutableArray<SyntaxNode> statements = default,
521Optional<ImmutableArray<AttributeData>> returnTypeAttributes = default)
542ImmutableArray<AttributeData> attributes = default,
543ImmutableArray<IParameterSymbol>? parameters = null,
546ImmutableArray<IPropertySymbol> explicitInterfaceImplementations = default,
570ImmutableArray<AttributeData> attributes = default,
573ImmutableArray<IEventSymbol> explicitInterfaceImplementations = default,
591ImmutableArray<AttributeData> attributes = default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\ITypeInferenceServiceExtensions.cs (9)
15public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
18public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
21public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
24public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
33var types = typeInferenceService.InferTypes(semanticModel, expression, cancellationToken);
43var types = typeInferenceService.InferTypes(semanticModel, position, cancellationToken);
47private static INamedTypeSymbol? GetFirstDelegateType(SemanticModel semanticModel, ImmutableArray<ITypeSymbol> types)
73var types = typeInferenceService.InferTypes(semanticModel, expression, name, cancellationToken);
103var types = typeInferenceService.InferTypes(semanticModel, position, name, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (4)
24public async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (9)
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
57var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
58var containers = GetAllContainers(root, contextLocation);
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
137var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
138var containers = GetAllContainers(root, contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\TypeInferenceService\ITypeInferenceService.cs (4)
27ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
28ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
30ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
31ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
src\a03b2aad21e28a8a\PropertySetAnalysis.PropertySetDataFlowOperationVisitor.cs (5)
135protected override void SetAbstractValueForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, IOperation initializer, PropertySetAbstractValue value)
456public override PropertySetAbstractValue VisitInvocation_NonLambdaOrDelegateOrLocalFunction(IMethodSymbol method, IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments, bool invokedAsDelegate, IOperation originalOperation, PropertySetAbstractValue defaultValue)
514ImmutableArray<IArgumentOperation> visitedArguments,
635public override PropertySetAbstractValue VisitInvocation_LocalFunction(IMethodSymbol localFunction, ImmutableArray<IArgumentOperation> visitedArguments, IOperation originalOperation, PropertySetAbstractValue defaultValue)
643public override PropertySetAbstractValue VisitInvocation_Lambda(IFlowAnonymousFunctionOperation lambda, ImmutableArray<IArgumentOperation> visitedArguments, IOperation originalOperation, PropertySetAbstractValue defaultValue)
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntity.cs (8)
40ImmutableArray<AbstractIndex> indices,
69private AnalysisEntity(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, PointsToAbstractValue location, ITypeSymbol type, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
76: this(symbol: null, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: instanceReferenceOperation.Syntax,
83: this(symbol: null, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: null,
89: this(symbol: namedType, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: null,
94public static AnalysisEntity Create(ISymbol? symbol, ImmutableArray<AbstractIndex> indices,
197public ImmutableArray<AbstractIndex> Indices { get; }
216internal AnalysisEntity WithIndices(ImmutableArray<AbstractIndex> indices)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (17)
31private readonly Dictionary<ITupleOperation, ImmutableArray<AnalysisEntity>> _tupleElementEntitiesMap;
92private static ImmutableArray<AbstractIndex> CreateAbstractIndices<T>(ImmutableArray<T> indices)
106return ImmutableArray<AbstractIndex>.Empty;
134ImmutableArray<AbstractIndex> indices = ImmutableArray<AbstractIndex>.Empty;
271private static void GetSymbolAndIndicesForMemberReference(IMemberReferenceOperation memberReference, ref ISymbol? symbol, ref ImmutableArray<AbstractIndex> indices)
304ImmutableArray<AbstractIndex>.Empty;
315var indices = ImmutableArray<AbstractIndex>.Empty;
323public bool TryCreateForTupleElements(ITupleOperation tupleOperation, [NotNullWhen(returnValue: true)] out ImmutableArray<AnalysisEntity> elementEntities)
350TryCreateForTupleElements(parentTupleOperationOpt, out var parentTupleElementEntities))
368parentEntity = AnalysisEntity.Create(underlyingValueTupleType, ImmutableArray<AbstractIndex>.Empty,
384builder.Add(AnalysisEntity.Create(mappedValueTupleField, indices: ImmutableArray<AbstractIndex>.Empty,
397public bool TryCreateForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, [NotNullWhen(returnValue: true)] out AnalysisEntity? analysisEntity)
439private bool TryCreate(ISymbol? symbol, ImmutableArray<AbstractIndex> indices,
554private AnalysisEntity Create(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, ITypeSymbol type, PointsToAbstractValue? instanceLocation, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (12)
990var requiresMethods = ContractNamedType.GetMembers("Requires");
991var assumeMethods = ContractNamedType.GetMembers("Assume");
992var assertMethods = ContractNamedType.GetMembers("Assert");
1946protected abstract void SetAbstractValueForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, IOperation initializer, TAbstractAnalysisValue value);
2205ImmutableArray<IArgumentOperation> arguments,
2782var pendingArguments = _pendingArgumentsToPostProcess.ExtractAll(static (arg, operation) => arg.Parent == operation, operation);
3227void PostVisitInvocation(IMethodSymbol targetMethod, ImmutableArray<IArgumentOperation> arguments)
3252void ProcessInterlockedOperation(IMethodSymbol targetMethod, ImmutableArray<IArgumentOperation> arguments, INamedTypeSymbol interlockedType)
3536ImmutableArray<IArgumentOperation> visitedArguments,
3578ImmutableArray<IArgumentOperation> visitedArguments,
3596ImmutableArray<IArgumentOperation> visitedArguments,
3680if (AnalysisEntityFactory.TryCreateForTupleElements(operation, out var elementEntities))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (22)
88Func<DiagnosticAnalyzer, ImmutableArray<DiagnosticDescriptor>> getSupportedDiagnostics,
158using var _2 = ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)>.GetInstance(out var sortedPragmasWithIds);
230ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
232ImmutableArray<string> userExclusions)
346private static (ImmutableArray<string> userIdExclusions, ImmutableArray<string> userCategoryExclusions, bool analyzerDisabled) ParseUserExclusions(string? userExclusions)
389private static async Task<(ImmutableArray<Diagnostic> reportedDiagnostics, ImmutableArray<string> unhandledIds)> GetReportedDiagnosticsForIdsAsync(
394Func<DiagnosticAnalyzer, ImmutableArray<DiagnosticDescriptor>> getSupportedDiagnostics,
462var analyzers = analyzersBuilder.ToImmutable();
483static void AddAllDiagnostics(ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<Diagnostic>> diagnostics, ArrayBuilder<Diagnostic> reportedDiagnostics)
485foreach (var perAnalyzerDiagnostics in diagnostics.Values)
493foreach (var perAnalyzerDiagnostics in analysisResult.CompilationDiagnostics.Values)
507ImmutableArray<Diagnostic> diagnostics,
610ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
632ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
643ImmutableArray<Location> additionalLocations;
679ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
683var idsForPragma = sortedPragmasWithIds[indexOfPragma].ids;
690var intersect = nextPragmaIds.Intersect(idsForPragma).ToImmutableArray();
738ImmutableArray<string> userIdExclusions,
739ImmutableArray<string> userCategoryExclusions,
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (8)
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
170private ImmutableArray<ParameterName> GenerateParameterNames(
176var isFixed = reservedNames.Select(s => true).Concat(
179var parameterNames = reservedNames.Concat(
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.State.cs (32)
35private ImmutableArray<Argument<TExpressionSyntax>> _arguments;
40private ImmutableArray<RefKind> _parameterRefKinds;
41public ImmutableArray<ITypeSymbol> ParameterTypes;
48private ImmutableArray<IParameterSymbol> _parameters;
128var typeParametersNames = TypeToGenerateIn.GetAllTypeParameters().SelectAsArray(t => t.Name);
129var parameterNames = GetParameterNames(_arguments, typeParametersNames, cancellationToken);
136private ImmutableArray<ParameterName> GetParameterNames(
137ImmutableArray<Argument<TExpressionSyntax>> arguments, ImmutableArray<string> typeParametersNames, CancellationToken cancellationToken)
146var parameters = ParameterTypes.Zip(_parameterRefKinds,
148var expressions = _arguments.SelectAsArray(a => a.Expression);
160var remainingArguments = _arguments.Skip(argumentCount).ToImmutableArray();
161var remainingParameterNames = _service.GenerateParameterNames(
172var remainingParameterTypes = ParameterTypes.Skip(argumentCount).ToImmutableArray();
183ImmutableArray<IParameterSymbol> allParameters,
184ImmutableArray<TExpressionSyntax?> allExpressions,
192var parameters = allParameters[0..i];
193var expressions = allExpressions[0..i];
204ImmutableArray<IParameterSymbol> parameters,
205ImmutableArray<TExpressionSyntax?> expressions,
206ImmutableArray<IMethodSymbol> constructors,
278internal ImmutableArray<ITypeSymbol> GetParameterTypes(CancellationToken cancellationToken)
280var allTypeParameters = TypeToGenerateIn.GetAllTypeParameters();
300out var token, out var arguments, out var typeToGenerateIn))
318out var token, out var arguments, out var typeToGenerateIn))
337out var token, out var arguments, out var typeToGenerateIn))
431var delegatingArguments = this.GetRequiredLanguageService<SyntaxGenerator>(TypeToGenerateIn.Language).CreateArguments(_delegatedConstructor.Parameters);
433var newParameters = _delegatedConstructor.Parameters.Concat(_parameters);
458private async Task<(ImmutableArray<ISymbol>, ImmutableArray<SyntaxNode>)> GenerateMembersAndAssignmentsAsync(
463var members = withFields ? SyntaxGeneratorExtensions.CreateFieldsForParameters(_parameters, ParameterToNewFieldMap, IsContainedInUnsafeType) :
468var assignments = !withFields && !withProperties
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (72)
29ImmutableArray<AttributeData> attributes, Accessibility accessibility,
31ImmutableArray<IEventSymbol> explicitInterfaceImplementations,
44ImmutableArray<AttributeData> attributes,
49ImmutableArray<IPropertySymbol> explicitInterfaceImplementations,
51ImmutableArray<IParameterSymbol> parameters,
78ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
79ITypeSymbol type, RefKind refKind, ImmutableArray<IPropertySymbol> explicitInterfaceImplementations, string name,
80ImmutableArray<IParameterSymbol> parameters, IMethodSymbol? getMethod, IMethodSymbol? setMethod,
103ImmutableArray<AttributeData> attributes,
120ImmutableArray<AttributeData> attributes,
124ImmutableArray<IParameterSymbol> parameters,
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
139ImmutableArray<AttributeData> attributes, string typeName,
140ImmutableArray<SyntaxNode> statements = default)
149ImmutableArray<AttributeData> attributes,
154ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
156ImmutableArray<ITypeParameterSymbol> typeParameters,
157ImmutableArray<IParameterSymbol> parameters,
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
160ImmutableArray<AttributeData> returnTypeAttributes = default,
173ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
176ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
177string? name, ImmutableArray<ITypeParameterSymbol> typeParameters,
178ImmutableArray<IParameterSymbol> parameters,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
181ImmutableArray<AttributeData> returnTypeAttributes = default,
192ImmutableArray<AttributeData> attributes,
197ImmutableArray<IParameterSymbol> parameters,
198ImmutableArray<SyntaxNode> statements = default,
199ImmutableArray<AttributeData> returnTypeAttributes = default,
224ImmutableArray<SyntaxNode> statements = default,
225ImmutableArray<AttributeData> toTypeAttributes = default,
245ImmutableArray<AttributeData> attributes,
252ImmutableArray<SyntaxNode> statements = default,
253ImmutableArray<AttributeData> toTypeAttributes = default,
277ImmutableArray<AttributeData> attributes, RefKind refKind, bool isParams, ITypeSymbol type, string name, bool isOptional = false, bool hasDefaultValue = false, object? defaultValue = null)
287ImmutableArray<AttributeData>? attributes = null,
329ImmutableArray<AttributeData> attributes,
331ImmutableArray<ITypeSymbol> constraintTypes,
358ImmutableArray<AttributeData> attributes = default,
360ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
361ImmutableArray<SyntaxNode> statements = default)
383ImmutableArray<AttributeData> attributes,
385ImmutableArray<SyntaxNode> statements)
405ImmutableArray<TypedConstant> constructorArguments = default,
406ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments = default)
415ImmutableArray<AttributeData> attributes,
419ImmutableArray<ITypeParameterSymbol> typeParameters = default,
421ImmutableArray<INamedTypeSymbol> interfaces = default,
423ImmutableArray<ISymbol> members = default,
434ImmutableArray<AttributeData> attributes,
438ImmutableArray<ITypeParameterSymbol> typeParameters = default,
440ImmutableArray<INamedTypeSymbol> interfaces = default,
442ImmutableArray<ISymbol> members = default,
460ImmutableArray<AttributeData> attributes,
466ImmutableArray<ITypeParameterSymbol> typeParameters = default,
467ImmutableArray<IParameterSymbol> parameters = default,
512ImmutableArray<AttributeData> attributes = default,
515ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
517ImmutableArray<IParameterSymbol>? parameters = null,
518ImmutableArray<SyntaxNode> statements = default,
521Optional<ImmutableArray<AttributeData>> returnTypeAttributes = default)
542ImmutableArray<AttributeData> attributes = default,
543ImmutableArray<IParameterSymbol>? parameters = null,
546ImmutableArray<IPropertySymbol> explicitInterfaceImplementations = default,
570ImmutableArray<AttributeData> attributes = default,
573ImmutableArray<IEventSymbol> explicitInterfaceImplementations = default,
591ImmutableArray<AttributeData> attributes = default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\ITypeInferenceServiceExtensions.cs (9)
15public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
18public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
21public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
24public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
33var types = typeInferenceService.InferTypes(semanticModel, expression, cancellationToken);
43var types = typeInferenceService.InferTypes(semanticModel, position, cancellationToken);
47private static INamedTypeSymbol? GetFirstDelegateType(SemanticModel semanticModel, ImmutableArray<ITypeSymbol> types)
73var types = typeInferenceService.InferTypes(semanticModel, expression, name, cancellationToken);
103var types = typeInferenceService.InferTypes(semanticModel, position, name, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (4)
24public async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (9)
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
57var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
58var containers = GetAllContainers(root, contextLocation);
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
137var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
138var containers = GetAllContainers(root, contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\TypeInferenceService\ITypeInferenceService.cs (4)
27ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
28ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
30ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
31ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
Binder\Binder_Attributes.cs (37)
30ImmutableArray<Binder> binders, ImmutableArray<AttributeSyntax> attributesToBind, Symbol ownerSymbol, NamedTypeSymbol[] boundAttributeTypes,
72ImmutableArray<Binder> binders,
73ImmutableArray<AttributeSyntax> attributesToBind,
74ImmutableArray<NamedTypeSymbol> boundAttributeTypes,
184ImmutableArray<int> argsToParamsOpt;
188ImmutableArray<BoundExpression> boundConstructorArguments;
206out var candidateConstructors,
261ImmutableArray<string?> boundConstructorArgumentNamesOpt = analyzedArguments.ConstructorArguments.GetNames();
266ImmutableArray<BoundAssignmentOperator> boundNamedArguments = analyzedArguments.NamedArguments?.ToImmutableAndFree() ?? ImmutableArray<BoundAssignmentOperator>.Empty;
306var arguments = boundAttribute.ConstructorArguments;
307var constructorArgsArray = visitor.VisitArguments(arguments, diagnostics, ref hasErrors);
308var namedArguments = visitor.VisitNamedArguments(boundAttribute.NamedArguments, diagnostics, ref hasErrors);
312ImmutableArray<int> argsToParamsOpt = boundAttribute.ConstructorArgumentsToParamsOpt;
313ImmutableArray<TypedConstant> rewrittenArguments;
346ImmutableArray<int> makeSourceIndices()
398private void ValidateTypeForAttributeParameters(ImmutableArray<ParameterSymbol> parameters, CSharpSyntaxNode syntax, BindingDiagnosticBag diagnostics, ref bool hasErrors)
427ImmutableArray<string> conditionalSymbols = attributeType.GetAppliedConditionalSymbols();
704private ImmutableArray<TypedConstant> GetRewrittenAttributeConstructorArguments(
706ImmutableArray<TypedConstant> constructorArgsArray,
708ImmutableArray<int> argumentsToParams,
718ImmutableArray<ParameterSymbol> parameters = attributeConstructor.Parameters;
769public ImmutableArray<TypedConstant> VisitArguments(ImmutableArray<BoundExpression> arguments, BindingDiagnosticBag diagnostics, ref bool attrHasErrors, bool parentHasErrors = false)
771var validatedArguments = ImmutableArray<TypedConstant>.Empty;
790public ImmutableArray<KeyValuePair<string, TypedConstant>> VisitNamedArguments(ImmutableArray<BoundAssignmentOperator> arguments, BindingDiagnosticBag diagnostics, ref bool attrHasErrors)
810return ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty;
886var elements = collection.Elements;
981ImmutableArray<BoundExpression> bounds = node.Bounds;
992ImmutableArray<TypedConstant> initializer;
997initializer = ImmutableArray<TypedConstant>.Empty;
1003initializer = ImmutableArray<TypedConstant>.Empty;
1021object? simpleValue = null, ImmutableArray<TypedConstant> arrayValue = default(ImmutableArray<TypedConstant>))
Binder\Binder_Await.cs (4)
364var awaitMembers = asyncHelpersType.GetMembers("Await");
601getAwaiterCall = MakeInvocationExpression(node, expression, WellKnownMemberNames.GetAwaiter, ImmutableArray<BoundExpression>.Empty, diagnostics);
642var qualified = BindInstanceMemberAccess(node, node, receiver, name, 0, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeWithAnnotations>), invoked: false, indexed: false, diagnostics);
715getAwaiterGetResultCall = MakeInvocationExpression(node, awaiterExpression, WellKnownMemberNames.GetResult, ImmutableArray<BoundExpression>.Empty, diagnostics);
Binder\Binder_Conversions.cs (52)
434ImmutableArray<TypeWithAnnotations> sourceTypes;
435ImmutableArray<TypeWithAnnotations> destTypes;
441var elementConversions = conversion.UnderlyingConversions;
765var members = type.GetMembers(name);
789ImmutableArray<BoundExpression> parts = BindInterpolatedStringPartsForFactory(unconvertedSource, diagnostics, out bool haveErrors);
916CollectionExpressionTypeKind collectionTypeKind, ImmutableArray<BoundNode> elements, BoundObjectOrCollectionValuePlaceholder? placeholder = null, BoundExpression? collectionCreation = null, MethodSymbol? collectionBuilderMethod = null, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder = null)
1004var elements = BindElements(elementType);
1052var elements = _node.Elements;
1152private readonly ImmutableArray<BoundNode> BindElements(TypeSymbol elementType)
1154var elements = _node.Elements;
1157var elementConversions = _conversion.UnderlyingConversions;
1219ImmutableArray<BoundNode> elements)
1246private readonly BoundCollectionExpression? TryConvertCollectionExpressionArrayInterfaceType(ImmutableArray<BoundNode> elements)
1306var candidateConstructors = candidateConstructorsBuilder.ToImmutableAndFree();
1340private readonly BoundCollectionExpression? TryConvertCollectionExpressionBuilderType(ImmutableArray<BoundNode> elements)
1358var collectionBuilderMethods = @this._binder.GetCollectionBuilderMethods(@this._node.Syntax, namedType, @this._diagnostics, forParams: false);
1438var arguments = projectionCall.Arguments;
1439var argumentNames = projectionCall.ArgumentNamesOpt;
1440var argumentRefKinds = projectionCall.ArgumentRefKindsOpt;
1449var argsToParams = projectionCall.ArgsToParamsOpt;
1496internal ImmutableArray<MethodSymbol> GetCollectionBuilderMethods(
1510var collectionBuilderMethods = collectMethods(
1522ImmutableArray<MethodSymbol> collectMethods(
1540var allTypeArguments = targetType.GetAllTypeArgumentsNoUseSiteDiagnostics();
1587var allTypeParameters = TypeMap.TypeParametersAsTypeSymbolsWithAnnotations(targetType.OriginalDefinition.GetAllTypeParameters());
1709var candidateConstructors = GetAccessibleConstructorsForOverloadResolution(
1711out var allInstanceConstructors, ref useSiteInfo);
1833internal bool HasCollectionExpressionApplicableAddMethod(SyntaxNode syntax, TypeSymbol targetType, out ImmutableArray<MethodSymbol> addMethods, BindingDiagnosticBag diagnostics)
1878out ImmutableArray<MethodSymbol> addMethods)
1896out ImmutableArray<MethodSymbol> addMethods)
1901typeArgumentsWithAnnotations: default(ImmutableArray<TypeWithAnnotations>),
1937out ImmutableArray<MethodSymbol> addMethods)
1952out ImmutableArray<MethodSymbol> addMethods)
2005var finalApplicableCandidates = addMethodBinder.GetCandidatesPassingFinalValidation(syntax, resolution.OverloadResolutionResult,
2057static ImmutableArray<MethodSymbol> filterOutBadGenericMethods(
2059ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2082var typeParameters = member.TypeParameters;
2121parameterTypes: out ImmutableArray<TypeWithAnnotations> parameterTypes,
2122parameterRefKinds: out ImmutableArray<RefKind> parameterRefKinds);
2315var withArguments = node.WithElement?.Arguments ?? [];
2321var naturalWithArguments = withArgumentsBuilder.ToImmutableAndFree();
2384var elements = node.Elements;
2458ImmutableArray<Conversion> underlyingConversions = conversion.UnderlyingConversions;
2496ImmutableArray<Conversion> underlyingConversions = conversion.UnderlyingConversions;
2512var newSwitchArms = builder.ToImmutableAndFree();
2777var candidateConstructors = ImmutableArray.Create(analysis.Operator);
3006var delegateParameters = delegateType.DelegateParameters();
3178var arguments = sourceTuple.Arguments;
3181var targetElementTypes = targetType.TupleElementTypesWithAnnotations;
3183var underlyingConversions = conversionWithoutNullable.UnderlyingConversions;
3532var delegateOrFuncPtrParameters = delegateOrFuncPtrMethod.Parameters;
3533var methodParameters = method.Parameters;
Binder\Binder_Crefs.cs (54)
19internal ImmutableArray<Symbol> BindCref(CrefSyntax syntax, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
21ImmutableArray<Symbol> symbols = BindCrefInternal(syntax, out ambiguityWinner, diagnostics);
27private ImmutableArray<Symbol> BindCrefInternal(CrefSyntax syntax, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
46private ImmutableArray<Symbol> BindTypeCref(TypeCrefSyntax syntax, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
65private ImmutableArray<Symbol> BindQualifiedCref(QualifiedCrefSyntax syntax, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
101private ImmutableArray<Symbol> BindMemberCref(MemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
112return ImmutableArray<Symbol>.Empty;
115ImmutableArray<Symbol> result;
147private ImmutableArray<Symbol> BindNameMemberCref(NameMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
177return ImmutableArray<Symbol>.Empty;
180ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, memberNameText, arity, syntax.Parameters != null, diagnostics);
185return ImmutableArray<Symbol>.Empty;
198private ImmutableArray<Symbol> BindIndexerMemberCref(IndexerMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
202ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, WellKnownMemberNames.Indexer, memberNameText: WellKnownMemberNames.Indexer, arity, syntax.Parameters != null, diagnostics);
207return ImmutableArray<Symbol>.Empty;
224private ImmutableArray<Symbol> BindExtensionMemberCref(ExtensionMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
255return ImmutableArray<Symbol>.Empty;
260ImmutableArray<Symbol> sortedSymbols = computeSortedAndFilteredCrefExtensionMembers(containerOpt, memberName, extensionArity, arity, extensionTypeArguments, diagnostics, syntax);
272ImmutableArray<Symbol> computeSortedAndFilteredCrefExtensionMembers(NamespaceOrTypeSymbol? containerOpt, string name, int extensionArity, int arity, TypeArgumentListSyntax? extensionTypeArguments, BindingDiagnosticBag diagnostics, ExtensionMemberCrefSyntax syntax)
277ImmutableArray<ParameterSymbol> extensionParameterSymbols = BindCrefParameters(syntax.Parameters, diagnostics);
331var candidates = constructedNested.GetMembers(name);
361return ImmutableArray<Symbol>.Empty;
373ImmutableArray<NamedTypeSymbol> candidateTypes(NamespaceOrTypeSymbol? containerOpt)
394private ImmutableArray<Symbol> BindOperatorMemberCref(OperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
403return ImmutableArray<Symbol>.Empty;
406ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, memberNameText: memberName, arity, syntax.Parameters != null, diagnostics);
411return ImmutableArray<Symbol>.Empty;
469private ImmutableArray<Symbol> BindConversionOperatorMemberCref(ConversionOperatorMemberCrefSyntax syntax, NamespaceOrTypeSymbol? containerOpt, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
482return ImmutableArray<Symbol>.Empty;
496ImmutableArray<Symbol> sortedSymbols = ComputeSortedCrefMembers(syntax, containerOpt, memberName, memberNameText: memberName, arity, syntax.Parameters != null, diagnostics);
501return ImmutableArray<Symbol>.Empty;
513return ImmutableArray<Symbol>.Empty;
534private ImmutableArray<Symbol> ComputeSortedCrefMembers(CSharpSyntaxNode syntax, NamespaceOrTypeSymbol? containerOpt, string memberName, string memberNameText, int arity, bool hasParameterList, BindingDiagnosticBag diagnostics)
537var result = ComputeSortedCrefMembers(containerOpt, memberName, memberNameText, arity, hasParameterList, syntax, diagnostics, ref useSiteInfo);
542private ImmutableArray<Symbol> ComputeSortedCrefMembers(NamespaceOrTypeSymbol? containerOpt, string memberName, string memberNameText, int arity, bool hasParameterList, CSharpSyntaxNode syntax,
647ImmutableArray<MethodSymbol> instanceConstructors = constructorType.InstanceConstructors;
652return ImmutableArray<Symbol>.Empty;
660return ImmutableArray<Symbol>.Empty;
681private ImmutableArray<Symbol> ProcessCrefMemberLookupResults(
682ImmutableArray<Symbol> symbols,
700ImmutableArray<ParameterSymbol> parameterSymbols = BindCrefParameters(parameterListSyntax, diagnostics);
701ImmutableArray<Symbol> results = PerformCrefOverloadResolution(candidates, parameterSymbols, arity, memberSyntax, out ambiguityWinner, diagnostics);
832private ImmutableArray<Symbol> ProcessParameterlessCrefMemberLookupResults(
833ImmutableArray<Symbol> symbols,
939private void GetCrefOverloadResolutionCandidates(ImmutableArray<Symbol> symbols, int arity, TypeArgumentListSyntax? typeArgumentListSyntax, ArrayBuilder<Symbol> candidates)
965private static ImmutableArray<Symbol> PerformCrefOverloadResolution(ArrayBuilder<Symbol> candidates, ImmutableArray<ParameterSymbol> parameterSymbols, int arity, MemberCrefSyntax memberSyntax, out Symbol? ambiguityWinner, BindingDiagnosticBag diagnostics)
1005refCustomModifiers: ImmutableArray<CustomModifier>.Empty,
1006explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty);
1020refCustomModifiers: ImmutableArray<CustomModifier>.Empty,
1022explicitInterfaceImplementations: ImmutableArray<PropertySymbol>.Empty);
1068return ImmutableArray<Symbol>.Empty;
1136private ImmutableArray<ParameterSymbol> BindCrefParameters(BaseCrefParameterListSyntax parameterListSyntax, BindingDiagnosticBag diagnostics)
1152parameterBuilder.Add(new SignatureOnlyParameterSymbol(TypeWithAnnotations.Create(type), ImmutableArray<CustomModifier>.Empty, isParamsArray: false, isParamsCollection: false, refKind: refKind));
Binder\Binder_Deconstruct.cs (13)
252ImmutableArray<TypeSymbol> tupleOrDeconstructedTypes;
279inputPlaceholder, rightSyntax, diagnostics, outPlaceholders: out ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders, out _, variables);
351private void SetInferredTypes(ArrayBuilder<DeconstructionVariable> variables, ImmutableArray<TypeSymbol> foundTypes, BindingDiagnosticBag diagnostics)
538elementNames: default(ImmutableArray<string?>),
543errorPositions: default(ImmutableArray<bool>),
574ImmutableArray<BoundExpression> arguments = valuesBuilder.ToImmutableAndFree();
580ImmutableArray<string?> tupleNames = namesBuilder is null ? default : namesBuilder.ToImmutableAndFree();
581ImmutableArray<bool> inferredPositions = tupleNames.IsDefault ? default : tupleNames.SelectAsArray(n => n != null);
618out ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders,
627outPlaceholders = default(ImmutableArray<BoundDeconstructValuePlaceholder>);
657typeArgumentsWithAnnotations: default(ImmutableArray<TypeWithAnnotations>),
687var parameters = deconstructMethod.Parameters;
718out ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders, BoundExpression childNode)
Binder\Binder_Expressions.cs (182)
120return BadExpression(syntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty);
128return BadExpression(syntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, childNode);
134private BoundBadExpression BadExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> childNodes)
136return BadExpression(syntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, childNodes);
144return BadExpression(syntax, lookupResultKind, ImmutableArray<Symbol>.Empty);
152return BadExpression(syntax, lookupResultKind, ImmutableArray<Symbol>.Empty, childNode);
158private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols)
163ImmutableArray<BoundExpression>.Empty,
171private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, BoundExpression childNode)
196private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, ImmutableArray<BoundExpression> childNodes, bool wasCompilerGenerated = false)
896node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(BindToTypeForErrorRecovery(BindValue(node.Expression, BindingDiagnosticBag.Discarded, BindValueKind.RefersToLocation))),
1008ImmutableArray<BoundExpression> subExpressions = builder.ToImmutableAndFree();
1014ImmutableArray<string> tupleNames = namesBuilder is null ? default : namesBuilder.ToImmutableAndFree();
1015ImmutableArray<bool> inferredPositions = tupleNames.IsDefault ? default : tupleNames.SelectAsArray(n => n != null);
1047var args = numElements == 1 ?
1049ImmutableArray<BoundExpression>.Empty;
1083argumentSyntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty,
1099var elements = elementTypesWithAnnotations.ToImmutableAndFree();
1100var locations = elementLocations.ToImmutableAndFree();
1108includeNullability: false, errorPositions: disallowInferredNames ? inferredPositions : default(ImmutableArray<bool>));
1120private static (ImmutableArray<string> elementNamesArray, ImmutableArray<bool> inferredArray, bool hasErrors) ExtractTupleElementNames(
1164private static (ImmutableArray<string> names, ImmutableArray<bool> inferred) MergeTupleElementNames(
1171return (default(ImmutableArray<string>), default(ImmutableArray<bool>));
1175var finalNames = inferredElementNames.ToImmutable();
1182return (elementNames.ToImmutable(), default(ImmutableArray<bool>));
1689var typeArgumentsWithAnnotations = hasTypeArguments ?
1691default(ImmutableArray<TypeWithAnnotations>);
2882ImmutableArray<MethodSymbol> originalUserDefinedConversions = conversion.OriginalUserDefinedOrUnionConversions;
2913var targetElementTypesWithAnnotations = default(ImmutableArray<TypeWithAnnotations>);
2972ImmutableArray<BoundExpression> tupleArguments,
2973ImmutableArray<TypeWithAnnotations> targetElementTypesWithAnnotations)
3388foreach (Symbol member in ContainingType?.GetMembers(identifier) ?? ImmutableArray<Symbol>.Empty)
3508out ImmutableArray<int> argsToParamsOpt)
3518var parameters = methodResult.LeastOverriddenMember.GetParameters();
3564ImmutableArray<ParameterSymbol> parameters,
3620ImmutableArray<ParameterSymbol> parameters,
3653ImmutableArray<ParameterSymbol> parameters,
3657ref ImmutableArray<int> argsToParamsOpt,
3682ImmutableArray<BoundExpression> collectionArgs = paramsArgsBuilder.ToImmutableAndFree();
3736static ParameterSymbol getCorrespondingParameter(in MemberAnalysisResult result, ImmutableArray<ParameterSymbol> parameters, int arg)
3746ImmutableArray<ParameterSymbol> parameters,
3759var handlerParameterIndexes = correspondingParameter.InterpolatedStringHandlerArgumentIndexes;
3815ImmutableArray<int> handlerArgumentIndexes;
4171ImmutableArray<BoundExpression> arraySizes = sizes.ToImmutableAndFree();
4211ImmutableArray<BoundExpression> boundInitializerExpressions = BindArrayInitializerExpressions(initializer, diagnostics, dimension: 1, rank: rank);
4232sizes: ImmutableArray<BoundExpression>.Empty, boundInitExprOpt: boundInitializerExpressions);
4238ImmutableArray<BoundExpression> boundInitializerExpressions = BindArrayInitializerExpressions(initializer, diagnostics, dimension: 1, rank: 1);
4270private ImmutableArray<BoundExpression> BindArrayInitializerExpressions(InitializerExpressionSyntax initializer, BindingDiagnosticBag diagnostics, int dimension, int rank)
4358ImmutableArray<BoundExpression> boundInitExpr,
4439ImmutableArray<BoundExpression> boundInitExprOpt = default(ImmutableArray<BoundExpression>))
4506ImmutableArray<BoundExpression> sizes,
4507ImmutableArray<BoundExpression> boundInitExprOpt = default(ImmutableArray<BoundExpression>),
4597ImmutableArray<Symbol>.Empty,
4598ImmutableArray<BoundExpression>.Empty,
4636ImmutableArray<Symbol>.Empty,
4767ImmutableArray<BoundExpression> boundInitExprOpt = default)
4980symbols: ImmutableArray<Symbol>.Empty,
4991symbols: ImmutableArray<Symbol>.Empty, //CONSIDER: we could look for a matching constructor on System.ValueType
5034symbols: ImmutableArray<Symbol>.Empty, //CONSIDER: we could look for a matching constructor on System.ValueType
5040ImmutableArray<MethodSymbol> candidateConstructors;
5074ImmutableArray<MethodSymbol> candidateConstructors,
5080ImmutableArray<int> argsToParamsOpt;
5168var arguments = analyzedArguments.Arguments.ToImmutable();
5169var refKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
5204typeArgumentsWithAnnotations: ImmutableArray<TypeWithAnnotations>.Empty,
5356return new BoundBadExpression(syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, CreateErrorType());
5694var childNodes = BuildArgumentsForErrorRecovery(analyzedArguments);
6077ImmutableArray<BoundExpression> arguments = ImmutableArray<BoundExpression>.Empty;
6078ImmutableArray<string> argumentNamesOpt = default;
6079ImmutableArray<int> argsToParamsOpt = default;
6080ImmutableArray<RefKind> argumentRefKindsOpt = default;
6133var handlerPlaceholders = operand.GetInterpolatedStringHandlerData().ArgumentPlaceholders;
6311ImmutableArray<BoundExpression> initializers,
6576ImmutableArray<BoundExpression> boundElementInitializerExpressions,
6604return BadExpression(elementInitializer, LookupResultKind.NotInvocable, ImmutableArray<Symbol>.Empty, boundElementInitializerExpressions);
6628ImmutableArray<BoundExpression> boundElementInitializerExpressions,
6644applicableMethods: ImmutableArray<MethodSymbol>.Empty,
6768internal ImmutableArray<MethodSymbol> FilterInaccessibleConstructors(ImmutableArray<MethodSymbol> constructors, bool allowProtectedConstructorsOfBaseType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
6870ImmutableArray<MethodSymbol> accessibleConstructors = GetAccessibleConstructorsForOverloadResolution(type, ref useSiteInfo);
6875var finalApplicableCandidates = GetCandidatesPassingFinalValidation(node, overloadResolutionResult, receiverOpt: null, default(ImmutableArray<TypeWithAnnotations>), isExtensionMethodGroup: false, diagnostics);
6883var argArray = BuildArgumentsForDynamicInvocation(analyzedArguments, diagnostics);
6884var refKindsArray = analyzedArguments.RefKinds.ToImmutableOrNull();
6920out ImmutableArray<MethodSymbol> candidateConstructors,
6940ImmutableArray<MethodSymbol> candidateConstructors,
6955ImmutableArray<int> argToParams;
6993var arguments = analyzedArguments.Arguments.ToImmutable();
6994var refKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
7026ImmutableArray<MethodSymbol> candidateConstructors,
7236var children = BuildArgumentsForErrorRecovery(analyzedArguments);
7243return new BoundBadExpression(node, LookupResultKind.OverloadResolutionFailure, ImmutableArray<Symbol>.Empty, children, interfaceType);
7326out ImmutableArray<MethodSymbol> candidateConstructors,
7336out var allInstanceConstructors, ref useSiteInfo);
7359ref ImmutableArray<MethodSymbol> candidateConstructors,
7360ImmutableArray<MethodSymbol> allInstanceConstructors,
7480private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
7482ImmutableArray<MethodSymbol> allInstanceConstructors;
7486private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, bool allowProtectedConstructorsOfBaseType, out ImmutableArray<MethodSymbol> allInstanceConstructors, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
7841ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations = rightHasTypeArguments ?
7843default(ImmutableArray<TypeWithAnnotations>);
7892/// <see cref="MakeQueryInvocation(CSharpSyntaxNode, BoundExpression, string, SeparatedSyntaxList{TypeSyntax}, ImmutableArray{TypeWithAnnotations}, ImmutableArray{BoundExpression}, BindingDiagnosticBag, string?)"/>.
7967var typeArguments = typeArgumentsSyntax.Count > 0 ? BindTypeArguments(typeArgumentsSyntax, diagnostics) : default(ImmutableArray<TypeWithAnnotations>);
8063ImmutableArray<TypeWithAnnotations> typeArguments,
8138ImmutableArray<TypeWithAnnotations> typeArguments,
8258ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, BindingDiagnosticBag diagnostics)
8320ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
8389ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations, LookupResult lookupResult, BoundMethodGroupFlags flags, SyntaxNode node,
8397lookupResult.Symbols.All(s => s.Kind == SymbolKind.Method) ? lookupResult.Symbols.SelectAsArray(s_toMethodSymbolFunc) : ImmutableArray<MethodSymbol>.Empty,
8458ReportQueryLookupFailed(node, boundLeft, plainName, ImmutableArray<Symbol>.Empty, diagnostics);
8535ImmutableArray<Symbol> symbols,
8546var methods = builder.ToImmutableAndFree();
8555default(ImmutableArray<TypeWithAnnotations>),
8571(object)symbolOpt == null ? ImmutableArray<Symbol>.Empty : ImmutableArray.Create(symbolOpt),
8572boundLeft == null ? ImmutableArray<BoundExpression>.Empty : ImmutableArray.Create(AdjustBadExpressionChild(BindToTypeForErrorRecovery(boundLeft))),
8646ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
8724boundDimensionsOpt: ImmutableArray<BoundExpression>.Empty,
8765ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
8849ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
9005ImmutableArray<Symbol> symbols = lookupResult.Symbols.ToImmutable();
9036ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
9296ImmutableArray<BoundImplicitIndexerValuePlaceholder> intIndexerOrSliceArgumentPlaceholders = default;
9319ref ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
9543ref ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
9571ref ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
9648ref ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
9779ImmutableArray<string?> argumentNames = analyzedArguments.GetNames();
9780ImmutableArray<RefKind> argumentRefKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
10600var childBoundNodes = BuildArgumentsForErrorRecovery(analyzedArguments).Add(expr);
10601return new BoundBadExpression(node, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, childBoundNodes, CreateErrorType(), hasErrors: true);
10622return BindDynamicIndexer(node, expr, arguments, ImmutableArray<PropertySymbol>.Empty, diagnostics);
10706var argumentPlaceholders = ImmutableArray.Create(new BoundImplicitIndexerValuePlaceholder(convertedArguments[0].Syntax, int32) { WasCompilerGenerated = true });
10714indexerOrSliceAccess: new BoundArrayAccess(node, receiverPlaceholder, ImmutableArray<BoundExpression>.CastUp(argumentPlaceholders), resultType) { WasCompilerGenerated = true },
11024var properties = propertyGroup.Properties;
11036ImmutableArray<BoundExpression>.Empty,
11037default(ImmutableArray<string>),
11038default(ImmutableArray<RefKind>),
11049private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
11068ImmutableArray<PropertySymbol> applicableProperties,
11092var argArray = BuildArgumentsForDynamicInvocation(arguments, diagnostics);
11093var refKindsArray = arguments.RefKinds.ToImmutableOrNull();
11130var finalApplicableCandidates = GetCandidatesPassingFinalValidation(syntax, overloadResolutionResult, receiver, default(ImmutableArray<TypeWithAnnotations>), isExtensionMethodGroup: false, diagnostics);
11156ImmutableArray<string> argumentNames = analyzedArguments.GetNames();
11157ImmutableArray<RefKind> argumentRefKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
11160ImmutableArray<PropertySymbol> candidates = propertyGroup.ToImmutable();
11179ImmutableArray<BoundExpression> arguments = BuildArgumentsForErrorRecovery(analyzedArguments, candidates);
11205private BoundIndexerAccess BindResolvedIndexerOrIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics, ImmutableArray<string> argumentNames, ImmutableArray<RefKind> argumentRefKinds, MemberResolutionResult<PropertySymbol> resolutionResult)
11218ImmutableArray<int> argsToParams;
11231var arguments = analyzedArguments.Arguments.ToImmutable();
11275ImmutableArray<BoundImplicitIndexerValuePlaceholder> intIndexerOrSliceArgumentPlaceholders = default;
11295ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
11351ref ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders,
11402out ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders)
11572private ErrorPropertySymbol CreateErrorPropertySymbol(ImmutableArray<PropertySymbol> propertyGroup)
11739var methods = node.Methods;
11867ImmutableArray<TypeWithAnnotations> typeArguments = node.TypeArgumentsOpt;
12013var typeArguments = node.TypeArgumentsOpt;
12191ImmutableArray<ScopedKind>? parameterScopesOverride = null,
12192ImmutableArray<bool>? parameterHasUnscopedRefAttributesOverride = null,
12196var parameters = methodSymbol.Parameters;
12197var parameterRefKinds = methodSymbol.ParameterRefKinds;
12198var parameterTypes = methodSymbol.ParameterTypesWithAnnotations;
12201var parameterScopes = parameterScopesOverride ??
12203var parameterHasUnscopedRefAttributes = parameterHasUnscopedRefAttributesOverride ??
12205var parameterDefaultValues = parameters.Any(p => p.HasExplicitDefaultValue) ?
12216var typeArguments = returnsVoid ? parameterTypes : parameterTypes.Add(returnType);
12279static bool checkConstraints(CSharpCompilation compilation, ConversionsBase conversions, NamedTypeSymbol delegateType, ImmutableArray<TypeWithAnnotations> typeArguments)
12282var typeParameters = delegateType.TypeParameters;
Binder\Binder_InterpolatedString.cs (57)
257ImmutableArray<BoundExpression> parts = BindInterpolatedStringPartsForFactory(unconvertedInterpolatedString, diagnostics, out bool haveErrors);
266BoundInterpolatedString constructWithoutData(ImmutableArray<BoundExpression> parts)
295bool canLowerToStringConcatenation(ImmutableArray<BoundExpression> parts)
317private ImmutableArray<BoundExpression> BindInterpolatedStringPartsForFactory(BoundUnconvertedInterpolatedString unconvertedInterpolatedString, BindingDiagnosticBag diagnostics, out bool haveErrors)
321ImmutableArray<BoundExpression> parts = BindInterpolatedStringParts(unconvertedInterpolatedString, partsDiagnostics);
333ImmutableArray<BoundExpression> parts,
340ImmutableArray<BoundExpression> expressions = makeInterpolatedStringFactoryArguments(syntax, parts, diagnostics);
348typeArgs: default(ImmutableArray<TypeWithAnnotations>),
370ImmutableArray<BoundExpression> makeInterpolatedStringFactoryArguments(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, BindingDiagnosticBag diagnostics)
435private static bool AllInterpolatedStringPartsAreStrings(ImmutableArray<BoundExpression> parts)
465var partsArrayBuilder = ArrayBuilder<ImmutableArray<BoundExpression>>.GetInstance();
469static (BoundUnconvertedInterpolatedString unconvertedInterpolatedString, ArrayBuilder<ImmutableArray<BoundExpression>> partsArrayBuilder) =>
488foreach (var parts in partsArrayBuilder)
515private BoundBinaryOperator UpdateBinaryOperatorWithInterpolatedContents(BoundBinaryOperator originalOperator, ImmutableArray<ImmutableArray<BoundExpression>> appendCalls, InterpolatedStringHandlerData data, SyntaxNode rootSyntax, BindingDiagnosticBag diagnostics)
519Func<BoundUnconvertedInterpolatedString, int, (ImmutableArray<ImmutableArray<BoundExpression>>, TypeSymbol), BoundExpression> interpolationFactory =
521Func<BoundBinaryOperator, BoundExpression, BoundExpression, (ImmutableArray<ImmutableArray<BoundExpression>>, TypeSymbol), BoundExpression> binaryOperatorFactory =
528static BoundInterpolatedString createInterpolation(BoundUnconvertedInterpolatedString expression, int i, (ImmutableArray<ImmutableArray<BoundExpression>> AppendCalls, TypeSymbol _) arg)
540static BoundBinaryOperator createBinaryOperator(BoundBinaryOperator original, BoundExpression left, BoundExpression right, (ImmutableArray<ImmutableArray<BoundExpression>> _, TypeSymbol @string) arg)
559ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments = default,
560ImmutableArray<RefKind> additionalConstructorRefKinds = default)
579ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments = default,
580ImmutableArray<RefKind> additionalConstructorRefKinds = default)
605ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments,
606ImmutableArray<RefKind> additionalConstructorRefKinds)
610var partsArrayBuilder = ArrayBuilder<ImmutableArray<BoundExpression>>.GetInstance();
613static (BoundUnconvertedInterpolatedString unconvertedInterpolatedString, ArrayBuilder<ImmutableArray<BoundExpression>> partsArrayBuilder) =>
632private (ImmutableArray<ImmutableArray<BoundExpression>> AppendCalls, InterpolatedStringHandlerData Data) BindUnconvertedInterpolatedPartsToHandlerType(
634ImmutableArray<ImmutableArray<BoundExpression>> partsArray,
638ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments,
639ImmutableArray<RefKind> additionalConstructorRefKinds)
676foreach (var parts in partsArray)
726var outConstructorAdditionalArguments = additionalConstructorArguments.Add(trailingConstructorValidityPlaceholder);
817static void populateArguments(SyntaxNode syntax, ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments, int baseStringLength, int numFormatHoles, NamedTypeSymbol intType, ArrayBuilder<BoundExpression> argumentsBuilder)
850private ImmutableArray<BoundExpression> BindInterpolatedStringParts(BoundUnconvertedInterpolatedString unconvertedInterpolatedString, BindingDiagnosticBag diagnostics)
895private (ImmutableArray<ImmutableArray<BoundExpression>> AppendFormatCalls, bool UsesBoolReturn, ImmutableArray<ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)>>, int BaseStringLength, int NumFormatHoles) BindInterpolatedStringAppendCalls(
896ImmutableArray<ImmutableArray<BoundExpression>> partsArray,
902return (ImmutableArray<ImmutableArray<BoundExpression>>.Empty, false, ImmutableArray<ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)>>.Empty, 0, 0);
907var builderAppendCallsArray = ArrayBuilder<ImmutableArray<BoundExpression>>.GetInstance(partsArray.Length);
909var positionInfoArray = ArrayBuilder<ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)>>.GetInstance(partsArray.Length);
916foreach (var parts in partsArray)
962var arguments = argumentsBuilder.ToImmutableAndClear();
963ImmutableArray<(string, Location)?> parameterNamesAndLocations;
Binder\Binder_Invocation.cs (66)
42private static ImmutableArray<MethodSymbol> GetOriginalMethods(OverloadResolutionResult<MethodSymbol> overloadResolutionResult)
52return ImmutableArray<MethodSymbol>.Empty;
82ImmutableArray<BoundExpression> args,
85ImmutableArray<TypeWithAnnotations> typeArgs = default(ImmutableArray<TypeWithAnnotations>),
86ImmutableArray<(string Name, Location Location)?> names = default,
319ImmutableArray<BoundExpression> arguments = analyzedArguments.Arguments.ToImmutable();
320ImmutableArray<RefKind> refKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
356result = BindDynamicInvocation(node, boundExpression, analyzedArguments, ImmutableArray<MethodSymbol>.Empty, diagnostics, queryClause);
403ImmutableArray<MethodSymbol> applicableMethods,
488ImmutableArray<BoundExpression> argArray = BuildArgumentsForDynamicInvocation(arguments, diagnostics);
489var refKindsArray = arguments.RefKinds.ToImmutableOrNull();
532private ImmutableArray<BoundExpression> BuildArgumentsForDynamicInvocation(AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
554ImmutableArray<BoundExpression> arguments,
555ImmutableArray<RefKind> refKinds,
673private static bool HasApplicableConditionalMethod(ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates)
774ImmutableArray<MethodSymbol> originalMethods;
776ImmutableArray<TypeWithAnnotations> typeArguments;
848var finalApplicableCandidates = GetCandidatesPassingFinalValidation(syntax, resolution.OverloadResolutionResult,
910private void ReportDynamicInvocationWarnings(SyntaxNode syntax, BoundMethodGroup methodGroup, BindingDiagnosticBag diagnostics, ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates)
926var parameters = candidate.Member.GetParameters();
1034private ImmutableArray<MemberResolutionResult<TMethodOrPropertySymbol>> GetCandidatesPassingFinalValidation<TMethodOrPropertySymbol>(
1038ImmutableArray<TypeWithAnnotations> typeArgumentsOpt,
1276ImmutableArray<int> argsToParams;
1335var argNames = analyzedArguments.GetNames();
1336var argRefKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
1337var args = analyzedArguments.Arguments.ToImmutable();
1513ImmutableArray<ParameterSymbol> parameters,
1514ImmutableArray<int> argsToParamsOpt,
1556ImmutableArray<ParameterSymbol> parameters,
1561ref ImmutableArray<int> argsToParamsOpt,
1663BoundExpression collection = CreateParamsCollection(node, parameters[paramsIndex], collectionArgs: ImmutableArray<BoundExpression>.Empty, diagnostics);
1690BoundExpression? extensionReceiver, ArrayBuilder<BoundExpression> argumentsBuilder, int argumentsCount, ImmutableArray<int> argsToParamsOpt)
1803BoundExpression? extensionReceiver, ArrayBuilder<BoundExpression> argumentsBuilder, int argumentsCount, ImmutableArray<int> argsToParamsOpt,
1830static int getArgumentIndex(int parameterIndex, ImmutableArray<int> argsToParamsOpt, bool hasExtensionReceiver)
1861private BoundExpression CreateParamsCollection(SyntaxNode node, ParameterSymbol paramsParameter, ImmutableArray<BoundExpression> collectionArgs, BindingDiagnosticBag diagnostics)
1888node, withElement: null, ImmutableArray<BoundNode>.CastUp(collectionArgs))
2068ImmutableArray<MethodSymbol> methods,
2070ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
2077ImmutableArray<BoundExpression> args;
2117var argNames = analyzedArguments.GetNames();
2118var argRefKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
2143private ImmutableArray<BoundExpression> BuildArgumentsForErrorRecovery(AnalyzedArguments analyzedArguments, ImmutableArray<MethodSymbol> methods, BindingDiagnosticBag diagnostics)
2145var parameterListList = ArrayBuilder<ImmutableArray<ParameterSymbol>>.GetInstance();
2158var result = BuildArgumentsForErrorRecovery(analyzedArguments, parameterListList, diagnostics);
2163private ImmutableArray<BoundExpression> BuildArgumentsForErrorRecovery(AnalyzedArguments analyzedArguments, ImmutableArray<PropertySymbol> properties)
2165var parameterListList = ArrayBuilder<ImmutableArray<ParameterSymbol>>.GetInstance();
2179var result = BuildArgumentsForErrorRecovery(analyzedArguments, parameterListList, BindingDiagnosticBag.Discarded);
2184private ImmutableArray<BoundExpression> BuildArgumentsForErrorRecovery(AnalyzedArguments analyzedArguments, IEnumerable<ImmutableArray<ParameterSymbol>> parameterListList, BindingDiagnosticBag diagnostics)
2213foreach (var parameterList in parameterListList)
2290foreach (var parameterList in parameterListList)
2320private static TypeSymbol GetCorrespondingParameterType(AnalyzedArguments analyzedArguments, int i, ImmutableArray<ParameterSymbol> parameterList)
2341private ImmutableArray<BoundExpression> BuildArgumentsForErrorRecovery(AnalyzedArguments analyzedArguments)
2343return BuildArgumentsForErrorRecovery(analyzedArguments, Enumerable.Empty<ImmutableArray<ParameterSymbol>>(), BindingDiagnosticBag.Discarded);
2356var args = BuildArgumentsForErrorRecovery(analyzedArguments);
2357var argNames = analyzedArguments.GetNames();
2358var argRefKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
2359var originalMethods = (expr.Kind == BoundKind.MethodGroup) ? ((BoundMethodGroup)expr).Methods : ImmutableArray<MethodSymbol>.Empty;
2364private static TypeSymbol GetCommonTypeOrReturnType<TMember>(ImmutableArray<TMember> members)
2579ImmutableArray<FunctionPointerMethodSymbol> methods = methodsBuilder.ToImmutableAndFree();
2614var args = analyzedArguments.Arguments.ToImmutable();
2615var refKinds = analyzedArguments.RefKinds.ToImmutableOrNull();
Binder\Binder_Lookup.cs (22)
500ImmutableArray<AliasAndExternAliasDirective> externAliases,
546var members = GetCandidateMembers(ns, name, options, originalBinder);
697var originalSymbols = symbols.ToImmutable();
868var members = GetCandidateMembers(type, name, options, originalBinder);
1138private static ImmutableArray<NamedTypeSymbol> GetBaseInterfaces(NamedTypeSymbol type, ConsList<TypeSymbol> basesBeingResolved, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1147return ImmutableArray<NamedTypeSymbol>.Empty;
1150var interfaces = type.GetDeclaredInterfaces(basesBeingResolved);
1154return ImmutableArray<NamedTypeSymbol>.Empty;
1199ImmutableArray<NamedTypeSymbol> baseInterfaces = @interface.GetDeclaredInterfaces(basesBeingResolved);
1219ImmutableArray<NamedTypeSymbol> interfaces,
1395internal static ImmutableArray<Symbol> GetCandidateMembers(NamespaceOrTypeSymbol nsOrType, string name, LookupOptions options, Binder originalBinder)
1407return ImmutableArray<Symbol>.Empty;
1419internal static ImmutableArray<Symbol> GetCandidateMembers(NamespaceOrTypeSymbol nsOrType, LookupOptions options, Binder originalBinder)
1431return ImmutableArray<Symbol>.Empty;
1547var unwrappedSymbols = ImmutableArray.Create<Symbol>(unwrappedSymbol);
1548diagInfo = diagnose ? new CSDiagnosticInfo(ErrorCode.ERR_BadAccess, new[] { unwrappedSymbol }, unwrappedSymbols, additionalLocations: ImmutableArray<Location>.Empty) : null;
1572diagInfo = new CSDiagnosticInfo(ErrorCode.ERR_BadAccess, new[] { unwrappedSymbol }, ImmutableArray.Create<Symbol>(unwrappedSymbol), additionalLocations: ImmutableArray<Location>.Empty);
1627ImmutableArray<byte> publicKey = this.Compilation.Assembly.PublicKey;
1631foreach (ImmutableArray<byte> key in keys)
2024ImmutableArray<AliasAndExternAliasDirective> externAliases,
2056var candidateMembers = result.FilterName != null ? GetCandidateMembers(ns, result.FilterName, options, originalBinder) : GetCandidateMembers(ns, options, originalBinder);
2068var candidateMembers = result.FilterName != null ? GetCandidateMembers(type, result.FilterName, options, originalBinder) : GetCandidateMembers(type, options, originalBinder);
Binder\Binder_Patterns.cs (14)
323private ImmutableArray<BoundPattern> BindListPatternSubpatterns(
398ImmutableArray<BoundPattern> subpatterns = BindListPatternSubpatterns(
585var interfaces = inputType is TypeParameterSymbol typeParam ? typeParam.EffectiveInterfacesNoUseSiteDiagnostics : inputType.AllInterfacesNoUseSiteDiagnostics;
1188ImmutableArray<BoundPositionalSubpattern> deconstructionSubpatterns = default;
1199positionalClause, declType, ImmutableArray<TypeWithAnnotations>.Empty, permitDesignations, ref hasErrors, patternsBuilder, diagnostics, out bool tupleHasUnionMatching);
1215deconstructDiagnostics, outPlaceholders: out ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders,
1246ImmutableArray<BoundPropertySubpattern> properties = default;
1283ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders,
1379ImmutableArray<TypeWithAnnotations> elementTypesWithAnnotations,
1629addSubpatternsForTuple(ImmutableArray<TypeWithAnnotations>.Empty);
1643outPlaceholders: out ImmutableArray<BoundDeconstructValuePlaceholder> outPlaceholders,
1682void addSubpatternsForTuple(ImmutableArray<TypeWithAnnotations> elementTypes)
1722private ImmutableArray<BoundPropertySubpattern> BindPropertyPatternClause(
1854typeArgumentsWithAnnotations: default(ImmutableArray<TypeWithAnnotations>),
Binder\Binder_Query.cs (20)
302state.selectOrGroup, LookupResultKind.OverloadResolutionFailure, ImmutableArray<Symbol?>.Empty,
469var arguments = invocation.Arguments;
538var arguments = invocation.Arguments;
628var arguments = invocation.Arguments;
701return lambdaBodyBinder.CreateBlockFromExpression(node, ImmutableArray<LocalSymbol>.Empty, RefKind.None, construction, null, d);
741yExpression = new BoundBadExpression(yExpression.Syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(yExpression), CreateErrorType());
747yExpression = new BoundBadExpression(yExpression.Syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(yExpression), yExpression.Type);
775var locals = this.GetDeclaredLocalsForScope(expression);
808field2Value = new BoundBadExpression(field2Value.Syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(field2Value), field2Value.Type, true);
836private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray<RangeVariableSymbol> parameters, ExpressionSyntax expression, bool withDependencies)
865private UnboundLambda MakeQueryUnboundLambda(RangeVariableMap qvm, ImmutableArray<RangeVariableSymbol> parameters, CSharpSyntaxNode node, LambdaBodyFactory bodyFactory, bool withDependencies)
885return MakeQueryInvocation(node, receiver, methodName, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeWithAnnotations>), ImmutableArray.Create(arg), diagnostics
892protected BoundCall MakeQueryInvocation(CSharpSyntaxNode node, BoundExpression receiver, string methodName, ImmutableArray<BoundExpression> args, BindingDiagnosticBag diagnostics
898return MakeQueryInvocation(node, receiver, methodName, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeWithAnnotations>), args, diagnostics
911return MakeQueryInvocation(node, receiver, methodName, new SeparatedSyntaxList<TypeSyntax>(new SyntaxNodeOrTokenList(typeArgSyntax, 0)), ImmutableArray.Create(typeArg), ImmutableArray<BoundExpression>.Empty, diagnostics
918protected BoundCall MakeQueryInvocation(CSharpSyntaxNode node, BoundExpression receiver, string methodName, SeparatedSyntaxList<TypeSyntax> typeArgsSyntax, ImmutableArray<TypeWithAnnotations> typeArgs, ImmutableArray<BoundExpression> args, BindingDiagnosticBag diagnostics
964receiver = new BoundBadExpression(receiver.Syntax, LookupResultKind.NotAValue, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(receiver), CreateErrorType());
986receiver = new BoundBadExpression(receiver.Syntax, LookupResultKind.NotAValue, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(receiver), CreateErrorType());
1029protected BoundExpression MakeConstruction(CSharpSyntaxNode node, NamedTypeSymbol toCreate, ImmutableArray<BoundExpression> args, BindingDiagnosticBag diagnostics)
Binder\Binder_QueryErrors.cs (3)
29ImmutableArray<Symbol> symbols,
164internal static void ReportQueryInferenceFailed(CSharpSyntaxNode queryClause, string methodName, BoundExpression receiver, AnalyzedArguments arguments, ImmutableArray<Symbol> symbols, BindingDiagnosticBag diagnostics)
213private static bool ReportQueryInferenceFailedSelectMany(FromClauseSyntax fromClause, string methodName, BoundExpression receiver, AnalyzedArguments arguments, ImmutableArray<Symbol> symbols, BindingDiagnosticBag diagnostics)
Binder\Binder_Statements.cs (42)
146result = new BoundBadStatement(node, ImmutableArray<BoundNode>.Empty, hasErrors: true);
200ImmutableArray<BoundLocalDeclaration> declarations;
535ImmutableArray<BoundNode> childNodes;
543childNodes = ImmutableArray<BoundNode>.Empty;
1113ImmutableArray<BoundExpression> arguments = BindDeclaratorArguments(declarator, localDiagnostics);
1179internal ImmutableArray<BoundExpression> BindDeclaratorArguments(VariableDeclaratorSyntax declarator, BindingDiagnosticBag diagnostics)
1188var arguments = default(ImmutableArray<BoundExpression>);
1884ImmutableArray<BoundExpression>.Empty);
1938private BoundBlock FinishBindBlockParts(CSharpSyntaxNode node, ImmutableArray<BoundStatement> boundStatements)
1940ImmutableArray<LocalSymbol> locals = GetDeclaredLocalsForScope(node);
1945ImmutableArray<MethodSymbol>.CastUp(GetDeclaredLocalFunctionsForScope(node)),
2181var delegateParameters = delegateType.DelegateParameters();
2317ImmutableArray<MethodSymbol> originalUserDefinedConversions = conversion.OriginalUserDefinedOrUnionConversions;
2381var targetElementTypes = default(ImmutableArray<TypeWithAnnotations>);
2554ImmutableArray<BoundExpression> tupleArguments,
2555ImmutableArray<TypeWithAnnotations> targetElementTypes)
2755var best = this.UnaryOperatorOverloadResolution(UnaryOperatorKind.True, expr, node, diagnostics, ref discardedOperatorResolutionForReporting, out LookupResultKind resultKind, out ImmutableArray<MethodSymbol> originalUserDefinedOperators);
2844internal BoundStatement BindForOrUsingOrFixedDeclarations(VariableDeclarationSyntax nodeOpt, LocalDeclarationKind localKind, BindingDiagnosticBag diagnostics, out ImmutableArray<BoundLocalDeclaration> declarations)
2848declarations = ImmutableArray<BoundLocalDeclaration>.Empty;
3295var catchBlocks = BindCatchBlocks(node.Catches, diagnostics);
3300private ImmutableArray<BoundCatchBlock> BindCatchBlocks(SyntaxList<CatchClauseSyntax> catchClauses, BindingDiagnosticBag diagnostics)
3305return ImmutableArray<BoundCatchBlock>.Empty;
3420ImmutableArray<LocalSymbol> locals = binder.GetDeclaredLocalsForScope(node);
3538internal BoundBlock CreateBlockFromExpression(CSharpSyntaxNode node, ImmutableArray<LocalSymbol> locals, RefKind refKind, BoundExpression expression, ExpressionSyntax expressionSyntax, BindingDiagnosticBag diagnostics)
3775ImmutableArray<LocalSymbol> constructorLocals;
3786constructorLocals = ImmutableArray<LocalSymbol>.Empty;
3792blockBody: new BoundBlock(typeDecl, ImmutableArray<LocalSymbol>.Empty, ImmutableArray<BoundStatement>.Empty).MakeCompilerGenerated(),
4072arguments: ImmutableArray<BoundExpression>.Empty,
4073argumentNamesOpt: ImmutableArray<string?>.Empty,
4074argumentRefKindsOpt: ImmutableArray<RefKind>.Empty,
4078argsToParamsOpt: ImmutableArray<int>.Empty,
4151internal virtual ImmutableArray<LocalSymbol> Locals
4155return ImmutableArray<LocalSymbol>.Empty;
4159internal virtual ImmutableArray<LocalFunctionSymbol> LocalFunctions
4163return ImmutableArray<LocalFunctionSymbol>.Empty;
4167internal virtual ImmutableArray<LabelSymbol> Labels
4171return ImmutableArray<LabelSymbol>.Empty;
4179internal virtual ImmutableArray<AliasAndExternAliasDirective> ExternAliases
4193internal virtual ImmutableArray<AliasAndUsingDirective> UsingAliases
Binder\Binder_Symbols.cs (13)
737var typesArray = types.ToImmutableAndFree();
738var locationsArray = locations.ToImmutableAndFree();
750default(ImmutableArray<string>) :
755errorPositions: default(ImmutableArray<bool>),
1255var boundTypeArguments = BindTypeArguments(typeArguments, diagnostics, basesBeingResolved);
1360private ImmutableArray<TypeWithAnnotations> BindTypeArguments(SeparatedSyntaxList<TypeSyntax> typeArguments, BindingDiagnosticBag diagnostics, ConsList<TypeSymbol> basesBeingResolved = null)
1395private NamedTypeSymbol ConstructNamedTypeUnlessTypeArgumentOmitted(SyntaxNode typeSyntax, NamedTypeSymbol type, SeparatedSyntaxList<TypeSyntax> typeArgumentsSyntax, ImmutableArray<TypeWithAnnotations> typeArguments, BindingDiagnosticBag diagnostics)
1441ImmutableArray<TypeWithAnnotations> typeArguments,
1488ImmutableArray<TypeWithAnnotations> typeArguments, bool invoked, ArrayBuilder<Symbol> members, BindingDiagnosticBag diagnostics)
1522receiver = new BoundBadExpression(receiver.Syntax, LookupResultKind.Ambiguous, ImmutableArray<Symbol>.Empty, ImmutableArray.Create(receiver), receiver.Type, hasErrors: true).MakeCompilerGenerated();
1532receiver = new BoundBadExpression(receiver.Syntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, childBoundNodes: [AdjustBadExpressionChild(receiver)], receiver.Type, hasErrors: true).MakeCompilerGenerated();
1635ImmutableArray<TypeWithAnnotations> typeArguments,
2040var originalSymbols = symbols.ToImmutable();
Binder\Binder.ValueChecks.cs (55)
104public ImmutableArray<ParameterSymbol> Parameters;
107public ImmutableArray<BoundExpression> ArgsOpt;
108public ImmutableArray<RefKind> ArgumentRefKindsOpt;
109public ImmutableArray<int> ArgsToParamsOpt;
125public static MethodInvocationInfo FromCallParts(MethodSymbol method, BoundExpression receiver, ImmutableArray<BoundExpression> args, ThreeState receiverIsSubjectToCloning)
245public static MethodInvocationInfo FromInlineArrayConversion(SignatureOnlyMethodSymbol equivalentSignatureMethod, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKinds, bool hasAnyErrors)
291public static MethodInvocationInfo FromInlineArrayAccess(SignatureOnlyMethodSymbol equivalentSignatureMethod, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKinds, bool hasAnyErrors)
651var argsToParams = indexerAccess.ArgsToParamsOpt;
655var parameters = accessorForDefaultArguments.Parameters;
664ImmutableArray<string?> argumentNamesOpt = indexerAccess.ArgumentNamesOpt;
892(object)otherSymbol == null ? ImmutableArray<Symbol>.Empty : ImmutableArray.Create(otherSymbol),
893receiver == null ? ImmutableArray<BoundExpression>.Empty : ImmutableArray.Create(AdjustBadExpressionChild(receiver)),
1220bool checkArrayAccessValueKind(SyntaxNode node, BindValueKind valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
2690var argsOpt = methodInvocationInfo.ArgsOpt;
2693var parameters = methodInvocationInfo.Parameters;
2694var argsToParamsOpt = methodInvocationInfo.ArgsToParamsOpt;
2695var argRefKindsOpt = methodInvocationInfo.ArgumentRefKindsOpt;
2785ImmutableArray<BoundExpression> argsOpt,
2786ImmutableArray<RefKind> argRefKindsOpt,
3300void inferDeclarationExpressionValEscape(ImmutableArray<BoundExpression> argsOpt, ArrayBuilder<EscapeValue> escapeValues)
3325var parameters = methodInvocationInfo.Parameters;
3326var argsOpt = methodInvocationInfo.ArgsOpt;
3327var argsToParamsOpt = methodInvocationInfo.ArgsToParamsOpt;
3390public override ImmutableArray<Location> Locations
3889ImmutableArray<BoundExpression> arguments;
3890ImmutableArray<RefKind> refKinds;
4190ImmutableArray<BoundExpression> arguments;
4191ImmutableArray<RefKind> refKinds;
4525ImmutableArray<BoundExpression> arguments;
4526ImmutableArray<RefKind> refKinds;
4608ImmutableArray<BoundExpression> arguments;
4609ImmutableArray<RefKind> refKinds;
4868private SafeContext GetTupleValEscape(ImmutableArray<BoundExpression> elements)
5015private SafeContext GetValEscape(ImmutableArray<BoundExpression> expressions)
5268ImmutableArray<BoundExpression> arguments;
5269ImmutableArray<RefKind> refKinds;
5393ImmutableArray<BoundExpression> arguments;
5394ImmutableArray<RefKind> refKinds;
5701private SignatureOnlyMethodSymbol GetInlineArrayAccessEquivalentSignatureMethod(BoundInlineArrayAccess elementAccess, out ImmutableArray<BoundExpression> arguments, out ImmutableArray<RefKind> refKinds)
5742ImmutableArray<TypeParameterSymbol>.Empty,
5745ImmutableArray<CustomModifier>.Empty,
5754ImmutableArray<CustomModifier>.Empty,
5755ImmutableArray<MethodSymbol>.Empty);
5763private SignatureOnlyMethodSymbol GetInlineArrayConversionEquivalentSignatureMethod(BoundConversion conversion, out ImmutableArray<BoundExpression> arguments, out ImmutableArray<RefKind> refKinds)
5769private SignatureOnlyMethodSymbol GetInlineArrayConversionEquivalentSignatureMethod(BoundExpression inlineArray, TypeSymbol resultType, out ImmutableArray<BoundExpression> arguments, out ImmutableArray<RefKind> refKinds)
5782ImmutableArray<TypeParameterSymbol>.Empty,
5785ImmutableArray<CustomModifier>.Empty,
5794ImmutableArray<CustomModifier>.Empty,
5795ImmutableArray<MethodSymbol>.Empty);
5803private bool CheckTupleValEscape(ImmutableArray<BoundExpression> elements, SafeContext escapeTo, BindingDiagnosticBag diagnostics)
Binder\Binder.WithQueryLambdaParametersBinder.cs (2)
42ImmutableArray<string> path;
99var result = BindMemberOfType(node, node, name, 0, invoked: false, indexed: false, receiver, default(SeparatedSyntaxList<TypeSyntax>), default(ImmutableArray<TypeWithAnnotations>), lookupResult, BoundMethodGroupFlags.None, diagnostics);
Binder\DecisionDagBuilder_CheckOrReachability.cs (16)
139ImmutableArray<BoundSwitchExpressionArm> switchArms,
159ImmutableArray<BoundSwitchExpressionArm> switchArms,
198ImmutableArray<BoundSwitchSection> switchSections,
214static bool shouldAnalyzeAny(CSharpCompilation compilation, ImmutableArray<BoundSwitchSection> switchSections)
234ImmutableArray<BoundSwitchSection> switchSections,
1176ImmutableArray<BoundPropertySubpattern>.Empty, isExplicitNotNullTest: false, unionMatchingMode: UnionMatchingMode.None, variable: null, variableAccess: null, node.InputType, node.InputType);
1182ImmutableArray<BoundPositionalSubpattern> deconstruction = node.Deconstruction;
1185var discards = deconstruction.SelectAsArray(d => d.WithPattern(MakeDiscardPattern(d.Syntax, d.Pattern.InputType)));
1196ImmutableArray<BoundPositionalSubpattern> newSubPatterns = discards.SetItem(i, deconstruction[i].WithPattern(newPattern));
1231ImmutableArray<BoundPropertySubpattern> newSubPatterns = [property.WithPattern(newPattern)];
1297var subpatterns = ituplePattern.Subpatterns;
1298var discards = subpatterns.SelectAsArray(d => d.WithPattern(MakeDiscardPattern(d.Syntax, d.Pattern.InputType)));
1319ImmutableArray<BoundPositionalSubpattern> newSubpatterns = discards.SetItem(i, subpatterns[i].WithPattern(newPattern));
1365ImmutableArray<BoundPattern> equivalentDefaultPatterns = listPattern.Subpatterns.SelectAsArray(makeEquivalentDefaultPattern);
1382ImmutableArray<BoundPattern> newSubpatterns = equivalentDefaultPatterns.SetItem(i, newPattern);
1413ImmutableArray<BoundPattern> newSubpatterns = equivalentDefaultPatterns.SetItem(i, newSlice);
Binder\DecisionDagBuilder.cs (34)
85ImmutableArray<BoundSwitchSection> switchSections,
101ImmutableArray<BoundSwitchExpressionArm> switchArms,
146ImmutableArray<BoundSwitchSection> switchSections)
171ImmutableArray<BoundSwitchExpressionArm> switchArms)
201Tests tests = MakeAndSimplifyTestsAndBindings(input, pattern, out ImmutableArray<BoundPatternBinding> bindings);
208out ImmutableArray<BoundPatternBinding> bindings)
973ImmutableArray<FieldSymbol> elements = inputType.TupleElements;
974ImmutableArray<TypeWithAnnotations> elementTypes = inputType.TupleElementTypesWithAnnotations;
1251var sortedBoundDagNodes = boundDecisionDag.TopologicallySortedNodes;
1440if (result.TryGetTopologicallySortedReachableStates(out ImmutableArray<DagState> states))
1614bool wasAcyclic = decisionDag.TryGetTopologicallySortedReachableStates(out ImmutableArray<DagState> sortedStates);
1667BoundDecisionDagNode finalState(SyntaxNode syntax, LabelSymbol label, ImmutableArray<BoundPatternBinding> bindings)
2802public bool TryGetTopologicallySortedReachableStates(out ImmutableArray<DagState> result)
2814if (!this.TryGetTopologicallySortedReachableStates(out var allStates))
3170public readonly ImmutableArray<BoundPatternBinding> Bindings;
3177ImmutableArray<BoundPatternBinding> Bindings,
3287protected abstract RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e);
3289public Tests RemoveEvaluation(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, BoundDagEvaluation e)
3294protected Tests RemoveEvaluationAndUpdateTempReferences(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
3340private static void AddBindingsPatchingAssignments(ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> oldTempMap, ImmutableDictionary<BoundDagTemp, BoundDagTemp> newTempMap, ArrayBuilder<Tests> assignments)
3403protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
3427protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
3574protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
4156DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings,
4199private static ArrayBuilder<Tests> NegateSequenceElements(ImmutableArray<Tests> seq)
4209protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
4241public readonly ImmutableArray<Tests> RemainingTests;
4242protected SequenceTests(ImmutableArray<Tests> remainingTests)
4330protected sealed override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e)
4349ImmutableArray<Tests> remainingTests = seq.RemainingTests;
4776private AndSequence(ImmutableArray<Tests> remainingTests) : base(remainingTests)
4804var testsToInsert = seq.RemainingTests;
4882private OrSequence(ImmutableArray<Tests> remainingTests) : base(remainingTests)
4959private static bool TryCreateValueSet(ImmutableArray<Tests>.Builder builder, [NotNullWhen(true)] out Tests? result)
Binder\PatternExplainer.cs (12)
31private static ImmutableArray<BoundDecisionDagNode> ShortestPathToNode(
32ImmutableArray<BoundDecisionDagNode> nodes,
133Func<ImmutableArray<BoundDecisionDagNode>, bool, bool> handler)
244ImmutableArray<BoundDecisionDagNode> nodes,
262var shortestPathToNode = ShortestPathToNode(nodes, targetNode, nullPaths, reachabilityInfo, out requiresFalseWhenClause);
310static void gatherConstraintsAndEvaluations(Binder binder, BoundDecisionDagNode targetNode, ImmutableArray<BoundDecisionDagNode> pathToNode,
365var constraints = getArray(constraintMap, input);
366var evaluations = getArray(evaluationMap, input);
379static ImmutableArray<T> getArray<T>(Dictionary<BoundDagTemp, ArrayBuilder<T>> map, BoundDagTemp temp)
381return map.TryGetValue(temp, out var builder) ? builder.ToImmutable() : ImmutableArray<T>.Empty;
556var elements = input.Type.TupleElements;
760IConstantValueSet computeRemainingValues(IConstantValueSetFactory fac, ImmutableArray<(BoundDagTest test, bool sense)> constraints)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (13)
87ImmutableArray<UserDefinedConversionAnalysis> u = ubuild.ToImmutableAndFree();
365private TypeSymbol MostSpecificSourceTypeForImplicitUserDefinedConversion(ImmutableArray<UserDefinedConversionAnalysis> u, TypeSymbol source, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
381private TypeSymbol MostSpecificTargetTypeForImplicitUserDefinedConversion(ImmutableArray<UserDefinedConversionAnalysis> u, TypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
428private static int? MostSpecificConversionOperator(TypeSymbol sx, TypeSymbol tx, ImmutableArray<UserDefinedConversionAnalysis> u)
436private static int? MostSpecificConversionOperator(Func<UserDefinedConversionAnalysis, bool> constraint, ImmutableArray<UserDefinedConversionAnalysis> u)
547private static BestIndex UniqueIndex<T>(ImmutableArray<T> items, Func<T, bool> predicate)
692ImmutableArray<T> items,
700ImmutableArray<T> items,
754ImmutableArray<T> items,
762ImmutableArray<T> items,
806private static int? UniqueBestValidIndex<T>(ImmutableArray<T> items, Func<T, bool> valid, Func<T, T, BetterResult> better)
972ImmutableArray<UserDefinedConversionAnalysis> u = ubuild.ToImmutableAndFree();
1009ImmutableArray<UserDefinedConversionAnalysis> u = ubuild.ToImmutableAndFree();
Binder\Semantics\OverloadResolution\ArgumentAnalysisResult.cs (10)
14public readonly ImmutableArray<int> ArgsToParamsOpt;
33ImmutableArray<int> argsToParamsOpt)
51return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.NameUsedForPositional, argumentPosition, 0, default(ImmutableArray<int>));
56return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.NoCorrespondingParameter, argumentPosition, 0, default(ImmutableArray<int>));
61return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.NoCorrespondingNamedParameter, argumentPosition, 0, default(ImmutableArray<int>));
66return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.DuplicateNamedArgument, argumentPosition, 0, default(ImmutableArray<int>));
71return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.RequiredParameterMissing, 0, parameterPosition, default(ImmutableArray<int>));
76return new ArgumentAnalysisResult(ArgumentAnalysisResultKind.BadNonTrailingNamedArgument, argumentPosition, 0, default(ImmutableArray<int>));
79public static ArgumentAnalysisResult NormalForm(ImmutableArray<int> argsToParamsOpt)
84public static ArgumentAnalysisResult ExpandedForm(ImmutableArray<int> argsToParamsOpt)
Binder\Semantics\OverloadResolution\MemberAnalysisResult.cs (22)
26private readonly ImmutableArray<Conversion> _conversionsOpt;
27public ImmutableArray<Conversion> ConversionsOpt
62private readonly ImmutableArray<int> _argsToParamsOpt;
63public ImmutableArray<int> ArgsToParamsOpt
76private readonly ImmutableArray<TypeParameterDiagnosticInfo> _constraintFailureDiagnostics;
77public ImmutableArray<TypeParameterDiagnosticInfo> ConstraintFailureDiagnostics
122ImmutableArray<int> argsToParamsOpt = default,
123ImmutableArray<Conversion> conversionsOpt = default,
126ImmutableArray<TypeParameterDiagnosticInfo> constraintFailureDiagnosticsOpt = default,
323public static MemberAnalysisResult BadArgumentConversions(ImmutableArray<int> argsToParamsOpt, BitVector badArguments, ImmutableArray<Conversion> conversions, TypeWithAnnotations definitionParamsElementTypeOpt, TypeWithAnnotations paramsElementTypeOpt)
378public static MemberAnalysisResult NormalForm(ImmutableArray<int> argsToParamsOpt, ImmutableArray<Conversion> conversions, bool hasAnyRefOmittedArgument)
383public static MemberAnalysisResult ExpandedForm(ImmutableArray<int> argsToParamsOpt, ImmutableArray<Conversion> conversions, bool hasAnyRefOmittedArgument, TypeWithAnnotations definitionParamsElementType, TypeWithAnnotations paramsElementType)
400internal static MemberAnalysisResult ConstraintFailure(ImmutableArray<TypeParameterDiagnosticInfo> constraintFailureDiagnostics)
421var argsToParams = adjustArgsToParams(ArgsToParamsOpt);
422var conversions = adjustConversions(ConversionsOpt);
444static ImmutableArray<int> adjustArgsToParams(ImmutableArray<int> argsToParams)
461static ImmutableArray<Conversion> adjustConversions(ImmutableArray<Conversion> conversions)
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (41)
73public readonly ImmutableArray<TypeWithAnnotations> InferredTypeArguments;
82ImmutableArray<TypeWithAnnotations> inferredTypeArguments,
136private readonly ImmutableArray<TypeParameterSymbol> _methodTypeParameters;
138private readonly ImmutableArray<TypeWithAnnotations> _formalParameterTypes;
139private readonly ImmutableArray<RefKind> _formalParameterRefKinds;
140private readonly ImmutableArray<BoundExpression> _arguments;
175ImmutableArray<TypeParameterSymbol> methodTypeParameters,
180ImmutableArray<TypeWithAnnotations> formalParameterTypes,
277ImmutableArray<RefKind> formalParameterRefKinds, // Optional; assume all value if missing.
278ImmutableArray<BoundExpression> arguments,// Required; in scenarios like method group conversions where there are
327ImmutableArray<TypeParameterSymbol> methodTypeParameters,
329ImmutableArray<TypeWithAnnotations> formalParameterTypes,
330ImmutableArray<RefKind> formalParameterRefKinds,
331ImmutableArray<BoundExpression> arguments,
447private ImmutableArray<TypeWithAnnotations> GetResults(out bool inferredFromFunctionType)
571var fixedArguments = _methodTypeParameters.SelectAsArray(
592var inferredTypeArguments = GetResults(out bool inferredFromFunctionType);
734var sourceArguments = argument.Arguments;
743var destTypes = destination.TupleElementTypesWithAnnotations;
932var sourceArguments = argument.Arguments;
940var destTypes = destination.TupleElementTypesWithAnnotations;
1029var parameters = delegateOrFunctionPointerType.DelegateOrFunctionPointerParameters();
1483var fixedParameters = GetFixedDelegateOrFunctionPointer(delegateOrFunctionPointerType).DelegateOrFunctionPointerParameters();
1506ImmutableArray<ParameterSymbol> delegateParameters,
1577var delegateParameters = delegateType.DelegateParameters();
1840ImmutableArray<TypeWithAnnotations> sourceTypes;
1841ImmutableArray<TypeWithAnnotations> targetTypes;
2321ImmutableArray<NamedTypeSymbol> allInterfaces;
2353internal static ImmutableArray<NamedTypeSymbol> ModuloReferenceTypeNullabilityDifferences(ImmutableArray<NamedTypeSymbol> interfaces, VarianceKind variance)
2370var result = dictionary.Count != interfaces.Length ? dictionary.Values.ToImmutableArray() : interfaces;
2710ImmutableArray<NamedTypeSymbol> allInterfaces = target.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
3022var constraintTypes = typeParameter.ConstraintTypesNoUseSiteDiagnostics;
3103var originalDelegateParameters = target.DelegateParameters();
3116var fixedDelegateParameters = fixedDelegate.DelegateParameters();
3154private static NamedTypeSymbol GetInterfaceInferenceBound(ImmutableArray<NamedTypeSymbol> interfaces, NamedTypeSymbol target)
3187public static ImmutableArray<TypeWithAnnotations> InferTypeArgumentsFromReceiverType(
3240public static ImmutableArray<TypeWithAnnotations> InferTypeArgumentsFromFirstArgument(
3244ImmutableArray<BoundExpression> arguments,
3259ImmutableArray<BoundExpression> arguments,
3337private ImmutableArray<TypeWithAnnotations> GetInferredTypeArguments(out bool inferredFromFunctionType)
Binder\Semantics\OverloadResolution\OverloadResolution.cs (55)
101public void ObjectCreationOverloadResolution(ImmutableArray<MethodSymbol> constructors, AnalyzedArguments arguments, OverloadResolutionResult<MethodSymbol> result, bool dynamicResolution, bool isEarlyAttributeBinding, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
286var applicableMethods = result.GetAllApplicableMembers();
540static ImmutableArray<Symbol> getHiddenMembers(Symbol member)
551return ImmutableArray<Symbol>.Empty;
1495bool typeArgumentsAccessible(ImmutableArray<TypeSymbol> typeArguments, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1748ImmutableArray<MethodSymbol> constructors,
2168var m1LeastOverriddenParameters = m1.LeastOverriddenMember.GetParameters();
2169var m2LeastOverriddenParameters = m2.LeastOverriddenMember.GetParameters();
2475var m1DefinitionParameters = m1.LeastOverriddenMember.OriginalDefinition.GetParameters();
2476var m2DefinitionParameters = m2.LeastOverriddenMember.OriginalDefinition.GetParameters();
2577static TypeSymbol getParameterTypeAndRefKind(int i, MemberAnalysisResult memberResolutionResult, ImmutableArray<ParameterSymbol> parameters,
2598static ParameterSymbol getParameterOrExtensionParameter(int argIndex, MemberAnalysisResult result, ImmutableArray<ParameterSymbol> parameters, TMember member)
2619ImmutableArray<ParameterSymbol> parameters1,
2621ImmutableArray<ParameterSymbol> parameters2)
2709var conversionsOpt = m.Result.ConversionsOpt;
2728ImmutableArray<int> argsToParamsOpt = m.Result.ArgsToParamsOpt;
3084ImmutableArray<BoundNode> collectionExpressionElements,
3085TypeSymbol t1, CollectionExpressionTypeKind kind1, TypeSymbol elementType1, ImmutableArray<Conversion> underlyingElementConversions1,
3086TypeSymbol t2, CollectionExpressionTypeKind kind2, TypeSymbol elementType2, ImmutableArray<Conversion> underlyingElementConversions2,
3392var sourceArguments = tupleSource.Arguments;
3400var destTypes = destination.TupleElementTypesWithAnnotations;
3778private static bool IdenticalParameters(ImmutableArray<ParameterSymbol> p1, ImmutableArray<ParameterSymbol> p2)
3855ImmutableArray<int> argToParamMap,
3861out ImmutableArray<TypeWithAnnotations> parameterTypes,
3862out ImmutableArray<RefKind> parameterRefKinds)
3877internal readonly ImmutableArray<TypeWithAnnotations> ParameterTypes;
3878internal readonly ImmutableArray<RefKind> ParameterRefKinds;
3881internal EffectiveParameters(ImmutableArray<TypeWithAnnotations> types, ImmutableArray<RefKind> refKinds, int firstParamsElementIndex)
3894ImmutableArray<int> argToParamMap,
3904ImmutableArray<ParameterSymbol> parameters = member.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: false);
3921var parameterTypes = isExtensionBlockMember ? GetParameterTypesIncludingReceiver(member) : member.GetParameterTypes();
3958var refKinds = refs != null ? refs.ToImmutableAndFree() : default(ImmutableArray<RefKind>);
4044ImmutableArray<int> argToParamMap,
4055ImmutableArray<int> argToParamMap,
4066var parameters = member.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: false);
4104var refKinds = anyRef ? refs.ToImmutable() : default(ImmutableArray<RefKind>);
4259ImmutableArray<int> argsToParamsMap,
4276ImmutableArray<TypeWithAnnotations> typeArguments;
4304ImmutableArray<TypeParameterSymbol> typeParameters = leastOverriddenMember.GetTypeParametersIncludingExtension();
4350var parameterTypes = isExtensionBlockMember
4395static ImmutableArray<TypeWithAnnotations> getAllTypeArguments(TMember member, bool isExtensionBlockMember)
4406var result = property.ContainingType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
4415private ImmutableArray<TypeWithAnnotations> InferMethodTypeArguments<TMember>(
4417ImmutableArray<TypeParameterSymbol> originalTypeParameters,
4425var args = arguments.Arguments.ToImmutable();
4459var extensionTypeArguments = MethodTypeInferrer.InferTypeArgumentsFromReceiverType(member.ContainingType, args[0], _binder.Compilation, _binder.Conversions, ref useSiteInfo);
4482return default(ImmutableArray<TypeWithAnnotations>);
4488return default(ImmutableArray<TypeWithAnnotations>);
4497ImmutableArray<int> argsToParameters,
4674var conversionsArray = conversions != null ? conversions.ToImmutableAndFree() : default(ImmutableArray<Conversion>);
Binder\Semantics\OverloadResolution\OverloadResolutionResult.cs (23)
102public ImmutableArray<MemberResolutionResult<TMember>> Results
151internal ImmutableArray<TMember> GetAllApplicableMembers()
214ImmutableArray<T> memberGroup, // the T is just a convenience for the caller
233var symbols = StaticCast<Symbol>.From(memberGroup);
603private static void ReportUnsupportedMetadata(Location location, BindingDiagnosticBag diagnostics, ImmutableArray<Symbol> symbols, MemberResolutionResult<TMember> firstUnsupported)
618private static void ReportWrongCallingConvention(Location location, BindingDiagnosticBag diagnostics, ImmutableArray<Symbol> symbols, MemberResolutionResult<TMember> firstSupported, MethodSymbol target)
645ImmutableArray<Symbol> symbols,
664ImmutableArray<Symbol> symbols,
763ImmutableArray<Symbol> symbols,
828ImmutableArray<Symbol> symbols)
848ImmutableArray<Symbol> symbols)
881ImmutableArray<Symbol> symbols)
916ImmutableArray<Symbol> symbols,
933ImmutableArray<ParameterSymbol> parameters = badMember.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: false);
961ImmutableArray<Symbol> symbols,
1124ImmutableArray<Symbol> symbols,
1157var parameters = method.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: false);
1193ImmutableArray<Symbol> symbols,
1212var parameters = method.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: false);
1379ImmutableArray<CustomModifier>.Empty,
1430private bool HadAmbiguousWorseMethods(CSharpCompilation compilation, BindingDiagnosticBag diagnostics, ImmutableArray<Symbol> symbols, Location location, bool isQuery, BoundExpression receiver, string name, bool isExtension)
1496private bool HadAmbiguousBestMethods(CSharpCompilation compilation, BindingDiagnosticBag diagnostics, ImmutableArray<Symbol> symbols, Location location, bool isExtension)
1552internal static DiagnosticInfoWithSymbols CreateAmbiguousCallDiagnosticInfo(CSharpCompilation compilation, Symbol first, Symbol second, ImmutableArray<Symbol> symbols, bool isExtension)
Binder\SwitchExpressionBinder.cs (5)
32ImmutableArray<BoundSwitchExpressionArm> switchArms = BindSwitchExpressionArms(node, originalBinder, boundInputExpression, diagnostics);
64ImmutableArray<BoundSwitchExpressionArm> switchArms,
98bool wasAcyclic = TopologicalSort.TryIterativeSort(decisionDag.RootNode, addNonNullSuccessors, out var nodes);
150private TypeSymbol? InferResultType(ImmutableArray<BoundSwitchExpressionArm> switchCases, BindingDiagnosticBag diagnostics)
186private ImmutableArray<BoundSwitchExpressionArm> BindSwitchExpressionArms(SwitchExpressionSyntax node, Binder originalBinder, BoundExpression inputExpression, BindingDiagnosticBag diagnostics)
Binder\WithUsingNamespacesAndTypesBinder.cs (10)
35internal abstract ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsings(ConsList<TypeSymbol>? basesBeingResolved);
126ImmutableArray<Symbol> candidates = Binder.GetCandidateMembers(typeOrNamespace.NamespaceOrType, name, options, originalBinder: originalBinder);
250internal static WithUsingNamespacesAndTypesBinder Create(ImmutableArray<NamespaceOrTypeAndUsingDirective> namespacesOrTypes, Binder next, bool withImportChainEntry = false)
259private ImmutableArray<NamespaceOrTypeAndUsingDirective> _lazyUsings;
269internal override ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsings(ConsList<TypeSymbol>? basesBeingResolved)
299internal override ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsings(ConsList<TypeSymbol>? basesBeingResolved)
324private readonly ImmutableArray<NamespaceOrTypeAndUsingDirective> _usings;
326internal FromNamespacesOrTypes(ImmutableArray<NamespaceOrTypeAndUsingDirective> namespacesOrTypes, Binder next, bool withImportChainEntry)
333internal override ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsings(ConsList<TypeSymbol>? basesBeingResolved)
340return Imports.Create(ImmutableDictionary<string, AliasAndUsingDirective>.Empty, _usings, ImmutableArray<AliasAndExternAliasDirective>.Empty);
BoundTree\BoundObjectCreationExpression.cs (15)
12public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt,
13ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt,
15: this(syntax, constructor, ImmutableArray<MethodSymbol>.Empty, arguments, argumentNamesOpt, argumentRefKindsOpt, expanded, argsToParamsOpt, defaultArguments, constantValueOpt, initializerExpressionOpt, wasTargetTyped: false, type, hasErrors)
18public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded,
19ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, TypeSymbol type)
21return this.Update(constructor, ImmutableArray<MethodSymbol>.Empty, arguments, argumentNamesOpt, argumentRefKindsOpt, expanded, argsToParamsOpt, defaultArguments, constantValueOpt, initializerExpressionOpt, this.WasTargetTyped, type);
24public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments,
25ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt,
BoundTree\Constructors.cs (58)
91ImmutableArray<BoundExpression> arguments,
92ImmutableArray<string?> argumentNamesOpt,
93ImmutableArray<RefKind> argumentRefKindsOpt,
97ImmutableArray<int> argsToParamsOpt,
109ImmutableArray<BoundExpression> arguments,
110ImmutableArray<string?> argumentNamesOpt,
111ImmutableArray<RefKind> argumentRefKindsOpt,
115ImmutableArray<int> argsToParamsOpt,
125ImmutableArray<BoundExpression> arguments,
126ImmutableArray<string?> namedArguments,
127ImmutableArray<RefKind> refKinds,
130ImmutableArray<MethodSymbol> originalMethods,
157argsToParamsOpt: default(ImmutableArray<int>),
165public BoundCall Update(ImmutableArray<BoundExpression> arguments)
170public BoundCall Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments)
177return Synthesized(syntax, receiverOpt, initialBindingReceiverIsSubjectToCloning: initialBindingReceiverIsSubjectToCloning, method, ImmutableArray<BoundExpression>.Empty);
190public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt = default)
223argumentNamesOpt: default(ImmutableArray<string?>),
228argsToParamsOpt: default(ImmutableArray<int>),
237static ImmutableArray<RefKind> getArgumentRefKinds(MethodSymbol method)
239var result = method.ParameterRefKinds;
261: this(syntax, constructor, ImmutableArray.Create<BoundExpression>(arguments), default(ImmutableArray<string?>), default(ImmutableArray<RefKind>), false, default(ImmutableArray<int>), default(BitVector), null, null, constructor.ContainingType)
264public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments)
265: this(syntax, constructor, arguments, default(ImmutableArray<string?>), default(ImmutableArray<RefKind>), false, default(ImmutableArray<int>), default(BitVector), null, null, constructor.ContainingType)
276ImmutableArray<BoundExpression> arguments,
277ImmutableArray<string?> namedArguments,
278ImmutableArray<RefKind> refKinds,
279ImmutableArray<PropertySymbol> originalIndexers)
291argsToParamsOpt: default(ImmutableArray<int>),
302ImmutableArray<BoundExpression> arguments,
303ImmutableArray<string?> argumentNamesOpt,
304ImmutableArray<RefKind> argumentRefKindsOpt,
307ImmutableArray<int> argsToParamsOpt,
317ImmutableArray<BoundExpression> arguments,
318ImmutableArray<string?> argumentNamesOpt,
319ImmutableArray<RefKind> argumentRefKindsOpt,
322ImmutableArray<int> argsToParamsOpt,
421ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt,
484public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
491: this(syntax, aliasOpt, boundContainingTypeOpt, ImmutableArray<BoundExpression>.Empty, typeWithAnnotations, hasErrors)
505public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, ImmutableArray<BoundExpression> dimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
540public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol type)
559public static BoundStatementList Synthesized(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
564public static BoundStatementList Synthesized(SyntaxNode syntax, bool hasErrors, ImmutableArray<BoundStatement> statements)
596public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
597: this(syntax, locals, ImmutableArray<MethodSymbol>.Empty, hasUnsafeModifier: false, instrumentation: null, statements, hasErrors)
603return new BoundBlock(syntax, ImmutableArray<LocalSymbol>.Empty, ImmutableArray.Create(statement))
607public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
609return new BoundBlock(syntax, ImmutableArray<LocalSymbol>.Empty, statements) { WasCompilerGenerated = true };
614return new BoundBlock(syntax, ImmutableArray<LocalSymbol>.Empty, statements.AsImmutableOrNull()) { WasCompilerGenerated = true };
628public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt = null)
BoundTree\Expression.cs (37)
12internal static ImmutableArray<BoundExpression> GetChildInitializers(BoundExpression? objectOrCollectionInitializer)
26return ImmutableArray<BoundExpression>.Empty;
29ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(receiverOpt: null, Arguments, InitializerExpressionOpt);
34ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => StaticCast<BoundNode>.From(Arguments);
39ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ImplicitReceiverOpt, Arguments);
44protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Left, this.Right);
49protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.ChildBoundNodes);
51ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => StaticCast<BoundNode>.From(this.ChildBoundNodes);
56ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ReceiverOpt, Arguments);
61ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ReceiverOpt, Arguments);
66protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.Insert(0, this.Receiver));
71protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments);
76protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.ConstructorArguments.AddRange(StaticCast<BoundExpression>.From(this.NamedArguments)));
81protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Value);
86protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments);
91protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Argument);
96protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression, this.Index);
101protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
106protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Receiver);
111protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
116protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
121protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.Insert(0, this.Expression));
126protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
131internal static ImmutableArray<BoundExpression> GetChildInitializers(BoundArrayInitialization? arrayInitializer)
133return arrayInitializer?.Initializers ?? ImmutableArray<BoundExpression>.Empty;
139protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(GetChildInitializers(this.InitializerOpt).Insert(0, this.Count));
144protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(GetChildInitializers(this.InitializerOpt).Insert(0, this.Count));
149protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.AddRange(BoundObjectCreationExpression.GetChildInitializers(this.InitializerExpressionOpt)));
154protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
159protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.ReceiverOpt);
164protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.SideEffects.Add(this.Value));
169protected override ImmutableArray<BoundNode?> Children =>
170(this.Kind == BoundKind.StatementList || this.Kind == BoundKind.Scope) ? StaticCast<BoundNode?>.From(this.Statements) : ImmutableArray<BoundNode?>.Empty;
175protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
180protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Receiver, Argument);
185ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(receiverOpt: this.InvokedExpression, Arguments);
186protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(((IBoundInvalidNode)this).InvalidNodeChildren);
BoundTree\LengthBasedStringSwitchData.cs (16)
74internal readonly ImmutableArray<CharJumpTable> CharBasedJumpTables;
75internal readonly ImmutableArray<StringJumpTable> StringBasedJumpTables;
78ImmutableArray<CharJumpTable> charJumpTables, ImmutableArray<StringJumpTable> stringJumpTables)
88public readonly ImmutableArray<(int value, LabelSymbol label)> LengthCaseLabels;
90public LengthJumpTable(LabelSymbol? nullCaseLabel, ImmutableArray<(int value, LabelSymbol label)> lengthCaseLabels)
103public readonly ImmutableArray<(char value, LabelSymbol label)> CharCaseLabels;
105internal CharJumpTable(LabelSymbol label, int selectedCharPosition, ImmutableArray<(char value, LabelSymbol label)> charCaseLabels)
118public readonly ImmutableArray<(string value, LabelSymbol label)> StringCaseLabels;
120internal StringJumpTable(LabelSymbol label, ImmutableArray<(string value, LabelSymbol label)> stringCaseLabels)
137internal static LengthBasedStringSwitchData Create(ImmutableArray<(ConstantValue value, LabelSymbol label)> inputCases)
165private static LabelSymbol CreateAndRegisterCharJumpTables(int stringLength, ImmutableArray<(string value, LabelSymbol label)> casesWithGivenLength,
202static int selectBestCharacterIndex(int stringLength, ImmutableArray<(string value, LabelSymbol label)> caseLabels)
229static (int singleEntryCount, int largestBucket) positionScore(int position, ImmutableArray<(string value, LabelSymbol label)> caseLabels)
253private static LabelSymbol CreateAndRegisterStringJumpTable(ImmutableArray<(string value, LabelSymbol label)> cases, ArrayBuilder<StringJumpTable> stringJumpTables)
290void dump<T>(ImmutableArray<(T value, LabelSymbol label)> cases)
BoundTree\UnboundLambda.cs (82)
44internal readonly ImmutableArray<CustomModifier> RefCustomModifiers;
47internal readonly ImmutableArray<DiagnosticInfo> UseSiteDiagnostics;
48internal readonly ImmutableArray<AssemblySymbol> Dependencies;
55ImmutableArray<CustomModifier> refCustomModifiers,
58ImmutableArray<DiagnosticInfo> useSiteDiagnostics,
59ImmutableArray<AssemblySymbol> dependencies)
180ImmutableArray<TypeWithAnnotations> parameterTypes,
181ImmutableArray<RefKind> parameterRefKinds,
183ImmutableArray<CustomModifier> refCustomModifiers)
254useSiteInfo.AccumulatesDependencies ? useSiteInfo.Dependencies.AsImmutableOrEmpty() : ImmutableArray<AssemblySymbol>.Empty);
411ImmutableArray<CustomModifier> refCustomModifiers,
413ImmutableArray<SyntaxList<AttributeListSyntax>> parameterAttributes,
414ImmutableArray<RefKind> refKinds,
415ImmutableArray<ScopedKind> declaredScopes,
416ImmutableArray<TypeWithAnnotations> types,
417ImmutableArray<string> names,
418ImmutableArray<bool> discardsOpt,
420ImmutableArray<EqualsValueClauseSyntax?> defaultValues,
480public bool HasExplicitReturnType(out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers, out TypeWithAnnotations returnType)
595public abstract bool HasExplicitReturnType(out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers, out TypeWithAnnotations returnType);
677private static TypeWithAnnotations DelegateReturnTypeWithAnnotations(MethodSymbol? invokeMethod, out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers)
690internal (ImmutableArray<RefKind>, ArrayBuilder<ScopedKind>, ImmutableArray<TypeWithAnnotations>, bool) CollectParameterProperties()
732var parameterRefKinds = parameterRefKindsBuilder.ToImmutableAndFree();
733var parameterTypes = parameterTypesBuilder.ToImmutableAndFree();
823var returnType = DelegateReturnTypeWithAnnotations(invokeMethod, out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers);
874var lambdaParameters = lambdaSymbol.Parameters;
935ImmutableArray<TypeWithAnnotations> parameterTypes,
936ImmutableArray<RefKind> parameterRefKinds,
938ImmutableArray<CustomModifier> refCustomModifiers)
953var returnType = DelegateReturnTypeWithAnnotations(invokeMethod, out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers);
954ReturnInferenceCacheKey.GetFields(delegateType, IsAsync, out var parameterTypes, out var parameterRefKinds, out _);
958private void ValidateUnsafeParameters(BindingDiagnosticBag diagnostics, ImmutableArray<TypeWithAnnotations> targetParameterTypes)
985ImmutableArray<TypeWithAnnotations> parameterTypes,
986ImmutableArray<RefKind> parameterRefKinds)
988bool hasExplicitReturnType = HasExplicitReturnType(out var refKind, out ImmutableArray<CustomModifier> refCustomModifiers, out var returnType);
1003ImmutableArray<DiagnosticInfo>.Empty,
1004ImmutableArray<AssemblySymbol>.Empty);
1051ImmutableArray<TypeWithAnnotations> parameterTypes,
1052ImmutableArray<RefKind> parameterRefKinds,
1055ImmutableArray<CustomModifier> refCustomModifiers
1090public readonly ImmutableArray<TypeWithAnnotations> ParameterTypes;
1091public readonly ImmutableArray<RefKind> ParameterRefKinds;
1094public static readonly ReturnInferenceCacheKey Empty = new ReturnInferenceCacheKey(ImmutableArray<TypeWithAnnotations>.Empty, ImmutableArray<RefKind>.Empty, null);
1096private ReturnInferenceCacheKey(ImmutableArray<TypeWithAnnotations> parameterTypes, ImmutableArray<RefKind> parameterRefKinds, NamedTypeSymbol? taskLikeReturnTypeOpt)
1145GetFields(delegateType, isAsync, out var parameterTypes, out var parameterRefKinds, out var taskLikeReturnTypeOpt);
1156out ImmutableArray<TypeWithAnnotations> parameterTypes,
1157out ImmutableArray<RefKind> parameterRefKinds,
1162parameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
1163parameterRefKinds = ImmutableArray<RefKind>.Empty;
1248?? rebind(ReallyInferReturnType(delegateType: null, ImmutableArray<TypeWithAnnotations>.Empty, ImmutableArray<RefKind>.Empty));
1256ReturnInferenceCacheKey.GetFields(delegateType, IsAsync, out var parameterTypes, out var parameterRefKinds, out _);
1264ImmutableArray<TypeWithAnnotations> parameterTypes,
1265ImmutableArray<RefKind> parameterRefKinds)
1269var refCustomModifiers = inferredReturnType.RefCustomModifiers;
1302ImmutableArray<DiagnosticInfo>.Empty,
1303ImmutableArray<AssemblySymbol>.Empty))
1443private static FirstAmongEqualsSet<Diagnostic> CreateFirstAmongEqualsSet(ImmutableArray<Diagnostic> bag)
1497private readonly ImmutableArray<CustomModifier> _refCustomModifiers;
1499private readonly ImmutableArray<SyntaxList<AttributeListSyntax>> _parameterAttributes;
1500private readonly ImmutableArray<string> _parameterNames;
1501private readonly ImmutableArray<bool> _parameterIsDiscardOpt;
1502private readonly ImmutableArray<TypeWithAnnotations> _parameterTypesWithAnnotations;
1503private readonly ImmutableArray<RefKind> _parameterRefKinds;
1504private readonly ImmutableArray<ScopedKind> _parameterDeclaredScopes;
1505private readonly ImmutableArray<EqualsValueClauseSyntax?> _defaultValues;
1513ImmutableArray<CustomModifier> refCustomModifiers,
1515ImmutableArray<SyntaxList<AttributeListSyntax>> parameterAttributes,
1516ImmutableArray<string> parameterNames,
1517ImmutableArray<bool> parameterIsDiscardOpt,
1518ImmutableArray<TypeWithAnnotations> parameterTypesWithAnnotations,
1519ImmutableArray<RefKind> parameterRefKinds,
1520ImmutableArray<ScopedKind> parameterDeclaredScopes,
1521ImmutableArray<EqualsValueClauseSyntax?> defaultValues,
1545public override bool HasExplicitReturnType(out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers, out TypeWithAnnotations returnType)
1640var statements = body.Statements;
CodeGen\CodeGenerator_RefSafety.cs (4)
12/// <inheritdoc cref="MightEscapeTemporaryRefs(bool, TypeSymbol, RefKind, ParameterSymbol?, ImmutableArray{ParameterSymbol})"/>
23/// <inheritdoc cref="MightEscapeTemporaryRefs(bool, TypeSymbol, RefKind, ParameterSymbol?, ImmutableArray{ParameterSymbol})"/>
34/// <inheritdoc cref="MightEscapeTemporaryRefs(bool, TypeSymbol, RefKind, ParameterSymbol?, ImmutableArray{ParameterSymbol})"/>
66ImmutableArray<ParameterSymbol> parameters)
CodeGen\EmitArrayInitializer.cs (21)
47var initExprs = inits.Initializers;
56ImmutableArray<byte> data = this.GetRawData(initExprs);
68ImmutableArray<BoundExpression> inits,
82ImmutableArray<BoundExpression> inits,
124public IndexDesc(int index, ImmutableArray<BoundExpression> initializers)
131public readonly ImmutableArray<BoundExpression> Initializers;
135ImmutableArray<BoundExpression> inits,
173var inits = top.Initializers;
246private ArrayInitializerStyle ShouldEmitBlockInitializer(TypeSymbol elementType, ImmutableArray<BoundExpression> inits)
296private void InitializerCountRecursive(ImmutableArray<BoundExpression> inits, ref int initCount, ref int constInits)
331private ImmutableArray<byte> GetRawData(ImmutableArray<BoundExpression> initializers)
343private void SerializeArrayRecursive(BlobBuilder bw, ImmutableArray<BoundExpression> inits)
367private static bool IsMultidimensionalInitializer(ImmutableArray<BoundExpression> inits)
480ImmutableArray<BoundExpression> initializers = initializer.Initializers;
509ImmutableArray<byte> data = GetRawDataForArrayInit(initializers);
630bool tryEmitAsCachedArrayFromBlob(NamedTypeSymbol spanType, BoundExpression wrappedExpression, int elementCount, ImmutableArray<byte> data, ref ArrayTypeSymbol arrayType, TypeSymbol elementType)
692var initializers = initializer.Initializers;
706ImmutableArray<ConstantValue> constants = initializers.SelectAsArray(static init => init.ConstantValueOpt!);
811private ImmutableArray<byte> GetRawDataForArrayInit(ImmutableArray<BoundExpression> initializers)
CodeGen\Optimizer.cs (21)
691var locals = node.Locals;
719var sideeffects = node.SideEffects;
763var sideeffects = node.SideEffects;
1185receiver = typeExpression.Update(aliasOpt: null, boundContainingTypeOpt: null, boundDimensionsOpt: ImmutableArray<BoundExpression>.Empty,
1199var rewrittenArguments = VisitArguments(node.Arguments, node.Method.Parameters, node.ArgumentRefKindsOpt);
1266private ImmutableArray<BoundExpression> VisitArguments(ImmutableArray<BoundExpression> arguments, ImmutableArray<ParameterSymbol> parameters, ImmutableArray<RefKind> argRefKindsOpt)
1283private void VisitArgument(ImmutableArray<BoundExpression> arguments, ref ArrayBuilder<BoundExpression> rewrittenArguments, int i, RefKind argRefKind)
1306ImmutableArray<BoundExpression> arguments = node.Arguments;
1307ImmutableArray<RefKind> argRefKindsOpt = node.ArgumentRefKindsOpt;
1330var rewrittenArguments = VisitArguments(node.Arguments, constructor.Parameters, node.ArgumentRefKindsOpt);
1686var catchBlocks = this.VisitList(node.CatchBlocks);
1772var initializers = node.Initializers;
2002private void DeclareLocals(ImmutableArray<LocalSymbol> locals, int stack)
2204ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
2326receiverOpt = typeExpression.Update(aliasOpt: null, boundContainingTypeOpt: null, boundDimensionsOpt: ImmutableArray<BoundExpression>.Empty,
2340ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
2457public override ImmutableArray<Location> Locations
2462public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
CommandLine\CSharpCompiler.cs (8)
42ImmutableArray<AnalyzerConfigOptionsResult> analyzerConfigOptions,
53var sourceFiles = Arguments.SourceFiles;
148var sourceFileResolver = new LoggingSourceFileResolver(ImmutableArray<string>.Empty, Arguments.BaseDirectory, Arguments.PathMap, touchedFilesLogger);
338out ImmutableArray<DiagnosticAnalyzer> analyzers,
339out ImmutableArray<ISourceGenerator> generators)
376private protected override GeneratorDriver CreateGeneratorDriver(string baseDirectory, ParseOptions parseOptions, ImmutableArray<ISourceGenerator> generators, AnalyzerConfigOptionsProvider analyzerConfigOptionsProvider, ImmutableArray<AdditionalText> additionalTexts, SourceHashAlgorithm checksumAlgorithm)
381private protected override void DiagnoseBadAccesses(TextWriter consoleOutput, ErrorLogger? errorLogger, Compilation compilation, ImmutableArray<Diagnostic> diagnostics)
Compilation\BuiltInOperators.cs (24)
28private ImmutableArray<UnaryOperatorSignature>[] _builtInUnaryOperators;
29private ImmutableArray<BinaryOperatorSignature>[][] _builtInOperators;
39private ImmutableArray<UnaryOperatorSignature> GetSignaturesFromUnaryOperatorKinds(int[] operatorKinds)
54var allOperators = new ImmutableArray<UnaryOperatorSignature>[]
237ImmutableArray<UnaryOperatorSignature>.Empty,
238ImmutableArray<UnaryOperatorSignature>.Empty,
292private ImmutableArray<BinaryOperatorSignature> GetSignaturesFromBinaryOperatorKinds(int[] operatorKinds)
307var logicalOperators = new ImmutableArray<BinaryOperatorSignature>[]
309ImmutableArray<BinaryOperatorSignature>.Empty, //multiplication
310ImmutableArray<BinaryOperatorSignature>.Empty, //addition
311ImmutableArray<BinaryOperatorSignature>.Empty, //subtraction
312ImmutableArray<BinaryOperatorSignature>.Empty, //division
313ImmutableArray<BinaryOperatorSignature>.Empty, //remainder
314ImmutableArray<BinaryOperatorSignature>.Empty, //left shift
315ImmutableArray<BinaryOperatorSignature>.Empty, //right shift
316ImmutableArray<BinaryOperatorSignature>.Empty, //equal
317ImmutableArray<BinaryOperatorSignature>.Empty, //not equal
318ImmutableArray<BinaryOperatorSignature>.Empty, //greater than
319ImmutableArray<BinaryOperatorSignature>.Empty, //less than
320ImmutableArray<BinaryOperatorSignature>.Empty, //greater than or equal
321ImmutableArray<BinaryOperatorSignature>.Empty, //less than or equal
323ImmutableArray<BinaryOperatorSignature>.Empty, //xor
325ImmutableArray<BinaryOperatorSignature>.Empty, //unsigned right shift
328var nonLogicalOperators = new ImmutableArray<BinaryOperatorSignature>[]
Compilation\CSharpCompilation.cs (81)
56private ImmutableArray<NamespaceOrTypeAndUsingDirective> _lazyGlobalImports;
71private ConcurrentDictionary<ImportInfo, ImmutableArray<AssemblySymbol>>? _lazyImportInfos;
75private ImmutableArray<Diagnostic> _lazyClsComplianceDiagnostics;
76private ImmutableArray<AssemblySymbol> _lazyClsComplianceDependencies;
167private ImmutableArray<MethodBodyDiagnostics> _methodBodiesInTreeDiagnostics = ImmutableArray<MethodBodyDiagnostics>.Empty;
495var validatedReferences = ValidateReferences<CSharpCompilationReference>(references);
517ImmutableArray<SyntaxTree>.Empty,
537ImmutableArray<MetadataReference> references,
554ImmutableArray<MetadataReference> references,
617private static LanguageVersion CommonLanguageVersion(ImmutableArray<SyntaxTree> syntaxTrees)
903public new ImmutableArray<SyntaxTree> SyntaxTrees
1059syntaxAndDeclarations: syntaxAndDeclarations.WithExternalSyntaxTrees(ImmutableArray<SyntaxTree>.Empty));
1091var externalSyntaxTrees = syntaxAndDeclarations.ExternalSyntaxTrees;
1244public override ImmutableArray<MetadataReference> DirectiveReferences
1372public override CompilationReference ToMetadataReference(ImmutableArray<string> aliases = default, bool embedInteropTypes = false)
1650internal ImmutableArray<NamespaceOrTypeAndUsingDirective> GlobalImports
1653private ImmutableArray<NamespaceOrTypeAndUsingDirective> BindGlobalImports()
1657var previousSubmissionImports = previousSubmission is object ? Imports.ExpandPreviousSubmissionImports(previousSubmission.GlobalImports, this) : ImmutableArray<NamespaceOrTypeAndUsingDirective>.Empty;
1861ImmutableArray<Symbol>.Empty,
1862ImmutableArray<Location>.Empty
2140var taskCandidates = taskEntryPoints.SelectAsArray(s => (Symbol)s.Candidate);
2141var taskLocations = taskCandidates.SelectAsArray(s => s.GetFirstLocation());
2534private sealed class InterceptorKeyComparer : IEqualityComparer<(ImmutableArray<byte> ContentHash, int Position)>
2539public bool Equals((ImmutableArray<byte> ContentHash, int Position) x, (ImmutableArray<byte> ContentHash, int Position) y)
2544public int GetHashCode((ImmutableArray<byte> ContentHash, int Position) obj)
2553private ConcurrentDictionary<(ImmutableArray<byte> ContentHash, int Position), OneOrMany<(Location AttributeLocation, MethodSymbol Interceptor)>>? _interceptions;
2555internal void AddInterception(ImmutableArray<byte> contentHash, int position, Location attributeLocation, MethodSymbol interceptor)
2561() => new ConcurrentDictionary<(ImmutableArray<byte> ContentHash, int Position), OneOrMany<(Location AttributeLocation, MethodSymbol Interceptor)>>(comparer: InterceptorKeyComparer.Instance));
2777ImmutableArray<AssemblySymbol> dependencies = pair.Value;
2883internal void RecordImportDependencies(UsingDirectiveSyntax syntax, ImmutableArray<AssemblySymbol> dependencies)
2988public override ImmutableArray<Diagnostic> GetParseDiagnostics(CancellationToken cancellationToken = default)
2997public override ImmutableArray<Diagnostic> GetDeclarationDiagnostics(CancellationToken cancellationToken = default)
3005public override ImmutableArray<Diagnostic> GetMethodBodyDiagnostics(CancellationToken cancellationToken = default)
3014public override ImmutableArray<Diagnostic> GetDiagnostics(CancellationToken cancellationToken = default)
3019internal ImmutableArray<Diagnostic> GetDiagnostics(CompilationStage stage, bool includeEarlierStages, Predicate<ISymbolInternal>? symbolFilter, CancellationToken cancellationToken)
3048var syntaxTrees = this.SyntaxTrees;
3137ImmutableArray<LoadDirective> loadDirectives;
3201public ImmutableArray<Diagnostic> Diagnostics { get; }
3203public MethodBodyDiagnostics(SyntaxTree tree, TextSpan? span, ImmutableArray<Diagnostic> diagnostics)
3211private ImmutableArray<Diagnostic> GetDiagnosticsForMethodBodiesInTree(SyntaxTree tree, TextSpan? span, CancellationToken cancellationToken)
3217var cachedDiagnostics = _methodBodiesInTreeDiagnostics;
3303var diagnostics = bindingDiagnostics.ToReadOnlyAndFree().Diagnostics;
3308void updateCachedDiagnostics(ImmutableArray<Diagnostic> diagnostics, SyntaxTree tree, TextSpan? span)
3313var cachedDiagnostics = _methodBodiesInTreeDiagnostics;
3324var newDiagnostics = cachedDiagnostics;
3336var originalDiagnostics = ImmutableInterlocked.InterlockedCompareExchange(ref _methodBodiesInTreeDiagnostics, newDiagnostics, cachedDiagnostics);
3440return new ReadOnlyBindingDiagnostic<AssemblySymbol>(result.AsImmutable(), ImmutableArray<AssemblySymbol>.Empty);
3478internal ImmutableArray<Diagnostic> GetDiagnosticsForSyntaxTree(
3756IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherSynthesizedMembers,
3757IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherDeletedMembers)
3781public bool CheckDuplicateFilePathsAndFree(ImmutableArray<SyntaxTree> syntaxTrees, NamespaceSymbol globalNamespace)
3937ImmutableArray<ModuleSymbol> modules = SourceAssembly.Modules;
3942ImmutableArray<EmbeddedResource> resources;
4073private static bool ChecksumMatches(string bytesText, ImmutableArray<byte> bytes)
4095private static ImmutableArray<byte> MakeChecksumBytes(string bytesText)
4163protected internal override ImmutableArray<SyntaxTree> CommonSyntaxTrees
4254ImmutableArray<ITypeSymbol> parameterTypes,
4255ImmutableArray<RefKind> parameterRefKinds,
4257ImmutableArray<INamedTypeSymbol> callingConventionTypes)
4305var parameterTypesWithAnnotations = parameterTypes.SelectAsArray(
4308var conventionModifiers = internalCallingConvention == CallingConvention.Unmanaged && !callingConventionTypes.IsDefaultOrEmpty
4310: ImmutableArray<CustomModifier>.Empty;
4349ImmutableArray<ITypeSymbol> elementTypes,
4350ImmutableArray<string?> elementNames,
4351ImmutableArray<Location?> elementLocations,
4352ImmutableArray<CodeAnalysis.NullableAnnotation> elementNullableAnnotations)
4376ImmutableArray<string?> elementNames,
4377ImmutableArray<Location?> elementLocations,
4378ImmutableArray<CodeAnalysis.NullableAnnotation> elementNullableAnnotations)
4404ImmutableArray<ITypeSymbol> memberTypes,
4405ImmutableArray<string> memberNames,
4406ImmutableArray<Location> memberLocations,
4407ImmutableArray<bool> memberIsReadOnly,
4408ImmutableArray<CodeAnalysis.NullableAnnotation> memberNullableAnnotations)
4965internal override AnalyzerDriver CreateAnalyzerDriver(ImmutableArray<DiagnosticAnalyzer> analyzers, AnalyzerManager analyzerManager, SeverityFilter severityFilter)
4998var preprocessorSymbols = GetPreprocessorSymbols();
5013private ImmutableArray<string> GetPreprocessorSymbols()
5019return ImmutableArray<string>.Empty;
Compilation\CSharpSemanticModel.cs (81)
169internal abstract BoundExpression GetSpeculativelyBoundExpression(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption, out Binder binder, out ImmutableArray<Symbol> crefSymbols);
179internal abstract ImmutableArray<Symbol> GetMemberGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken));
189internal abstract ImmutableArray<IPropertySymbol> GetIndexerGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken));
281protected BoundExpression GetSpeculativelyBoundExpressionWithoutNullability(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption, out Binder binder, out ImmutableArray<Symbol> crefSymbols)
288crefSymbols = default(ImmutableArray<Symbol>);
326internal static ImmutableArray<Symbol> BindCref(CrefSyntax crefSyntax, Binder binder)
329var symbols = binder.BindCref(crefSyntax, out unusedAmbiguityWinner, BindingDiagnosticBag.Discarded);
338ImmutableArray<Symbol> symbols = BindCref(crefSyntax, binder);
737ImmutableArray<Symbol> crefSymbols;
1067ImmutableArray<Symbol> crefSymbols;
1100public ImmutableArray<ISymbol> GetMemberGroup(ExpressionSyntax expression, CancellationToken cancellationToken = default(CancellationToken))
1106: ImmutableArray<ISymbol>.Empty;
1114public ImmutableArray<ISymbol> GetMemberGroup(AttributeSyntax attribute, CancellationToken cancellationToken = default(CancellationToken))
1120: ImmutableArray<ISymbol>.Empty;
1128public ImmutableArray<ISymbol> GetMemberGroup(ConstructorInitializerSyntax initializer, CancellationToken cancellationToken = default(CancellationToken))
1134: ImmutableArray<ISymbol>.Empty;
1151public ImmutableArray<IPropertySymbol> GetIndexerGroup(ExpressionSyntax expression, CancellationToken cancellationToken = default(CancellationToken))
1157: ImmutableArray<IPropertySymbol>.Empty;
1214ImmutableArray<Symbol> crefSymbols;
1429public ImmutableArray<ISymbol> LookupSymbols(
1473public new ImmutableArray<ISymbol> LookupBaseMembers(
1498public ImmutableArray<ISymbol> LookupStaticMembers(
1524public ImmutableArray<ISymbol> LookupNamespacesAndTypes(
1546public new ImmutableArray<ISymbol> LookupLabels(
1573private ImmutableArray<ISymbol> LookupSymbolsInternal(
1601return ImmutableArray<ISymbol>.Empty;
1613return ImmutableArray<ISymbol>.Empty;
1930boundExpr, boundNodeForSyntacticParent, binderOpt, options, out bool isDynamic, out LookupResultKind resultKind, out ImmutableArray<Symbol> unusedMemberGroup);
1937ImmutableArray<Symbol> unusedHighestMemberGroup;
1953ImmutableArray<Symbol> unusedHighestMemberGroup;
1969return SymbolInfoFactory.Create(ImmutableArray<Symbol>.Empty, LookupResultKind.Empty, isDynamic);
2166conversion = Conversion.MakeConditionalExpression(ImmutableArray<Conversion>.Empty);
2283internal ImmutableArray<Symbol> GetMemberGroupForNode(
2292ImmutableArray<Symbol> memberGroup;
2299return ImmutableArray<Symbol>.Empty;
2306internal ImmutableArray<IPropertySymbol> GetIndexerGroupForNode(
2316return ImmutableArray<IPropertySymbol>.Empty;
3232internal abstract ImmutableArray<ISymbol> GetDeclaredSymbols(BaseFieldDeclarationSyntax declarationSyntax, CancellationToken cancellationToken = default(CancellationToken));
3235ImmutableArray<ParameterSymbol> parameters,
3359out ImmutableArray<Symbol> memberGroup)
3361memberGroup = ImmutableArray<Symbol>.Empty;
3499ImmutableArray<PropertySymbol> originalIndexersOpt = indexerAccess.OriginalIndexersOpt;
3615var candidateSymbols = errorType.CandidateSymbols;
3964private static void GetSymbolsAndResultKind(BoundExpression node, Symbol symbolOpt, ImmutableArray<MethodSymbol> originalCandidates, out OneOrMany<Symbol> symbols, out LookupResultKind resultKind)
3992ref ImmutableArray<Symbol> memberGroup)
4045ref ImmutableArray<Symbol> memberGroup)
4058ImmutableArray<MethodSymbol> candidateConstructors;
4062var instanceConstructors = typeSymbolOpt.IsInterfaceType() && (object)typeSymbolOpt.ComImportCoClass != null ?
4079candidateConstructors = ImmutableArray<MethodSymbol>.Empty;
4106private ImmutableArray<IPropertySymbol> GetIndexerGroupSemanticSymbols(BoundExpression boundNode, Binder binderOpt)
4114return ImmutableArray<IPropertySymbol>.Empty;
4124return ImmutableArray<IPropertySymbol>.Empty;
4127var result = FilterOverriddenOrHiddenIndexers(symbols);
4133private static ImmutableArray<IPropertySymbol> FilterOverriddenOrHiddenIndexers(ArrayBuilder<ISymbol> symbols)
4220private static ImmutableArray<MethodSymbol> FilterOverriddenOrHiddenMethods(ImmutableArray<MethodSymbol> methods)
4263out ImmutableArray<Symbol> memberGroup)
4357ImmutableArray<Symbol> myMethodGroup = memberGroup;
4415out ImmutableArray<Symbol> propertyGroup)
4458ImmutableArray<Symbol> myPropertyGroup = propertyGroup;
4575private static ParameterSymbol FindNamedParameter(ImmutableArray<ParameterSymbol> parameters, string argumentName)
4586internal static ImmutableArray<Symbol> GetReducedAndFilteredMethodGroupSymbols(Binder binder, BoundMethodGroup node)
4591var typeArguments = node.TypeArgumentsOpt;
4599ImmutableArray<MethodSymbol> nonHiddenMethods = FilterOverriddenOrHiddenMethods(node.Methods);
4698ImmutableArray<TypeWithAnnotations> typeArguments,
4724ImmutableArray<TypeWithAnnotations> typeArguments,
4767var methods = call.OriginalMethodsOpt;
5059private ImmutableArray<ISymbol> GetMemberGroupFromNode(SyntaxNode node, CancellationToken cancellationToken)
5073return ImmutableArray<ISymbol>.Empty;
5076protected sealed override ImmutableArray<ISymbol> GetMemberGroupCore(SyntaxNode node, CancellationToken cancellationToken)
5078var methodGroup = this.GetMemberGroupFromNode(node, cancellationToken);
5225protected sealed override ImmutableArray<ISymbol> GetDeclaredSymbolsCore(SyntaxNode declaration, CancellationToken cancellationToken = default(CancellationToken))
5251: ImmutableArray<ISymbol>.Empty;
5287var checksum = text.GetContentHash();
5340protected sealed override ImmutableArray<ISymbol> LookupSymbolsCore(int position, INamespaceOrTypeSymbol container, string name, bool includeReducedExtensionMethods)
5345protected sealed override ImmutableArray<ISymbol> LookupBaseMembersCore(int position, string name)
5350protected sealed override ImmutableArray<ISymbol> LookupStaticMembersCore(int position, INamespaceOrTypeSymbol container, string name)
5355protected sealed override ImmutableArray<ISymbol> LookupNamespacesAndTypesCore(int position, INamespaceOrTypeSymbol container, string name)
5360protected sealed override ImmutableArray<ISymbol> LookupLabelsCore(int position, string name)
5466private protected sealed override ImmutableArray<IImportScope> GetImportScopesCore(int position, CancellationToken cancellationToken)
5484xmlNamespaces: ImmutableArray<ImportedXmlNamespace>.Empty));
Compilation\MemberSemanticModel.cs (10)
192internal override BoundExpression GetSpeculativelyBoundExpression(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption, out Binder binder, out ImmutableArray<Symbol> crefSymbols)
579public sealed override ImmutableArray<Diagnostic> GetSyntaxDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
584public sealed override ImmutableArray<Diagnostic> GetDeclarationDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
589public sealed override ImmutableArray<Diagnostic> GetMethodBodyDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
594public sealed override ImmutableArray<Diagnostic> GetDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
830internal override ImmutableArray<ISymbol> GetDeclaredSymbols(BaseFieldDeclarationSyntax declarationSyntax, CancellationToken cancellationToken = default(CancellationToken))
1174var elements = tupleLiteralType.TupleElements;
1278internal override ImmutableArray<Symbol> GetMemberGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
1290internal override ImmutableArray<IPropertySymbol> GetIndexerGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
1877private static BoundExpression GetContainingArgument(ImmutableArray<BoundExpression> arguments, int position)
Compilation\SpeculativeSemanticModelWithMemberModel.cs (8)
235public override ImmutableArray<Diagnostic> GetSyntaxDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
240public override ImmutableArray<Diagnostic> GetDeclarationDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
245public override ImmutableArray<Diagnostic> GetMethodBodyDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
250public override ImmutableArray<Diagnostic> GetDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
370internal override ImmutableArray<ISymbol> GetDeclaredSymbols(BaseFieldDeclarationSyntax declarationSyntax, CancellationToken cancellationToken = default(CancellationToken))
470internal override ImmutableArray<Symbol> GetMemberGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
475internal override ImmutableArray<IPropertySymbol> GetIndexerGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
575internal override BoundExpression GetSpeculativelyBoundExpression(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption, out Binder binder, out ImmutableArray<Symbol> crefSymbols)
Compilation\SyntaxAndDeclarationManager.cs (25)
28ImmutableArray<SyntaxTree> externalSyntaxTrees,
50ImmutableArray<SyntaxTree> externalSyntaxTrees,
58var loadDirectiveMapBuilder = PooledDictionary<SyntaxTree, ImmutableArray<LoadDirective>>.GetInstance();
99var newExternalSyntaxTrees = this.ExternalSyntaxTrees.AddRange(trees);
161IDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMapBuilder,
196IDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMapBuilder,
307var newExternalSyntaxTrees = this.ExternalSyntaxTrees.RemoveAll(t => trees.Contains(t));
313var syntaxTrees = state.SyntaxTrees;
320ImmutableArray<LoadDirective> unused2;
385ImmutableArray<SyntaxTree> syntaxTrees,
387ImmutableDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMap,
391out ImmutableArray<LoadDirective> oldLoadDirectives)
400oldLoadDirectives = ImmutableArray<LoadDirective>.Empty;
415ImmutableArray<LoadDirective> loadDirectives;
433ImmutableArray<LoadDirective> loadDirectives,
434ImmutableDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMap,
445ImmutableArray<LoadDirective> nestedLoadDirectives;
469var newExternalSyntaxTrees = this.ExternalSyntaxTrees.Replace(oldTree, newTree);
477var syntaxTrees = state.SyntaxTrees;
483ImmutableArray<LoadDirective> oldLoadDirectives;
514ImmutableArray<SyntaxTree> newTrees;
663internal SyntaxAndDeclarationManager WithExternalSyntaxTrees(ImmutableArray<SyntaxTree> trees)
678ImmutableDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMap,
684ImmutableArray<LoadDirective> loadDirectives;
721var externalSyntaxTrees = this.ExternalSyntaxTrees;
Compilation\SyntaxTreeSemanticModel.cs (17)
114public override ImmutableArray<Diagnostic> GetSyntaxDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
121public override ImmutableArray<Diagnostic> GetDeclarationDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
128public override ImmutableArray<Diagnostic> GetMethodBodyDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
135public override ImmutableArray<Diagnostic> GetDiagnostics(TextSpan? span = null, CancellationToken cancellationToken = default(CancellationToken))
255var symbols = binder.BindXmlNameAttribute(attrSyntax, ref discardedUseSiteInfo);
397internal override ImmutableArray<Symbol> GetMemberGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
403return model == null ? ImmutableArray<Symbol>.Empty : model.GetMemberGroupWorker(node, options, cancellationToken);
406internal override ImmutableArray<IPropertySymbol> GetIndexerGroupWorker(CSharpSyntaxNode node, SymbolInfoOptions options, CancellationToken cancellationToken = default(CancellationToken))
412return model == null ? ImmutableArray<IPropertySymbol>.Empty : model.GetIndexerGroupWorker(node, options, cancellationToken);
738internal override BoundExpression GetSpeculativelyBoundExpression(int position, ExpressionSyntax expression, SpeculativeBindingOption bindingOption, out Binder binder, out ImmutableArray<Symbol> crefSymbols)
1398var collection = container.GetMembersUnordered();
1787var collection = name != null ? container.GetMembers(name) : container.GetMembersUnordered();
1792var namespaces = collection.WhereAsArray(symbol => symbol is NamespaceSymbol);
1952var usingAliases = binder.UsingAliases;
1985var externAliases = binder.ExternAliases;
2010internal override ImmutableArray<ISymbol> GetDeclaredSymbols(BaseFieldDeclarationSyntax declarationSyntax, CancellationToken cancellationToken = default(CancellationToken))
2228private TypeParameterSymbol GetTypeParameterSymbol(ImmutableArray<TypeParameterSymbol> parameters, TypeParameterSyntax parameter)
Compiler\DocumentationCommentCompiler.cs (23)
230ImmutableArray<SourceNamedTypeSymbol> extensions = containingType.GetExtensionGroupingInfo().GetMergedExtensions((SourceNamedTypeSymbol)symbol);
268foreach (ImmutableArray<SourceNamedTypeSymbol> extensions in extensionGroupingInfo.EnumerateMergedExtensionBlocks())
318if (!TryGetDocumentationCommentNodes(extension, out DocumentationMode maxDocumentationMode, out ImmutableArray<DocumentationCommentTriviaSyntax> foundDocCommentNodes))
427if (!TryGetDocumentationCommentNodes(symbolForDocComments, out var maxDocumentationMode, out var docCommentNodes))
471ImmutableArray<DocumentationCommentTriviaSyntax> docCommentNodes,
473out ImmutableArray<CSharpSyntaxNode> includeElementNodes)
504static ArrayBuilder<XmlElementSyntax>? getMatchingParamTags(string propertyName, ImmutableArray<DocumentationCommentTriviaSyntax> docCommentNodes)
534ImmutableArray<DocumentationCommentTriviaSyntax> docCommentNodes)
540ImmutableArray<CSharpSyntaxNode> includeElementNodes;
630ImmutableArray<DocumentationCommentTriviaSyntax> docCommentNodes,
635out ImmutableArray<CSharpSyntaxNode> includeElementNodes)
715includeElementNodes = default(ImmutableArray<CSharpSyntaxNode>);
730includeElementNodes = _processIncludes ? includeElementNodesBuilder!.ToImmutableAndFree() : default(ImmutableArray<CSharpSyntaxNode>);
753private static ImmutableArray<ParameterSymbol> GetParameters(Symbol symbol)
770return ImmutableArray<ParameterSymbol>.Empty;
776private static ImmutableArray<TypeParameterSymbol> GetTypeParameters(Symbol symbol)
786return ImmutableArray<TypeParameterSymbol>.Empty;
825private bool TryGetDocumentationCommentNodes(Symbol symbol, out DocumentationMode maxDocumentationMode, out ImmutableArray<DocumentationCommentTriviaSyntax> nodes)
828nodes = default(ImmutableArray<DocumentationCommentTriviaSyntax>);
838ImmutableArray<DocumentationCommentTriviaSyntax> triviaList = SourceDocumentationCommentUtils.GetDocumentationCommentTriviaFromSyntaxNode((CSharpSyntaxNode)reference.GetSyntax(), diagnosticBag);
869nodes = ImmutableArray<DocumentationCommentTriviaSyntax>.Empty;
1214ImmutableArray<Symbol> symbols = binder.BindCref(crefSyntax, out ambiguityWinner, diagnostics);
1303ImmutableArray<Symbol> referencedSymbols = binder.BindXmlNameAttribute(syntax, ref useSiteInfo);
Compiler\MethodCompiler.cs (54)
165var additionalTypes = moduleBeingBuiltOpt.GetAdditionalTopLevelTypes();
168var embeddedTypes = moduleBeingBuiltOpt.GetEmbeddedTypes(diagnostics);
286out ImmutableArray<SourceSpan> codeCoverageSpans,
315ImmutableArray<EncLambdaInfo>.Empty,
316ImmutableArray<LambdaRuntimeRudeEditInfo>.Empty,
317ImmutableArray<EncClosureInfo>.Empty,
318ImmutableArray<StateMachineStateDebugInfo>.Empty,
325codeCoverageSpans: ImmutableArray<SourceSpan>.Empty,
500var members = containingType.GetMembers();
663var processedInitializers = new Binder.ProcessedFieldInitializers() { BoundInitializers = ImmutableArray<BoundInitializer>.Empty };
710private void CompileSynthesizedMethods(ImmutableArray<NamedTypeSymbol> additionalTypes, BindingDiagnosticBag diagnostics)
807ImmutableArray<EncLambdaInfo>.Empty,
808ImmutableArray<LambdaRuntimeRudeEditInfo>.Empty,
809ImmutableArray<EncClosureInfo>.Empty,
817codeCoverageSpans: ImmutableArray<SourceSpan>.Empty,
865var interfaces = sourceTypeSymbol.GetInterfacesToEmit();
952sourceMethod.SetDiagnostics(ImmutableArray<Diagnostic>.Empty, out diagsWritten);
965var cachedDiagnostics = sourceMethod.Diagnostics;
1013body = new BoundBlock(methodSymbol.GetNonNullSyntaxNode(), ImmutableArray<LocalSymbol>.Empty, ImmutableArray<BoundStatement>.Empty) { WasCompilerGenerated = true };
1056new BoundBlock(analyzedInitializers.Syntax, ImmutableArray<LocalSymbol>.Empty, analyzedInitializers.Statements), // The block is necessary to establish the right local scope for the analysis
1214ImmutableArray<SourceSpan> codeCoverageSpans;
1251codeCoverageSpans = ImmutableArray<SourceSpan>.Empty;
1267ImmutableArray<BoundStatement> boundStatements;
1275boundStatements = ImmutableArray<BoundStatement>.Empty;
1314out ImmutableArray<SourceSpan> initializerCodeCoverageSpans,
1456exceptionHandlers: ImmutableArray<Cci.ExceptionHandlerRegion>.Empty,
1459localScopes: ImmutableArray<Cci.LocalScope>.Empty,
1462lambdaDebugInfo: ImmutableArray<EncLambdaInfo>.Empty,
1463orderedLambdaRuntimeRudeEdits: ImmutableArray<LambdaRuntimeRudeEditInfo>.Empty,
1464closureDebugInfo: ImmutableArray<EncClosureInfo>.Empty,
1469StateMachineStatesDebugInfo.Create(variableSlotAllocator: null, ImmutableArray<StateMachineStateDebugInfo>.Empty),
1471codeCoverageSpans: ImmutableArray<SourceSpan>.Empty,
1490out ImmutableArray<SourceSpan> codeCoverageSpans,
1504codeCoverageSpans = ImmutableArray<SourceSpan>.Empty;
1627codeCoverageSpans = ImmutableArray<SourceSpan>.Empty;
1641ImmutableArray<EncLambdaInfo> lambdaDebugInfo,
1642ImmutableArray<LambdaRuntimeRudeEditInfo> orderedLambdaRuntimeRudeEdits,
1643ImmutableArray<EncClosureInfo> closureDebugInfo,
1644ImmutableArray<StateMachineStateDebugInfo> stateMachineStateDebugInfos,
1651ImmutableArray<SourceSpan> codeCoverageSpans,
1701codeGen.Generate(out int asyncCatchHandlerOffset, out var asyncYieldPoints, out var asyncResumePoints, out hasStackalloc);
1732var stateMachineHoistedLocalScopes = ((object)kickoffMethod != null) ?
1733builder.GetHoistedLocalScopes() : default(ImmutableArray<StateMachineHoistedLocalScope>);
1740var localVariables = builder.LocalSlotManager.LocalsInOrder();
1753var stateMachineHoistedLocalSlots = default(ImmutableArray<EncHoistedLocalInfo>);
1754var stateMachineAwaiterSlots = default(ImmutableArray<Cci.ITypeReference>);
1810out ImmutableArray<EncHoistedLocalInfo> hoistedVariableSlots,
1811out ImmutableArray<Cci.ITypeReference> awaiterSlots)
2097ImmutableArray<BoundStatement> statements;
2106statements = ImmutableArray<BoundStatement>.Empty;
Declarations\DeclarationTreeBuilder.cs (22)
125private ImmutableArray<SingleNamespaceOrTypeDeclaration> VisitNamespaceChildren(
136return ImmutableArray<SingleNamespaceOrTypeDeclaration>.Empty;
192var diagnostics = ImmutableArray<Diagnostic>.Empty;
229children: ImmutableArray<SingleTypeDeclaration>.Empty,
230diagnostics: ImmutableArray<Diagnostic>.Empty,
234private static SingleNamespaceOrTypeDeclaration CreateSimpleProgram(GlobalStatementSyntax firstGlobalStatement, bool hasAwaitExpressions, bool isIterator, bool hasReturnWithExpression, ImmutableArray<Diagnostic> diagnostics)
257children: ImmutableArray<SingleTypeDeclaration>.Empty,
305private static ImmutableArray<ReferenceDirective> GetReferenceDirectives(CompilationUnitSyntax compilationUnit)
311return ImmutableArray<ReferenceDirective>.Empty;
324ImmutableArray<SingleTypeDeclaration> children,
345diagnostics: ImmutableArray<Diagnostic>.Empty,
357diagnostics: ImmutableArray<Diagnostic>.Empty);
401var children = VisitNamespaceChildren(compilationUnit, compilationUnit.Members, ((Syntax.InternalSyntax.CompilationUnitSyntax)(compilationUnit.Green)).Members);
434private RootSingleNamespaceDeclaration CreateRootSingleNamespaceDeclaration(CompilationUnitSyntax compilationUnit, ImmutableArray<SingleNamespaceOrTypeDeclaration> children, bool isForScript)
471referenceDirectives: isForScript ? GetReferenceDirectives(compilationUnit) : ImmutableArray<ReferenceDirective>.Empty,
503var children = VisitNamespaceChildren(node, node.Members, ((Syntax.InternalSyntax.BaseNamespaceDeclarationSyntax)node.Green).Members);
518diagnostics: ImmutableArray<Diagnostic>.Empty);
821private ImmutableArray<SingleTypeDeclaration> VisitTypeChildren(TypeDeclarationSyntax node)
825return ImmutableArray<SingleTypeDeclaration>.Empty;
864children: ImmutableArray<SingleTypeDeclaration>.Empty,
902children: ImmutableArray<SingleTypeDeclaration>.Empty,
Emitter\EditAndContinue\CSharpSymbolMatcher.cs (45)
30IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherSynthesizedMembers,
31IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherDeletedMembers)
51otherSynthesizedMembers: SpecializedCollections.EmptyReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>>(),
52otherDeletedMembers: SpecializedCollections.EmptyReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>>(),
101protected override bool TryGetMatchingDelegateWithIndexedName(INamedTypeSymbolInternal delegateTemplate, ImmutableArray<AnonymousTypeValue> values, out AnonymousTypeValue match)
116private readonly IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> _otherSynthesizedMembers;
118private readonly IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> _otherDeletedMembers;
129private readonly ConcurrentDictionary<ISymbolInternal, IReadOnlyDictionary<string, ImmutableArray<ISymbolInternal>>> _otherMembers = new(ReferenceEqualityComparer.Instance);
135IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherSynthesizedMembers,
136IReadOnlyDictionary<ISymbolInternal, ImmutableArray<ISymbolInternal>> otherDeletedMembers,
171var otherModifiers = VisitCustomModifiers(symbol.ElementTypeWithAnnotations.CustomModifiers);
297var typeArguments = sourceType.GetAllTypeArguments(ref discardedUseSiteInfo);
305var otherTypeParameters = otherDef.GetAllTypeParameters();
308var otherTypeArguments = typeArguments.SelectAsArray((t, v) =>
397var otherModifiers = VisitCustomModifiers(symbol.PointedAtTypeWithAnnotations.CustomModifiers);
411var otherRefCustomModifiers = VisitCustomModifiers(sig.RefCustomModifiers);
414var otherParameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
415ImmutableArray<ImmutableArray<CustomModifier>> otherParamRefCustomModifiers = default;
420var otherParamRefCustomModifiersBuilder = ArrayBuilder<ImmutableArray<CustomModifier>>.GetInstance(sig.ParameterCount);
456var otherTypeParameters = otherContainer.Kind switch
466private ImmutableArray<CustomModifier> VisitCustomModifiers(ImmutableArray<CustomModifier> modifiers)
500return _otherSynthesizedTypes.AnonymousDelegatesWithIndexedNames.TryGetValue(key, out var otherTypeCandidates) &&
504internal bool TryGetMatchingDelegateWithIndexedName(AnonymousTypeManager.AnonymousDelegateTemplateSymbol delegateTemplate, ImmutableArray<AnonymousTypeValue> values, out AnonymousTypeValue match)
566if (otherMembersByName.TryGetValue(sourceMember.MetadataName, out var otherMembers))
625var typeParameters = method.TypeParameters;
650var typeParameters = type.TypeParameters;
708private static void ValidateFunctionPointerParamOrReturn(TypeWithAnnotations type, RefKind refKind, ImmutableArray<CustomModifier> refCustomModifiers, bool allowOut)
713static bool verifyRefModifiers(ImmutableArray<CustomModifier> modifiers, RefKind refKind, bool allowOut)
791private IReadOnlyDictionary<string, ImmutableArray<ISymbolInternal>> GetAllEmittedMembers(ISymbolInternal symbol)
809if (_otherSynthesizedMembers.TryGetValue(symbol, out var synthesizedMembers))
814if (_otherDeletedMembers.TryGetValue(symbol, out var deletedMembers))
876var translatedModifiers = VisitCustomModifiers(symbol.ElementTypeWithAnnotations.CustomModifiers);
897var translatedTypeArguments = type.GetAllTypeArguments(ref discardedUseSiteInfo).SelectAsArray((t, v) => t.WithTypeAndModifiers((TypeSymbol)v.Visit(t.Type),
919var translatedModifiers = VisitCustomModifiers(symbol.PointedAtTypeWithAnnotations.CustomModifiers);
928var translatedRefCustomModifiers = VisitCustomModifiers(sig.RefCustomModifiers);
930var translatedParameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
931ImmutableArray<ImmutableArray<CustomModifier>> translatedParamRefCustomModifiers = default;
936var translatedParamRefCustomModifiersBuilder = ArrayBuilder<ImmutableArray<CustomModifier>>.GetInstance(sig.ParameterCount);
957private ImmutableArray<CustomModifier> VisitCustomModifiers(ImmutableArray<CustomModifier> modifiers)
Emitter\Model\PEAssemblyBuilder.cs (38)
29private readonly ImmutableArray<NamedTypeSymbol> _additionalTypes;
31private ImmutableArray<Cci.IFileReference> _lazyFiles;
34private ImmutableArray<Cci.IFileReference> _lazyFilesWithoutManifestResources;
77ImmutableArray<NamedTypeSymbol> additionalTypes)
92public sealed override ImmutableArray<NamedTypeSymbol> GetAdditionalTopLevelTypes()
95internal sealed override ImmutableArray<NamedTypeSymbol> GetEmbeddedTypes(BindingDiagnosticBag diagnostics)
132ImmutableArray<Cci.IFileReference> getFiles(ref ImmutableArray<Cci.IFileReference> lazyFiles)
139var modules = _sourceAssembly.Modules;
178var modules = _sourceAssembly.Modules;
214ImmutableArray<TypedConstant>.Empty,
215ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
218internal override SynthesizedAttributeData SynthesizeNullableAttribute(WellKnownMember member, ImmutableArray<TypedConstant> arguments)
227ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
233internal override SynthesizedAttributeData SynthesizeNullableContextAttribute(ImmutableArray<TypedConstant> arguments)
241ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
247internal override SynthesizedAttributeData SynthesizeNullablePublicOnlyAttribute(ImmutableArray<TypedConstant> arguments)
255ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
261internal override SynthesizedAttributeData SynthesizeNativeIntegerAttribute(WellKnownMember member, ImmutableArray<TypedConstant> arguments)
270ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
283ImmutableArray<TypedConstant>.Empty,
284ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
290internal override SynthesizedAttributeData SynthesizeRefSafetyRulesAttribute(ImmutableArray<TypedConstant> arguments)
298ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
304internal override SynthesizedAttributeData TrySynthesizeMemorySafetyRulesAttribute(ImmutableArray<TypedConstant> arguments)
325ImmutableArray<TypedConstant>.Empty,
326ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
339ImmutableArray<TypedConstant>.Empty,
340ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
353ImmutableArray<TypedConstant>.Empty,
354ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
367ImmutableArray<TypedConstant>.Empty,
368ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
382ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
400ImmutableArray<TypedConstant>.Empty,
401ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
414ImmutableArray<TypedConstant>.Empty,
415ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
Emitter\Model\PEModuleBuilder.cs (37)
33private readonly ConcurrentDictionary<ImportChain, ImmutableArray<Cci.UsedNamespaceOrType>> _translatedImportsMap =
34new ConcurrentDictionary<ImportChain, ImmutableArray<Cci.UsedNamespaceOrType>>(ReferenceEqualityComparer.Instance);
45private ImmutableArray<Cci.ExportedType> _lazyExportedTypes;
151public sealed override ImmutableArray<Cci.UsedNamespaceOrType> GetImports() => ImmutableArray<Cci.UsedNamespaceOrType>.Empty;
158ImmutableArray<ModuleSymbol> modules = SourceModule.ContainingAssembly.Modules;
220public sealed override IEnumerable<(Cci.ITypeDefinition, ImmutableArray<Cci.DebugSourceDocument>)> GetTypeToDebugDocumentMap(EmitContext context)
658public sealed override ImmutableArray<Cci.ExportedType> GetExportedTypes(EmitContext context)
679private ImmutableArray<Cci.ExportedType> CalculateExportedTypes(EmitContext context)
686var modules = sourceAssembly.Modules;
717private void ReportExportedTypeNameCollisions(ImmutableArray<Cci.ExportedType> exportedTypes, DiagnosticBag diagnostics)
859ImmutableArray<NamedTypeSymbol> nested = type.GetTypeMembers(); // Ordered.
904foreach ((Cci.INestedTypeReference GroupingType, ImmutableArray<Cci.INestedTypeReference> MarkerTypes) item in retargetingType.GetExtensionGroupingAndMarkerTypesForTypeForwarding(context))
927static void pushNestedTypes(ArrayBuilder<(NamedTypeSymbol type, int parentIndex)> stack, int index, ImmutableArray<NamedTypeSymbol> nested)
941static void pushAndProcessNestedTypes(ArrayBuilder<(NamedTypeSymbol type, int parentIndex)> stack, EmitContext context, int index, ImmutableArray<NamedTypeSymbol> nested, ArrayBuilder<Cci.ExportedType> builder)
1516internal ImmutableArray<Cci.IParameterTypeInformation> Translate(ImmutableArray<ParameterSymbol> @params)
1555private ImmutableArray<Cci.IParameterTypeInformation> TranslateAll(ImmutableArray<ParameterSymbol> @params)
1743var value = flagsBuilder.SelectAsArray((flag, byteType) => new TypedConstant(byteType, TypedConstantKind.Primitive, flag), byteType);
1768internal virtual SynthesizedAttributeData SynthesizeNullableAttribute(WellKnownMember member, ImmutableArray<TypedConstant> arguments)
1788internal virtual SynthesizedAttributeData SynthesizeNullableContextAttribute(ImmutableArray<TypedConstant> arguments)
1821attribute = SynthesizeNativeIntegerAttribute(WellKnownMember.System_Runtime_CompilerServices_NativeIntegerAttribute__ctor, ImmutableArray<TypedConstant>.Empty);
1827var transformFlags = builder.SelectAsArray((flag, constantType) => new TypedConstant(constantType, TypedConstantKind.Primitive, flag), booleanType);
1829var arguments = ImmutableArray.Create(new TypedConstant(boolArray, transformFlags));
1837internal virtual SynthesizedAttributeData SynthesizeNativeIntegerAttribute(WellKnownMember member, ImmutableArray<TypedConstant> arguments)
1868internal virtual SynthesizedAttributeData SynthesizeRefSafetyRulesAttribute(ImmutableArray<TypedConstant> arguments)
1875internal virtual SynthesizedAttributeData TrySynthesizeMemorySafetyRulesAttribute(ImmutableArray<TypedConstant> arguments)
1888internal virtual SynthesizedAttributeData SynthesizeNullablePublicOnlyAttribute(ImmutableArray<TypedConstant> arguments)
2254public override ImmutableArray<NamedTypeSymbol> GetAdditionalTopLevelTypes()
2256ImmutableArray<NamedTypeSymbol> prepend = [];
2287public sealed override ImmutableArray<NamedTypeSymbol> GetEmbeddedTypes(DiagnosticBag diagnostics)
2291var result = GetEmbeddedTypes(bindingDiagnostics);
2298internal virtual ImmutableArray<NamedTypeSymbol> GetEmbeddedTypes(BindingDiagnosticBag diagnostics)
2303internal bool TryGetTranslatedImports(ImportChain chain, out ImmutableArray<Cci.UsedNamespaceOrType> imports)
2308internal ImmutableArray<Cci.UsedNamespaceOrType> GetOrAddTranslatedImports(ImportChain chain, ImmutableArray<Cci.UsedNamespaceOrType> imports)
Emitter\NoPia\EmbeddedTypesManager.cs (11)
165internal override CSharpAttributeData CreateSynthesizedAttribute(WellKnownMember constructor, ImmutableArray<TypedConstant> constructorArguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
181ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
190ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
197internal override CSharpAttributeData CreateSynthesizedAttribute(SpecialMember constructor, ImmutableArray<TypedConstant> constructorArguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
208internal override bool TryGetAttributeArguments(CSharpAttributeData attrData, out ImmutableArray<TypedConstant> constructorArguments, out ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
241protected override void OnGetTypesCompleted(ImmutableArray<EmbeddedType> types, DiagnosticBag diagnostics)
680internal static ImmutableArray<EmbeddedParameter> EmbedParameters(
682ImmutableArray<ParameterSymbol> underlyingParameters)
Errors\CSDiagnosticInfo.cs (8)
24: this(code, Array.Empty<object>(), ImmutableArray<Symbol>.Empty, ImmutableArray<Location>.Empty)
29: this(code, args, ImmutableArray<Symbol>.Empty, ImmutableArray<Location>.Empty)
33internal CSDiagnosticInfo(ErrorCode code, ImmutableArray<Symbol> symbols, object[] args)
34: this(code, args, symbols, ImmutableArray<Location>.Empty)
38internal CSDiagnosticInfo(ErrorCode code, object[] args, ImmutableArray<Symbol> symbols, ImmutableArray<Location> additionalLocations)
FlowAnalysis\AbstractFlowPass.cs (29)
315protected virtual void EnterParameters(ImmutableArray<ParameterSymbol> parameters)
327ImmutableArray<ParameterSymbol> parameters,
421protected virtual ImmutableArray<PendingBranch> Scan(ref bool badRegion)
432ImmutableArray<PendingBranch> result = RemoveReturns();
436protected ImmutableArray<PendingBranch> Analyze(ref bool badRegion, Optional<TLocalState> initialState = default)
438ImmutableArray<PendingBranch> returns;
466protected ImmutableArray<ParameterSymbol> MethodParameters
471return (object)method == null ? ImmutableArray<ParameterSymbol>.Empty : method.Parameters;
531protected virtual ImmutableArray<PendingBranch> RemoveReturns()
533ImmutableArray<PendingBranch> result;
1132VisitArguments(node.Arguments, default(ImmutableArray<RefKind>), null, default, false);
1311private void VisitStatements(ImmutableArray<BoundStatement> statements)
1517protected virtual void VisitArguments(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol method, ImmutableArray<int> argsToParamsOpt, bool expanded)
1524private void VisitArgumentsBeforeCall(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt)
1545private void VisitArgumentsAfterCall(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol? method, ImmutableArray<int> argsToParamsOpt, bool expanded)
1574protected static RefKind GetRefKind(ImmutableArray<RefKind> refKindsOpt, int index)
2088private void VisitCollectionExpression(ImmutableArray<BoundNode> elements)
3186var sideEffects = node.SideEffects;
3567VisitArguments(node.Arguments, default(ImmutableArray<RefKind>), node.Constructor, default, false);
3606private BoundNode VisitObjectOrCollectionInitializerExpression(ImmutableArray<BoundExpression> initializers)
3618var arguments = node.Arguments;
3651VisitArguments(node.Arguments, default(ImmutableArray<RefKind>), node.AddMethod, node.ArgsToParamsOpt, node.Expanded);
3657VisitArguments(node.Arguments, default(ImmutableArray<RefKind>), node.AddMethod, node.ArgsToParamsOpt, node.Expanded);
3665VisitArguments(node.Arguments, default(ImmutableArray<RefKind>), method: null, default, false);
FlowAnalysis\DataFlowsOutWalker.cs (4)
25private readonly ImmutableArray<ISymbol> _dataFlowsIn;
27private DataFlowsOutWalker(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, HashSet<Symbol> unassignedVariables, ImmutableArray<ISymbol> dataFlowsIn)
33internal static HashSet<Symbol> Analyze(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, HashSet<Symbol> unassignedVariables, ImmutableArray<ISymbol> dataFlowsIn)
67protected override ImmutableArray<PendingBranch> Scan(ref bool badRegion)
FlowAnalysis\FlowAnalysisPass.cs (8)
48ImmutableArray<FieldSymbol> implicitlyInitializedFields = default;
69else if (Analyze(compilation, method, block, diagnostics.DiagnosticBag, out var needsImplicitReturn, out var unusedImplicitlyInitializedFields))
85var newStatements = block.Statements.Add(new BoundReturnStatement(trailingExpression.Syntax, RefKind.None, trailingExpression, @checked: false));
86block = new BoundBlock(block.Syntax, ImmutableArray<LocalSymbol>.Empty, newStatements) { WasCompilerGenerated = true };
113private static BoundBlock PrependImplicitInitializations(BoundBlock body, MethodSymbol method, ImmutableArray<FieldSymbol> implicitlyInitializedFields, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics)
172var statements = body.Statements;
179return body.Update(body.Locals, ImmutableArray<MethodSymbol>.Empty, body.HasUnsafeModifier, body.Instrumentation, builder.ToImmutableAndFree());
216out ImmutableArray<FieldSymbol> implicitlyInitializedFieldsOpt)
FlowAnalysis\NullableWalker.cs (186)
294private static readonly ImmutableArray<BoundKind> s_skippedExpressions = ImmutableArray.Create(BoundKind.ArrayInitialization,
630protected override ImmutableArray<PendingBranch> Scan(ref bool badRegion)
657ImmutableArray<PendingBranch> pendingReturns = base.Scan(ref badRegion);
703var membersWithStateEnforcedByRequiredMembers = constructorEnforcesRequiredMembers
711: ImmutableArray<string>.Empty;
736checkMemberStateOnConstructorExit(method, member, state, thisSlot, exitLocation, membersWithStateEnforcedByRequiredMembers: ImmutableArray<string>.Empty, forcePropertyAnalysis: true);
758void checkMemberStateOnConstructorExit(MethodSymbol constructor, Symbol member, LocalState state, int thisSlot, Location? exitLocation, ImmutableArray<string> membersWithStateEnforcedByRequiredMembers, bool forcePropertyAnalysis)
845var info = new CSDiagnosticInfo(errorCode, new object[] { symbol.Kind.Localize(), symbol.Name }, ImmutableArray<Symbol>.Empty, additionalLocations: symbol.Locations);
917ImmutableArray<Symbol> getMembersNeedingDefaultInitialState()
921return ImmutableArray<Symbol>.Empty;
961static ImmutableArray<Symbol> membersToBeInitialized(NamedTypeSymbol containingType, bool includeAllMembers, bool includeCurrentTypeRequiredMembers, bool includeBaseRequiredMembers)
966=> ImmutableArray<Symbol>.Empty,
999static ImmutableArray<Symbol> getAllTypeAndRequiredMembers(TypeSymbol containingType)
1001var members = containingType.GetMembersUnordered();
1146void enforceMemberNotNullWhenIfAffected(SyntaxNode? syntaxOpt, bool sense, ImmutableArray<Symbol> members, LocalState state, LocalState otherState)
1162var notNullMembers = sense ? method.NotNullWhenTrueMembers : method.NotNullWhenFalseMembers;
1208private void MakeMembersMaybeNull(MethodSymbol method, ImmutableArray<string> members)
1278ImmutableArray<ParameterSymbol> parameters = method.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: true);
1326ImmutableArray<ParameterSymbol> parameters = method.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: true);
1360private void EnforceParameterNotNullWhenOnExit(SyntaxNode syntax, ImmutableArray<ParameterSymbol> parameters, bool sense, LocalState stateWhen)
1420private void EnforceNotNullIfNotNull(SyntaxNode? syntaxOpt, LocalState state, ImmutableArray<ParameterSymbol> parameters, ImmutableHashSet<string> inputParamNames, NullableFlowState outputState, ParameterSymbol? outputParam)
1929ImmutableArray<PendingBranch> returns = walker.Analyze(ref badRegion, initialState);
2320private void VisitAndUnsplitAll<T>(ImmutableArray<T> nodes) where T : BoundNode
3016var methodParameters = methodSymbol.Parameters;
3017var signatureParameters = (_useDelegateInvokeParameterTypes ? _delegateInvokeMethod! : methodSymbol).Parameters;
3157ImmutableArray<ParameterSymbol> parameters = method.GetParametersIncludingExtensionParameter(skipExtensionIfStatic: true);
3509ImmutableArray<PendingBranch> pendingReturns = RemoveReturns();
3695private void DeclareLocals(ImmutableArray<LocalSymbol> locals)
4051var allTypeArguments = ((NamedTypeSymbol)collectionFinalType).GetAllTypeArgumentsNoUseSiteDiagnostics();
4284var arguments = node.Arguments;
4291ImmutableArray<VisitResult> argumentResults = reinferenceResult.Results;
4313ImmutableArray<VisitResult> argumentResults,
4342ImmutableArray<VisitResult> argumentResults,
4382ImmutableArray<BoundExpression> arguments, ImmutableArray<VisitResult> argumentResults,
4409var argumentTypes = argumentResults.SelectAsArray(ar => ar.RValueType);
4475ImmutableArray<BoundExpression> arguments,
4476ImmutableArray<VisitResult> argumentResults,
4586ImmutableArray<VisitResult> argumentResults = default;
4589getSymbolAndParameters(objectInitializer, containingType, out Symbol? symbol, out ImmutableArray<ParameterSymbol> parameters);
4592out ImmutableArray<BoundExpression> arguments, out ImmutableArray<RefKind> refKindsOpt,
4593out ImmutableArray<int> argsToParamsOpt, out BitVector defaultArguments, out bool usesExtensionReceiver, out VisitResult? firstArgumentResult);
4623InitializerCompletionAfterTargetType? setAnalyzedNullability(BoundAssignmentOperator node, BoundObjectInitializerMember objectInitializer, Symbol? updatedSymbol, ImmutableArray<VisitResult> argumentResults,
4649InitializerCompletionAfterTargetType setAnalyzedNullabilityAsContinuation(BoundAssignmentOperator node, ImmutableArray<VisitResult> argumentResults,
4656getSymbolAndParameters(objectInitializer, containingType, out Symbol? symbol, out ImmutableArray<ParameterSymbol> parameters);
4767out ImmutableArray<BoundExpression> arguments, out ImmutableArray<RefKind> refKindsOpt, out ImmutableArray<int> argsToParamsOpt,
4794out Symbol? symbol, out ImmutableArray<ParameterSymbol> parametersOpt)
4829ImmutableArray<VisitResult> argumentResults = default;
4865ImmutableArray<VisitResult> argumentResults,
4890ImmutableArray<VisitResult> argumentResults,
4903static MethodSymbol addMethodAsMemberOfContainingType(BoundCollectionElementInitializer node, TypeSymbol containingType, ref ImmutableArray<VisitResult> argumentResults)
4970var members = ((NamedTypeSymbol)type).GetMembersUnordered();
5018var arguments = node.Arguments;
5019var argumentTypes = arguments.SelectAsArray((arg, self) =>
5021var argumentsWithAnnotations = argumentTypes.SelectAsArray(arg =>
5140var placeholders = placeholderBuilder.ToImmutableAndFree();
5260var placeholders = placeholdersBuilder.ToImmutableAndFree();
5631var parameters = method.Parameters;
6102static ImmutableArray<NamedTypeSymbol> inheritedInterfaces(TypeSymbol type) => type switch
6106_ => ImmutableArray<NamedTypeSymbol>.Empty,
6931ImmutableArray<VisitResult> results = reinferenceResult.Results;
6966ImmutableArray<BoundExpression> arguments,
6967ImmutableArray<RefKind> refKindsOpt,
6968ImmutableArray<int> argsToParamsOpt,
6985ImmutableArray<ParameterSymbol> parameters = AdjustParametersIfNeeded(method.Parameters, adjustForExtensionBlockMember, method);
7001private static ImmutableArray<BoundExpression> AdjustArgumentsIfNeeded(ImmutableArray<BoundExpression> arguments, bool isExtensionBlockMethod, BoundExpression? receiver)
7012private static ImmutableArray<ParameterSymbol> AdjustParametersIfNeeded(ImmutableArray<ParameterSymbol> parameters, bool isExtensionBlockMember, Symbol member)
7025internal static ImmutableArray<RefKind> AdjustArgumentRefKindsIfNeeded(ImmutableArray<RefKind> argumentRefKindsOpt, bool adjustForExtensionBlockMethod,
7061private static ImmutableArray<int> AdjustArgsToParamsOptIfNeeded(ImmutableArray<int> argsToParamsOpt, bool isExtensionBlockMethod)
7103private void LearnFromEqualsMethod(MethodSymbol method, BoundCall node, TypeWithState receiverType, ImmutableArray<VisitResult> results)
7107var arguments = node.Arguments;
7281public readonly ImmutableArray<BoundExpression> Arguments;
7282public readonly ImmutableArray<VisitResult> Results;
7283public readonly ImmutableArray<int> ArgsToParamsOpt;
7285public CompareExchangeInfo(ImmutableArray<BoundExpression> arguments, ImmutableArray<VisitResult> results, ImmutableArray<int> argsToParamsOpt)
7318var argsToParamsOpt = compareExchangeInfo.ArgsToParamsOpt;
7519protected override void VisitArguments(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol method, ImmutableArray<int> argsToParamsOpt, bool expanded)
7528ImmutableArray<BoundExpression> arguments,
7529ImmutableArray<RefKind> refKindsOpt,
7531ImmutableArray<int> argsToParamsOpt,
7543ImmutableArray<BoundExpression> arguments,
7544ImmutableArray<RefKind> refKindsOpt,
7546ImmutableArray<int> argsToParamsOpt,
7554private delegate (TMember? member, bool returnNotNull) ArgumentsCompletionDelegate<TMember>(ImmutableArray<VisitResult> argumentResults, ImmutableArray<ParameterSymbol> parametersOpt, TMember? member) where TMember : Symbol;
7559private readonly struct ReinferenceResult<TMember>(TMember? member, ImmutableArray<VisitResult> results,
7564public readonly ImmutableArray<VisitResult> Results = results;
7572ImmutableArray<BoundExpression> arguments,
7573ImmutableArray<RefKind> refKindsOpt,
7574ImmutableArray<ParameterSymbol> parametersOpt,
7575ImmutableArray<int> argsToParamsOpt,
7598(ImmutableArray<BoundExpression> argumentsNoConversions, ImmutableArray<Conversion> conversions) = RemoveArgumentConversions(arguments, refKindsOpt);
7601ImmutableArray<VisitResult> results = VisitArgumentsEvaluate(argumentsNoConversions, refKindsOpt, GetParametersAnnotations(arguments, parametersOpt, argsToParamsOpt, expanded), defaultArguments, firstArgumentResult: firstArgumentResult);
7612ImmutableArray<BoundExpression> arguments,
7613ImmutableArray<BoundExpression> argumentsNoConversions,
7614ImmutableArray<Conversion> conversions,
7615ImmutableArray<VisitResult> results,
7616ImmutableArray<RefKind> refKindsOpt,
7617ImmutableArray<ParameterSymbol> parametersOpt,
7618ImmutableArray<int> argsToParamsOpt,
7805ImmutableArray<BoundExpression> arguments,
7806ImmutableArray<BoundExpression> argumentsNoConversions,
7807ImmutableArray<Conversion> conversions,
7808ImmutableArray<RefKind> refKindsOpt,
7809ImmutableArray<int> argsToParamsOpt,
7814return (ImmutableArray<VisitResult> results, ImmutableArray<ParameterSymbol> parametersOpt, TMember? member) =>
7827static void expandParamsCollection(ref ImmutableArray<BoundExpression> arguments, ref ImmutableArray<RefKind> refKindsOpt, ImmutableArray<ParameterSymbol> parametersOpt, ref ImmutableArray<int> argsToParamsOpt, ref BitVector defaultArguments)
7841ImmutableArray<BoundExpression> elements;
7988var notNullMembers = method.NotNullMembers;
7989var notNullWhenTrueMembers = method.NotNullWhenTrueMembers;
7990var notNullWhenFalseMembers = method.NotNullWhenFalseMembers;
8025void applyMemberPostConditions(int receiverSlot, TypeSymbol type, ImmutableArray<string> members, ref LocalState state)
8078private ImmutableArray<VisitResult> VisitArgumentsEvaluate(
8079ImmutableArray<BoundExpression> arguments,
8080ImmutableArray<RefKind> refKindsOpt,
8081ImmutableArray<FlowAnalysisAnnotations> parameterAnnotationsOpt,
8089return ImmutableArray<VisitResult>.Empty;
8113private ImmutableArray<FlowAnalysisAnnotations> GetParametersAnnotations(ImmutableArray<BoundExpression> arguments, ImmutableArray<ParameterSymbol> parametersOpt, ImmutableArray<int> argsToParamsOpt, bool expanded)
8115ImmutableArray<FlowAnalysisAnnotations> parameterAnnotationsOpt = default;
8616private (ImmutableArray<BoundExpression> arguments, ImmutableArray<Conversion> conversions) RemoveArgumentConversions(
8617ImmutableArray<BoundExpression> arguments,
8618ImmutableArray<RefKind> refKindsOpt)
8621var conversions = default(ImmutableArray<Conversion>);
8665ImmutableArray<ParameterSymbol> parametersOpt,
8666ImmutableArray<int> argsToParamsOpt,
8699ImmutableArray<BoundExpression> arguments,
8700ImmutableArray<RefKind> argumentRefKindsOpt,
8701ImmutableArray<int> argsToParamsOpt,
8730parameterTypes: out ImmutableArray<TypeWithAnnotations> parameterTypes,
8731parameterRefKinds: out ImmutableArray<RefKind> parameterRefKinds);
8735var typeParameters = definition.GetTypeParametersIncludingExtension();
8859private ImmutableArray<BoundExpression> GetArgumentsForMethodTypeInference(ImmutableArray<VisitResult> argumentResults, ImmutableArray<BoundExpression> arguments)
9398var arguments = node.Arguments;
9399ImmutableArray<TypeWithState> elementTypes = arguments.SelectAsArray((a, w) => w.VisitRvalueWithState(a), this);
9400ImmutableArray<TypeWithAnnotations> elementTypesWithAnnotations = elementTypes.SelectAsArray(a => a.ToTypeWithAnnotations(compilation));
9418var locations = tupleOpt.TupleElements.SelectAsArray((element, location) => element.TryGetFirstLocation() ?? location, node.Syntax.Location);
9441ImmutableArray<BoundExpression> values,
9442ImmutableArray<TypeWithState> types,
9443ImmutableArray<int> argsToParamsOpt,
9452var tupleElements = tupleType.TupleElements;
9522var conversions = conversion.UnderlyingConversions;
9523var targetElements = ((NamedTypeSymbol)targetType).TupleElements;
9524var valueElements = valueTuple.TupleElements;
9899static (MethodSymbol invokeSignature, ImmutableArray<ParameterSymbol>) getDelegateOrFunctionPointerInfo(TypeSymbol targetType)
9904_ => (null, ImmutableArray<ParameterSymbol>.Empty),
10641ImmutableArray<MethodSymbol> candidates = toType.UnionFactoryMethods(ref discardedUseSiteInfo);
11085private MethodSymbol CheckMethodGroupReceiverNullability(BoundMethodGroup group, ImmutableArray<ParameterSymbol> parameters, MethodSymbol method, bool invokedAsExtensionMethod)
11488var argumentRefKinds = AdjustArgumentRefKindsIfNeeded(invocation.ArgumentRefKindsOpt, isExtensionBlockMethod, deconstructMethod, argumentCount: n);
11489var argsToParams = AdjustArgsToParamsOptIfNeeded(invocation.ArgsToParamsOpt, isExtensionBlockMethod);
11500var parameters = deconstructMethod.Parameters;
11550private void VisitTupleDeconstructionArguments(ArrayBuilder<DeconstructionVariable> variables, ImmutableArray<(BoundValuePlaceholder? placeholder, BoundExpression? conversion)> deconstructConversionInfo, BoundExpression right, TypeWithState? rightResultOpt)
11553var rightParts = GetDeconstructionRightParts(right, rightResultOpt);
11657var arguments = tuple.Arguments;
11683private ImmutableArray<BoundExpression> GetDeconstructionRightParts(BoundExpression expr, TypeWithState? rightResultOpt)
11712var fields = tupleType.TupleElements;
11751ImmutableArray<VisitResult> results = reinferenceResult.Results;
11944ImmutableArray<VisitResult> results = reinferenceResult.Results;
12151ImmutableArray<ParameterSymbol> parameters,
12152ImmutableArray<BoundExpression> arguments,
12153ImmutableArray<RefKind> refKindsOpt,
12154ImmutableArray<int> argsToParamsOpt,
13053var parameters = logicalOperator.Parameters;
13706VisitArguments(node, receiverType: null, node.ConstructorArguments, ImmutableArray<RefKind>.Empty, node.Constructor, argsToParamsOpt: node.ConstructorArgumentsToParamsOpt, defaultArguments: node.ConstructorDefaultArguments,
FlowAnalysis\NullableWalker.SnapshotManager.cs (5)
23private readonly ImmutableArray<SharedWalkerState> _walkerSharedStates;
29private readonly ImmutableArray<(int position, Snapshot snapshot)> _incrementalSnapshots;
35private SnapshotManager(ImmutableArray<SharedWalkerState> walkerSharedStates, ImmutableArray<(int position, Snapshot snapshot)> incrementalSnapshots, ImmutableDictionary<(BoundNode?, Symbol), Symbol> updatedSymbolsMap)
175var snapshotsArray = EnumerableExtensions.SelectAsArray<KeyValuePair<int, Snapshot>, (int, Snapshot)>(_incrementalSnapshots, (kvp) => (kvp.Key, kvp.Value));
Generated\BoundNodes.xml.Generated.cs (531)
278protected BoundEqualsValue(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
289public ImmutableArray<LocalSymbol> Locals { get; }
295public BoundFieldEqualsValue(SyntaxNode syntax, FieldSymbol field, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
311public BoundFieldEqualsValue Update(FieldSymbol field, ImmutableArray<LocalSymbol> locals, BoundExpression value)
325public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
341public BoundPropertyEqualsValue Update(PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value)
355public BoundParameterEqualsValue(SyntaxNode syntax, ParameterSymbol parameter, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
371public BoundParameterEqualsValue Update(ParameterSymbol parameter, ImmutableArray<LocalSymbol> locals, BoundExpression value)
986public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol? type, bool hasErrors = false)
1003public ImmutableArray<Symbol?> Symbols { get; }
1004public ImmutableArray<BoundExpression> ChildBoundNodes { get; }
1009public BoundBadExpression Update(LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol? type)
1023public BoundBadStatement(SyntaxNode syntax, ImmutableArray<BoundNode> childBoundNodes, bool hasErrors = false)
1032public ImmutableArray<BoundNode> ChildBoundNodes { get; }
1037public BoundBadStatement Update(ImmutableArray<BoundNode> childBoundNodes)
1079public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, TypeSymbol type, bool hasErrors = false)
1093public ImmutableArray<BoundExpression> BoundDimensionsOpt { get; }
1100public BoundTypeExpression Update(AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, TypeSymbol type)
1204public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1227public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; }
1232public BoundUnaryOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
1246public BoundIncrementOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1275public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; }
1280public BoundIncrementOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
1467public BoundFunctionPointerInvocation(SyntaxNode syntax, BoundExpression invokedExpression, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
1483public ImmutableArray<BoundExpression> Arguments { get; }
1484public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
1490public BoundFunctionPointerInvocation Update(BoundExpression invokedExpression, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, LookupResultKind resultKind, TypeSymbol type)
1758public BoundUserDefinedConditionalLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, BoundValuePlaceholder? trueFalseOperandPlaceholder, BoundExpression? trueFalseOperandConversion, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1792public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; }
1797public BoundUserDefinedConditionalLogicalOperator Update(BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, BoundValuePlaceholder? trueFalseOperandPlaceholder, BoundExpression? trueFalseOperandConversion, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type)
1811public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1839public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; }
1844public BoundCompoundAssignmentOperator Update(BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
2082public BoundArrayAccess(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> indices, TypeSymbol type, bool hasErrors = false)
2096public ImmutableArray<BoundExpression> Indices { get; }
2101public BoundArrayAccess Update(BoundExpression expression, ImmutableArray<BoundExpression> indices, TypeSymbol type)
2304public BoundBlockInstrumentation(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundStatement? prologue, BoundStatement? epilogue, bool hasErrors = false)
2315public ImmutableArray<LocalSymbol> Locals { get; }
2322public BoundBlockInstrumentation Update(ImmutableArray<LocalSymbol> locals, BoundStatement? prologue, BoundStatement? epilogue)
3114public BoundArgListOperator(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, TypeSymbol? type, bool hasErrors = false)
3125public ImmutableArray<BoundExpression> Arguments { get; }
3126public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
3131public BoundArgListOperator Update(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, TypeSymbol? type)
3355public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3369public ImmutableArray<LocalSymbol> Locals { get; }
3370public ImmutableArray<MethodSymbol> LocalFunctions { get; }
3377public BoundBlock Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements)
3391public BoundScope(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3401public ImmutableArray<LocalSymbol> Locals { get; }
3406public BoundScope Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements)
3420public BoundStateMachineScope(SyntaxNode syntax, ImmutableArray<StateMachineFieldSymbol> fields, BoundStatement statement, bool hasErrors = false)
3431public ImmutableArray<StateMachineFieldSymbol> Fields { get; }
3437public BoundStateMachineScope Update(ImmutableArray<StateMachineFieldSymbol> fields, BoundStatement statement)
3451public BoundLocalDeclaration(SyntaxNode syntax, LocalSymbol localSymbol, BoundTypeExpression? declaredTypeOpt, BoundExpression? initializerOpt, ImmutableArray<BoundExpression> argumentsOpt, bool inferredType, bool hasErrors = false)
3467public ImmutableArray<BoundExpression> ArgumentsOpt { get; }
3473public BoundLocalDeclaration Update(LocalSymbol localSymbol, BoundTypeExpression? declaredTypeOpt, BoundExpression? initializerOpt, ImmutableArray<BoundExpression> argumentsOpt, bool inferredType)
3487protected BoundMultipleLocalDeclarationsBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3496public ImmutableArray<BoundLocalDeclaration> LocalDeclarations { get; }
3501public BoundMultipleLocalDeclarations(SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3513public BoundMultipleLocalDeclarations Update(ImmutableArray<BoundLocalDeclaration> localDeclarations)
3527public BoundUsingLocalDeclarations(SyntaxNode syntax, MethodArgumentInfo? patternDisposeInfoOpt, BoundAwaitableInfo? awaitOpt, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3543public BoundUsingLocalDeclarations Update(MethodArgumentInfo? patternDisposeInfoOpt, BoundAwaitableInfo? awaitOpt, ImmutableArray<BoundLocalDeclaration> localDeclarations)
3811public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<MethodSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, LabelSymbol breakLabel, bool hasErrors = false)
3832public ImmutableArray<LocalSymbol> InnerLocals { get; }
3833public ImmutableArray<MethodSymbol> InnerLocalFunctions { get; }
3834public ImmutableArray<BoundSwitchSection> SwitchSections { get; }
3842public BoundSwitchStatement Update(BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<MethodSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, LabelSymbol breakLabel)
3856public BoundSwitchDispatch(SyntaxNode syntax, BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt, bool hasErrors = false)
3871public ImmutableArray<(ConstantValue value, LabelSymbol label)> Cases { get; }
3878public BoundSwitchDispatch Update(BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt)
3953protected BoundConditionalLoopStatement(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
3968public ImmutableArray<LocalSymbol> Locals { get; }
3975public BoundDoStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
3991public BoundDoStatement Update(ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel)
4005public BoundWhileStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
4021public BoundWhileStatement Update(ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel)
4035public BoundForStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> outerLocals, BoundStatement? initializer, ImmutableArray<LocalSymbol> innerLocals, BoundExpression? condition, BoundStatement? increment, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
4053public ImmutableArray<LocalSymbol> OuterLocals { get; }
4055public ImmutableArray<LocalSymbol> InnerLocals { get; }
4063public BoundForStatement Update(ImmutableArray<LocalSymbol> outerLocals, BoundStatement? initializer, ImmutableArray<LocalSymbol> innerLocals, BoundExpression? condition, BoundStatement? increment, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel)
4077public BoundForEachStatement(SyntaxNode syntax, ForEachEnumeratorInfo? enumeratorInfoOpt, BoundValuePlaceholder? elementPlaceholder, BoundExpression? elementConversion, BoundTypeExpression iterationVariableType, ImmutableArray<LocalSymbol> iterationVariables, BoundExpression? iterationErrorExpressionOpt, BoundExpression expression, BoundForEachDeconstructStep? deconstructionOpt, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
4103public ImmutableArray<LocalSymbol> IterationVariables { get; }
4112public BoundForEachStatement Update(ForEachEnumeratorInfo? enumeratorInfoOpt, BoundValuePlaceholder? elementPlaceholder, BoundExpression? elementConversion, BoundTypeExpression iterationVariableType, ImmutableArray<LocalSymbol> iterationVariables, BoundExpression? iterationErrorExpressionOpt, BoundExpression expression, BoundForEachDeconstructStep? deconstructionOpt, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel)
4157public BoundUsingStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations? declarationsOpt, BoundExpression? expressionOpt, BoundStatement body, BoundAwaitableInfo? awaitOpt, MethodArgumentInfo? patternDisposeInfoOpt, bool hasErrors = false)
4172public ImmutableArray<LocalSymbol> Locals { get; }
4182public BoundUsingStatement Update(ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations? declarationsOpt, BoundExpression? expressionOpt, BoundStatement body, BoundAwaitableInfo? awaitOpt, MethodArgumentInfo? patternDisposeInfoOpt)
4196public BoundFixedStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations declarations, BoundStatement body, bool hasErrors = false)
4209public ImmutableArray<LocalSymbol> Locals { get; }
4216public BoundFixedStatement Update(ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations declarations, BoundStatement body)
4261public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler, bool hasErrors = false)
4276public ImmutableArray<BoundCatchBlock> CatchBlocks { get; }
4284public BoundTryStatement Update(BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler)
4298public BoundCatchBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll, bool hasErrors = false)
4314public ImmutableArray<LocalSymbol> Locals { get; }
4325public BoundCatchBlock Update(ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll)
4848protected BoundStatementList(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4857public BoundStatementList(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4866public ImmutableArray<BoundStatement> Statements { get; }
4871public BoundStatementList Update(ImmutableArray<BoundStatement> statements)
4918protected BoundSwitchExpression(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4934public ImmutableArray<BoundSwitchExpressionArm> SwitchArms { get; }
4942public BoundSwitchExpressionArm(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundPattern pattern, bool hasUnionMatching, BoundExpression? whenClause, BoundExpression value, LabelSymbol label, bool hasErrors = false)
4959public ImmutableArray<LocalSymbol> Locals { get; }
4969public BoundSwitchExpressionArm Update(ImmutableArray<LocalSymbol> locals, BoundPattern pattern, bool hasUnionMatching, BoundExpression? whenClause, BoundExpression value, LabelSymbol label)
4983public BoundUnconvertedSwitchExpression(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4997public BoundUnconvertedSwitchExpression Update(BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type)
5011public BoundConvertedSwitchExpression(SyntaxNode syntax, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol type, bool hasErrors = false)
5031public BoundConvertedSwitchExpression Update(TypeSymbol? naturalTypeOpt, bool wasTargetTyped, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol type)
5154public BoundWhenDecisionDagNode(SyntaxNode syntax, ImmutableArray<BoundPatternBinding> bindings, BoundExpression? whenExpression, BoundDecisionDagNode whenTrue, BoundDecisionDagNode? whenFalse, bool hasErrors = false)
5167public ImmutableArray<BoundPatternBinding> Bindings { get; }
5175public BoundWhenDecisionDagNode Update(ImmutableArray<BoundPatternBinding> bindings, BoundExpression? whenExpression, BoundDecisionDagNode whenTrue, BoundDecisionDagNode? whenFalse)
5727public BoundSwitchSection(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundSwitchLabel> switchLabels, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
5739public ImmutableArray<LocalSymbol> Locals { get; }
5740public ImmutableArray<BoundSwitchLabel> SwitchLabels { get; }
5745public BoundSwitchSection Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundSwitchLabel> switchLabels, ImmutableArray<BoundStatement> statements)
5836public BoundSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundExpression> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5851public ImmutableArray<LocalSymbol> Locals { get; }
5852public ImmutableArray<BoundExpression> SideEffects { get; }
5858public BoundSequence Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundExpression> sideEffects, BoundExpression value, TypeSymbol type)
5872public BoundSpillSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5887public ImmutableArray<LocalSymbol> Locals { get; }
5888public ImmutableArray<BoundStatement> SideEffects { get; }
5894public BoundSpillSequence Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> sideEffects, BoundExpression value, TypeSymbol type)
5908public BoundDynamicMemberAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, bool invoked, bool indexed, TypeSymbol type, bool hasErrors = false)
5925public ImmutableArray<TypeWithAnnotations> TypeArgumentsOpt { get; }
5933public BoundDynamicMemberAccess Update(BoundExpression receiver, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, bool invoked, bool indexed, TypeSymbol type)
5947protected BoundDynamicInvocableBase(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol? type, bool hasErrors = false)
5959public ImmutableArray<BoundExpression> Arguments { get; }
5964public BoundDynamicInvocation(SyntaxNode syntax, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
5979public ImmutableArray<string?> ArgumentNamesOpt { get; }
5980public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
5981public ImmutableArray<MethodSymbol> ApplicableMethods { get; }
5986public BoundDynamicInvocation Update(ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type)
6145public BoundMethodGroup(SyntaxNode syntax, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6161public ImmutableArray<TypeWithAnnotations> TypeArgumentsOpt { get; }
6163public ImmutableArray<MethodSymbol> Methods { get; }
6172public BoundMethodGroup Update(ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind)
6186public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6195public ImmutableArray<PropertySymbol> Properties { get; }
6200public BoundPropertyGroup Update(ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind)
6214public BoundCall(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type, bool hasErrors = false)
6245public ImmutableArray<BoundExpression> Arguments { get; }
6246public ImmutableArray<string?> ArgumentNamesOpt { get; }
6247public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6251public ImmutableArray<int> ArgsToParamsOpt { get; }
6254public ImmutableArray<MethodSymbol> OriginalMethodsOpt { get; }
6259public BoundCall Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type)
6312public BoundAttribute(SyntaxNode syntax, MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
6332public ImmutableArray<BoundExpression> ConstructorArguments { get; }
6333public ImmutableArray<string?> ConstructorArgumentNamesOpt { get; }
6334public ImmutableArray<int> ConstructorArgumentsToParamsOpt { get; }
6337public ImmutableArray<BoundAssignmentOperator> NamedArguments { get; }
6343public BoundAttribute Update(MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type)
6357public BoundUnconvertedObjectCreationExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, InitializerExpressionSyntax? initializerOpt, Binder binder, bool hasErrors = false)
6372public ImmutableArray<BoundExpression> Arguments { get; }
6373public ImmutableArray<(string Name, Location Location)?> ArgumentNamesOpt { get; }
6374public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6381public BoundUnconvertedObjectCreationExpression Update(ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, InitializerExpressionSyntax? initializerOpt, Binder binder)
6416public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6439public ImmutableArray<MethodSymbol> ConstructorsGroup { get; }
6440public override ImmutableArray<BoundExpression> Arguments { get; }
6441public override ImmutableArray<string?> ArgumentNamesOpt { get; }
6442public override ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6444public override ImmutableArray<int> ArgsToParamsOpt { get; }
6453public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type)
6467protected BoundCollectionExpressionBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundNode> elements, TypeSymbol? type, bool hasErrors = false)
6480public ImmutableArray<BoundNode> Elements { get; }
6485public BoundUnconvertedCollectionExpression(SyntaxNode syntax, BoundUnconvertedWithElement? withElement, ImmutableArray<BoundNode> elements, bool hasErrors = false)
6500public BoundUnconvertedCollectionExpression Update(BoundUnconvertedWithElement? withElement, ImmutableArray<BoundNode> elements)
6514public BoundUnconvertedWithElement(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool hasErrors = false)
6525public ImmutableArray<BoundExpression> Arguments { get; }
6526public ImmutableArray<(string Name, Location Location)?> ArgumentNamesOpt { get; }
6527public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6532public BoundUnconvertedWithElement Update(ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt)
6546public BoundCollectionExpression(SyntaxNode syntax, CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type, bool hasErrors = false)
6581public BoundCollectionExpression Update(CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type)
6663protected BoundTupleExpression(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6674public ImmutableArray<BoundExpression> Arguments { get; }
6675public ImmutableArray<string?> ArgumentNamesOpt { get; }
6676public ImmutableArray<bool> InferredNamesOpt { get; }
6681public BoundTupleLiteral(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6694public BoundTupleLiteral Update(ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type)
6708public BoundConvertedTupleLiteral(SyntaxNode syntax, BoundTupleLiteral? sourceTuple, bool wasTargetTyped, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6724public BoundConvertedTupleLiteral Update(BoundTupleLiteral? sourceTuple, bool wasTargetTyped, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type)
6738public BoundDynamicObjectCreationExpression(SyntaxNode syntax, string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6757public override ImmutableArray<BoundExpression> Arguments { get; }
6758public override ImmutableArray<string?> ArgumentNamesOpt { get; }
6759public override ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6761public ImmutableArray<MethodSymbol> ApplicableMethods { get; }
6767public BoundDynamicObjectCreationExpression Update(string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type)
6813protected BoundObjectInitializerExpressionBase(BoundKind kind, SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6827public ImmutableArray<BoundExpression> Initializers { get; }
6832public BoundObjectInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6846public BoundObjectInitializerExpression Update(BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type)
6860public BoundObjectInitializerMember(SyntaxNode syntax, Symbol? memberSymbol, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, AccessorKind accessorKind, TypeSymbol receiverType, TypeSymbol type, bool hasErrors = false)
6882public ImmutableArray<BoundExpression> Arguments { get; }
6883public ImmutableArray<string?> ArgumentNamesOpt { get; }
6884public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
6886public ImmutableArray<int> ArgsToParamsOpt { get; }
6895public BoundObjectInitializerMember Update(Symbol? memberSymbol, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, AccessorKind accessorKind, TypeSymbol receiverType, TypeSymbol type)
6954public BoundCollectionInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6968public BoundCollectionInitializerExpression Update(BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type)
6982public BoundCollectionElementInitializer(SyntaxNode syntax, MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7002public ImmutableArray<BoundExpression> Arguments { get; }
7005public ImmutableArray<int> ArgsToParamsOpt { get; }
7013public BoundCollectionElementInitializer Update(MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type)
7027public BoundDynamicCollectionElementInitializer(SyntaxNode syntax, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
7040public ImmutableArray<MethodSymbol> ApplicableMethods { get; }
7045public BoundDynamicCollectionElementInitializer Update(ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type)
7094public BoundAnonymousObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type, bool hasErrors = false)
7110public ImmutableArray<BoundExpression> Arguments { get; }
7111public ImmutableArray<BoundAnonymousPropertyDeclaration> Declarations { get; }
7116public BoundAnonymousObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type)
7236public BoundArrayCreation(SyntaxNode syntax, ImmutableArray<BoundExpression> bounds, BoundArrayInitialization? initializerOpt, TypeSymbol type, bool hasErrors = false)
7248public ImmutableArray<BoundExpression> Bounds { get; }
7254public BoundArrayCreation Update(ImmutableArray<BoundExpression> bounds, BoundArrayInitialization? initializerOpt, TypeSymbol type)
7268public BoundArrayInitialization(SyntaxNode syntax, bool isInferred, ImmutableArray<BoundExpression> initializers, bool hasErrors = false)
7280public ImmutableArray<BoundExpression> Initializers { get; }
7285public BoundArrayInitialization Update(bool isInferred, ImmutableArray<BoundExpression> initializers)
7528public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, AccessorKind accessorKind, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type, bool hasErrors = false)
7553public ImmutableArray<BoundExpression> Arguments { get; }
7554public ImmutableArray<string?> ArgumentNamesOpt { get; }
7555public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
7558public ImmutableArray<int> ArgsToParamsOpt { get; }
7560public ImmutableArray<PropertySymbol> OriginalIndexersOpt { get; }
7565public BoundIndexerAccess Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, AccessorKind accessorKind, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type)
7579public BoundImplicitIndexerAccess(SyntaxNode syntax, BoundExpression receiver, BoundExpression argument, BoundExpression lengthOrCountAccess, BoundImplicitIndexerReceiverPlaceholder receiverPlaceholder, BoundExpression indexerOrSliceAccess, ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders, TypeSymbol type, bool hasErrors = false)
7609public ImmutableArray<BoundImplicitIndexerValuePlaceholder> ArgumentPlaceholders { get; }
7614public BoundImplicitIndexerAccess Update(BoundExpression receiver, BoundExpression argument, BoundExpression lengthOrCountAccess, BoundImplicitIndexerReceiverPlaceholder receiverPlaceholder, BoundExpression indexerOrSliceAccess, ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders, TypeSymbol type)
7669public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7687public ImmutableArray<BoundExpression> Arguments { get; }
7688public ImmutableArray<string?> ArgumentNamesOpt { get; }
7689public ImmutableArray<RefKind> ArgumentRefKindsOpt { get; }
7690public ImmutableArray<PropertySymbol> ApplicableIndexers { get; }
7695public BoundDynamicIndexerAccess Update(BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type)
7834public BoundTypeOrInstanceInitializers(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
7846public new BoundTypeOrInstanceInitializers Update(ImmutableArray<BoundStatement> statements)
7897protected BoundInterpolatedStringBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7907public ImmutableArray<BoundExpression> Parts { get; }
7913public BoundUnconvertedInterpolatedString(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7925public BoundUnconvertedInterpolatedString Update(ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type)
7939public BoundInterpolatedString(SyntaxNode syntax, InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7953public BoundInterpolatedString Update(InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type)
8324public BoundRecursivePattern(SyntaxNode syntax, BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, UnionMatchingMode unionMatchingMode, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8345public ImmutableArray<BoundPositionalSubpattern> Deconstruction { get; }
8346public ImmutableArray<BoundPropertySubpattern> Properties { get; }
8353public BoundRecursivePattern Update(BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, UnionMatchingMode unionMatchingMode, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType)
8367public BoundListPattern(SyntaxNode syntax, ImmutableArray<BoundPattern> subpatterns, bool hasSlice, BoundExpression? lengthAccess, BoundExpression? indexerAccess, BoundListPatternReceiverPlaceholder? receiverPlaceholder, BoundListPatternIndexPlaceholder? argumentPlaceholder, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8387public ImmutableArray<BoundPattern> Subpatterns { get; }
8397public BoundListPattern Update(ImmutableArray<BoundPattern> subpatterns, bool hasSlice, BoundExpression? lengthAccess, BoundExpression? indexerAccess, BoundListPatternReceiverPlaceholder? receiverPlaceholder, BoundListPatternIndexPlaceholder? argumentPlaceholder, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType)
8450public BoundITuplePattern(SyntaxNode syntax, MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8471public ImmutableArray<BoundPositionalSubpattern> Subpatterns { get; }
8476public BoundITuplePattern Update(MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, TypeSymbol inputType, TypeSymbol narrowedType)
8953public BoundConstructorMethodBody(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8963public ImmutableArray<LocalSymbol> Locals { get; }
8969public BoundConstructorMethodBody Update(ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody)
11110ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11117ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11124ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11219ImmutableArray<Symbol?> symbols = this.VisitSymbols<Symbol?>(node.Symbols);
11220ImmutableArray<BoundExpression> childBoundNodes = this.VisitList(node.ChildBoundNodes);
11226ImmutableArray<BoundNode> childBoundNodes = this.VisitList(node.ChildBoundNodes);
11238ImmutableArray<BoundExpression> boundDimensionsOpt = this.VisitList(node.BoundDimensionsOpt);
11258ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt);
11267ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt);
11312ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
11369ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt);
11380ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt);
11440ImmutableArray<BoundExpression> indices = this.VisitList(node.Indices);
11482ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11614ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
11643ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11644ImmutableArray<MethodSymbol> localFunctions = this.VisitDeclaredLocalFunctions(node.LocalFunctions);
11646ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
11651ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11652ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
11657ImmutableArray<StateMachineFieldSymbol> fields = this.VisitSymbols<StateMachineFieldSymbol>(node.Fields);
11666ImmutableArray<BoundExpression> argumentsOpt = this.VisitList(node.ArgumentsOpt);
11671ImmutableArray<BoundLocalDeclaration> localDeclarations = this.VisitList(node.LocalDeclarations);
11677ImmutableArray<BoundLocalDeclaration> localDeclarations = this.VisitList(node.LocalDeclarations);
11723ImmutableArray<LocalSymbol> innerLocals = this.VisitLocals(node.InnerLocals);
11724ImmutableArray<MethodSymbol> innerLocalFunctions = this.VisitDeclaredLocalFunctions(node.InnerLocalFunctions);
11727ImmutableArray<BoundSwitchSection> switchSections = this.VisitList(node.SwitchSections);
11747ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11756ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11765ImmutableArray<LocalSymbol> outerLocals = this.VisitLocals(node.OuterLocals);
11766ImmutableArray<LocalSymbol> innerLocals = this.VisitLocals(node.InnerLocals);
11777ImmutableArray<LocalSymbol> iterationVariables = this.VisitLocals(node.IterationVariables);
11797ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11806ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11821ImmutableArray<BoundCatchBlock> catchBlocks = this.VisitList(node.CatchBlocks);
11827ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11916ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
11927ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
11938ImmutableArray<BoundSwitchExpressionArm> switchArms = this.VisitList(node.SwitchArms);
11947ImmutableArray<BoundSwitchExpressionArm> switchArms = this.VisitList(node.SwitchArms);
12078ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
12079ImmutableArray<BoundSwitchLabel> switchLabels = this.VisitList(node.SwitchLabels);
12080ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
12098ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
12099ImmutableArray<BoundExpression> sideEffects = this.VisitList(node.SideEffects);
12106ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
12107ImmutableArray<BoundStatement> sideEffects = this.VisitList(node.SideEffects);
12120ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods);
12122ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12156ImmutableArray<MethodSymbol> methods = this.VisitSymbols<MethodSymbol>(node.Methods);
12165ImmutableArray<PropertySymbol> properties = this.VisitSymbols<PropertySymbol>(node.Properties);
12173ImmutableArray<MethodSymbol> originalMethodsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalMethodsOpt);
12175ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12190ImmutableArray<BoundExpression> constructorArguments = this.VisitList(node.ConstructorArguments);
12191ImmutableArray<BoundAssignmentOperator> namedArguments = this.VisitList(node.NamedArguments);
12197ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12204ImmutableArray<MethodSymbol> constructorsGroup = this.VisitSymbols<MethodSymbol>(node.ConstructorsGroup);
12205ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12213ImmutableArray<BoundNode> elements = this.VisitList(node.Elements);
12219ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12229ImmutableArray<BoundNode> elements = this.VisitList(node.Elements);
12250ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12257ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12263ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods);
12264ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12278ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
12285ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12299ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
12306ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12313ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods);
12315ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12327ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12328ImmutableArray<BoundAnonymousPropertyDeclaration> declarations = this.VisitList(node.Declarations);
12353ImmutableArray<BoundExpression> bounds = this.VisitList(node.Bounds);
12360ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
12410ImmutableArray<PropertySymbol> originalIndexersOpt = this.VisitSymbols<PropertySymbol>(node.OriginalIndexersOpt);
12412ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12423ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders = node.ArgumentPlaceholders;
12436ImmutableArray<PropertySymbol> applicableIndexers = this.VisitSymbols<PropertySymbol>(node.ApplicableIndexers);
12438ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
12468ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
12479ImmutableArray<BoundExpression> parts = this.VisitList(node.Parts);
12485ImmutableArray<BoundExpression> parts = this.VisitList(node.Parts);
12556ImmutableArray<BoundPositionalSubpattern> deconstruction = this.VisitList(node.Deconstruction);
12557ImmutableArray<BoundPropertySubpattern> properties = this.VisitList(node.Properties);
12566ImmutableArray<BoundPattern> subpatterns = this.VisitList(node.Subpatterns);
12590ImmutableArray<BoundPositionalSubpattern> subpatterns = this.VisitList(node.Subpatterns);
12682ImmutableArray<LocalSymbol> locals = this.VisitLocals(node.Locals);
12726ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
12734ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
12742ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
12961ImmutableArray<Symbol?> symbols = GetUpdatedArray(node, node.Symbols);
12962ImmutableArray<BoundExpression> childBoundNodes = this.VisitList(node.ChildBoundNodes);
12980ImmutableArray<BoundExpression> boundDimensionsOpt = this.VisitList(node.BoundDimensionsOpt);
13028ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = GetUpdatedArray(node, node.OriginalUserDefinedOperatorsOpt);
13048ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = GetUpdatedArray(node, node.OriginalUserDefinedOperatorsOpt);
13158ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
13396ImmutableArray<BoundExpression> indices = this.VisitList(node.Indices);
13494ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13818ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
13856ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13857ImmutableArray<MethodSymbol> localFunctions = GetUpdatedArray(node, node.LocalFunctions);
13859ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
13865ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13866ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
13872ImmutableArray<StateMachineFieldSymbol> fields = GetUpdatedArray(node, node.Fields);
13882ImmutableArray<BoundExpression> argumentsOpt = this.VisitList(node.ArgumentsOpt);
13896ImmutableArray<LocalSymbol> innerLocals = GetUpdatedArray(node, node.InnerLocals);
13897ImmutableArray<MethodSymbol> innerLocalFunctions = GetUpdatedArray(node, node.InnerLocalFunctions);
13899ImmutableArray<BoundSwitchSection> switchSections = this.VisitList(node.SwitchSections);
13907ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13915ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13923ImmutableArray<LocalSymbol> outerLocals = GetUpdatedArray(node, node.OuterLocals);
13924ImmutableArray<LocalSymbol> innerLocals = GetUpdatedArray(node, node.InnerLocals);
13934ImmutableArray<LocalSymbol> iterationVariables = GetUpdatedArray(node, node.IterationVariables);
13947ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13957ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
13965ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
14129ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
14139ImmutableArray<BoundSwitchExpressionArm> switchArms = this.VisitList(node.SwitchArms);
14159ImmutableArray<BoundSwitchExpressionArm> switchArms = this.VisitList(node.SwitchArms);
14227ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
14228ImmutableArray<BoundSwitchLabel> switchLabels = this.VisitList(node.SwitchLabels);
14229ImmutableArray<BoundStatement> statements = this.VisitList(node.Statements);
14252ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
14253ImmutableArray<BoundExpression> sideEffects = this.VisitList(node.SideEffects);
14271ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
14272ImmutableArray<BoundStatement> sideEffects = this.VisitList(node.SideEffects);
14307ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods);
14309ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14394ImmutableArray<MethodSymbol> methods = GetUpdatedArray(node, node.Methods);
14414ImmutableArray<PropertySymbol> properties = GetUpdatedArray(node, node.Properties);
14433ImmutableArray<MethodSymbol> originalMethodsOpt = GetUpdatedArray(node, node.OriginalMethodsOpt);
14435ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14472ImmutableArray<BoundExpression> constructorArguments = this.VisitList(node.ConstructorArguments);
14473ImmutableArray<BoundAssignmentOperator> namedArguments = this.VisitList(node.NamedArguments);
14490ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14508ImmutableArray<MethodSymbol> constructorsGroup = GetUpdatedArray(node, node.ConstructorsGroup);
14509ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14528ImmutableArray<BoundNode> elements = this.VisitList(node.Elements);
14550ImmutableArray<BoundNode> elements = this.VisitList(node.Elements);
14579ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14597ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14614ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods);
14615ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14651ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
14670ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14705ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
14723ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14741ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods);
14743ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14773ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
14774ImmutableArray<BoundAnonymousPropertyDeclaration> declarations = this.VisitList(node.Declarations);
14843ImmutableArray<BoundExpression> bounds = this.VisitList(node.Bounds);
14861ImmutableArray<BoundExpression> initializers = this.VisitList(node.Initializers);
14988ImmutableArray<PropertySymbol> originalIndexersOpt = GetUpdatedArray(node, node.OriginalIndexersOpt);
14990ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
15025ImmutableArray<PropertySymbol> applicableIndexers = GetUpdatedArray(node, node.ApplicableIndexers);
15027ImmutableArray<BoundExpression> arguments = this.VisitList(node.Arguments);
15118ImmutableArray<BoundExpression> parts = this.VisitList(node.Parts);
15135ImmutableArray<BoundExpression> parts = this.VisitList(node.Parts);
15257ImmutableArray<BoundPositionalSubpattern> deconstruction = this.VisitList(node.Deconstruction);
15258ImmutableArray<BoundPropertySubpattern> properties = this.VisitList(node.Properties);
15268ImmutableArray<BoundPattern> subpatterns = this.VisitList(node.Subpatterns);
15294ImmutableArray<BoundPositionalSubpattern> subpatterns = this.VisitList(node.Subpatterns);
15420ImmutableArray<LocalSymbol> locals = GetUpdatedArray(node, node.Locals);
Lowering\ClosureConversion\ClosureConversion.cs (29)
118private ImmutableArray<TypeParameterSymbol> _currentTypeParameters;
475var structEnvironments = getStructEnvironments(nestedFunction);
494static ImmutableArray<SynthesizedClosureEnvironment> getStructEnvironments(Analysis.NestedFunction function)
677var frameTypeParameters = ImmutableArray.Create(_currentTypeParameters.SelectAsArray(t => TypeWithAnnotations.Create(t)), 0, frame.Arity);
888ref ImmutableArray<BoundExpression> arguments,
889ref ImmutableArray<RefKind> argRefKinds)
918var typeParameters = ((SynthesizedClosureEnvironment)frameType).ConstructedFromTypeParameters;
920var subst = this.TypeMap.SubstituteTypeParameters(typeParameters);
975private ImmutableArray<TypeWithAnnotations> SubstituteTypeArguments(ImmutableArray<TypeWithAnnotations> typeArguments)
1028ImmutableArray<TypeWithAnnotations> typeArgumentsOpt,
1040var realTypeArguments = ImmutableArray.Create(_currentTypeParameters.SelectAsArray(t => TypeWithAnnotations.Create(t)), 0, totalTypeArgumentCount - originalMethod.Arity);
1048var containerTypeArguments = ImmutableArray.Create(realTypeArguments, 0, containerAsFrame.Arity);
1088var args = VisitList(node.Arguments);
1089var argRefKinds = node.ArgumentRefKindsOpt;
1138locals: ImmutableArray<LocalSymbol>.Empty,
1216var newLocals = VisitLocals(node.Locals);
1218var statements = VisitList(node.Statements);
1246var rewrittenCatchLocals = newLocals.ToImmutableAndFree();
1353var arguments = default(ImmutableArray<BoundExpression>);
1354var argRefKinds = default(ImmutableArray<RefKind>);
1380ImmutableArray<BoundExpression> arguments = default;
1381ImmutableArray<RefKind> argRefKinds = default;
1453private DebugId GetLambdaId(SyntaxNode syntax, ClosureKind closureKind, int closureOrdinal, ImmutableArray<DebugId> structClosureIds, RuntimeRudeEdit? closureRudeEdit)
1573var oldTypeParameters = _currentTypeParameters;
1665RemapLambdaOrLocalFunction(node.Syntax, node.Symbol, default(ImmutableArray<TypeWithAnnotations>), closureKind, ref referencedMethod, out receiver, out constructedFrame);
1745return new BoundBadExpression(F.Syntax, LookupResultKind.Empty, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), node.Type);
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (7)
317private BoundExpression Indices(ImmutableArray<BoundExpression> expressions)
333private BoundExpression Expressions(ImmutableArray<BoundExpression> expressions)
358return new BoundBadExpression(node.Syntax, default(LookupResultKind), ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), ExpressionType);
389return new BoundBadExpression(node.Syntax, 0, ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), ExpressionType);
1143return new BoundBadExpression(node.Syntax, default(LookupResultKind), ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), node.Type);
1150return new BoundBadExpression(node.Syntax, default(LookupResultKind), ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), node.Type);
1182return new BoundBadExpression(node.Syntax, default(LookupResultKind), ImmutableArray<Symbol>.Empty, ImmutableArray.Create<BoundExpression>(node), node.Type);
Lowering\DiagnosticsPass_ExpressionTrees.cs (9)
309ImmutableArray<BoundExpression> arguments,
310ImmutableArray<RefKind> argumentRefKindsOpt,
311ImmutableArray<string> argumentNamesOpt,
312ImmutableArray<int> argsToParamsOpt,
368static bool hasDefaultArgument(ImmutableArray<BoundExpression> arguments, BitVector defaultArguments)
381static bool hasNamedArgumentOutOfOrder(ImmutableArray<int> argsToParamsOpt)
555VisitCall(node.AddMethod, null, node.Arguments, default(ImmutableArray<RefKind>), default(ImmutableArray<string>), default(ImmutableArray<int>), node.DefaultArguments, node);
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (15)
71var loweredArguments = VisitList(indexerAccess.Arguments);
153ImmutableArray<BoundExpression> loweredArguments,
154ImmutableArray<string?> argumentNames,
155ImmutableArray<RefKind> refKinds,
203ImmutableArray<BoundExpression>.Empty,
204default(ImmutableArray<RefKind>),
206default(ImmutableArray<int>),
218ImmutableArray<BoundExpression> arguments = indexerAccess.Arguments;
301ImmutableArray<BoundExpression> arguments,
302ImmutableArray<RefKind> argumentRefKindsOpt,
304ImmutableArray<int> argsToParamsOpt,
395var sideEffects = storesOpt is null ? [] : storesOpt.ToImmutableAndFree();
396var argTemps = argTempsBuilder.ToImmutableAndFree();
456private static ImmutableArray<T> AppendToPossibleNull<T>(ImmutableArray<T> possibleNull, T newElement)
Lowering\LocalRewriter\LocalRewriter_Call.cs (57)
27var loweredArguments = VisitList(node.Arguments);
31ImmutableArray<TypeWithAnnotations> typeArguments;
98private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<MethodSymbol> methods, SyntaxNode syntaxNode)
117private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<PropertySymbol> properties, SyntaxNode syntaxNode)
139ref ImmutableArray<BoundExpression> arguments,
140ref ImmutableArray<RefKind> argumentRefKindsOpt,
380ImmutableArray<int> argsToParamsOpt = node.ArgsToParamsOpt;
381ImmutableArray<RefKind> argRefKindsOpt = node.ArgumentRefKindsOpt;
382ImmutableArray<BoundExpression> arguments = node.Arguments;
395var rewrittenArguments = VisitArgumentsAndCaptureReceiverIfNeeded(
460ImmutableArray<BoundExpression> rewrittenArguments,
461ImmutableArray<RefKind> argumentRefKinds,
463ImmutableArray<LocalSymbol> temps)
497argumentNamesOpt: default(ImmutableArray<string?>),
502argsToParamsOpt: default(ImmutableArray<int>),
514argumentNamesOpt: default(ImmutableArray<string?>),
519argsToParamsOpt: default(ImmutableArray<int>),
532sideEffects: ImmutableArray<BoundExpression>.Empty,
540private BoundExpression MakeCall(SyntaxNode syntax, BoundExpression? rewrittenReceiver, MethodSymbol method, ImmutableArray<BoundExpression> rewrittenArguments)
548argumentRefKinds: default(ImmutableArray<RefKind>),
665private ImmutableArray<BoundExpression> VisitArgumentsAndCaptureReceiverIfNeeded(
668ImmutableArray<BoundExpression> arguments,
670ImmutableArray<int> argsToParamsOpt,
671ImmutableArray<RefKind> argumentRefKindsOpt,
741ImmutableArray<BoundExpression> rewrittenArguments;
751var parameters = methodOrIndexer.GetParameters();
768ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> argumentPlaceholders = addInterpolationPlaceholderReplacements(
827ImmutableArray<LocalSymbol>.Empty,
845ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> addInterpolationPlaceholderReplacements(
846ImmutableArray<ParameterSymbol> parameters,
905visitedArgumentsBuilder[argIndex] = _factory.Sequence(ImmutableArray<LocalSymbol>.Empty, ImmutableArray.Create<BoundExpression>(store), local);
924return ImmutableArray<BoundInterpolatedStringArgumentPlaceholder>.Empty;
1060private ImmutableArray<BoundExpression> MakeArguments(
1061ImmutableArray<BoundExpression> rewrittenArguments,
1064ImmutableArray<int> argsToParamsOpt,
1065ref ImmutableArray<RefKind> argumentRefKindsOpt,
1079ImmutableArray<ParameterSymbol> parameters = methodOrIndexer.GetParameters();
1218private static ImmutableArray<RefKind> GetEffectiveArgumentRefKinds(ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<ParameterSymbol> parameters)
1243static void fillRefKindsBuilder(ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<ParameterSymbol> parameters, [NotNull] ref ArrayBuilder<RefKind>? refKindsBuilder)
1295ImmutableArray<BoundExpression> rewrittenArguments,
1297ImmutableArray<int> argsToParamsOpt,
1342private static ImmutableArray<RefKind> GetRefKindsOrNull(ArrayBuilder<RefKind> refKinds)
1351return default(ImmutableArray<RefKind>);
1402ImmutableArray<int> argsToParamsOpt,
1403ImmutableArray<ParameterSymbol> parameters,
1404ImmutableArray<RefKind> argumentRefKinds,
1405ImmutableArray<BoundExpression> rewrittenArguments,
1526ImmutableArray<BoundExpression>.Empty,
1527default(ImmutableArray<string?>),
1528default(ImmutableArray<RefKind>),
1532argsToParamsOpt: default(ImmutableArray<int>),
1665ImmutableArray<LocalSymbol>.Empty,
1686ImmutableArray<ParameterSymbol> parameters,
1729locals: ImmutableArray<LocalSymbol>.Empty,
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (21)
110var elements = node.Elements;
325var elements = node.Elements;
339var rewrittenElements = elements.SelectAsArray(static (element, rewriter) => rewriter.VisitExpression((BoundExpression)element), this);
423var elements = node.Elements;
493var elements = node.Elements;
511var typeArgs = ImmutableArray.Create(elementType);
639ImmutableArray<BoundNode> elements,
712locals: ImmutableArray<LocalSymbol>.Empty,
828var elements = node.Elements;
961var locals = localsBuilder.SelectAsArray(l => l.LocalSymbol);
1158ImmutableArray<BoundNode> elements,
1163var typeArguments = ImmutableArray.Create(elementType);
1224rewrittenReceiver = _factory.New(constructor, ImmutableArray<BoundExpression>.Empty);
1360var locals = localsBuilder.SelectAsArray(l => l.LocalSymbol);
1380ImmutableArray<BoundNode> elements,
1396ImmutableArray<BoundNode> elements,
1424var statements = builder.SelectAsArray(expr => (BoundStatement)new BoundExpressionStatement(expr.Syntax, expr));
1429new BoundBlock(iteratorBody.Syntax, locals: ImmutableArray<LocalSymbol>.Empty, statements);
1441private BoundExpression GetKnownLengthExpression(ImmutableArray<BoundNode> elements, int numberIncludingLastSpread, ArrayBuilder<BoundLocal> rewrittenExpressions)
1515var iterationVariables = ImmutableArray.Create(iterationVariable);
1586ImmutableArray<LocalSymbol>.Empty,
Lowering\LocalRewriter\LocalRewriter_DeconstructionAssignmentOperator.cs (9)
220ImmutableArray<BoundExpression> rightParts = GetRightParts(right, conversion, temps, effects, ref inInit);
222ImmutableArray<(BoundValuePlaceholder?, BoundExpression?)> deconstructConversionInfo = conversion.DeconstructConversionInfo;
278private ImmutableArray<BoundExpression> GetRightParts(BoundExpression right, Conversion conversion,
335private ImmutableArray<BoundExpression> AccessTupleFields(BoundExpression expression, ArrayBuilder<LocalSymbol> temps,
341var tupleElementTypes = tupleType.TupleElementTypesWithAnnotations;
361var fields = tupleType.TupleElements;
382private ImmutableArray<BoundExpression> InvokeDeconstructMethod(DeconstructMethodInfo deconstruction, BoundExpression target,
387var outputPlaceholders = deconstruction.OutputPlaceholders;
516internal ImmutableArray<BoundExpression> ToImmutableAndFree()
Lowering\LocalRewriter\LocalRewriter_Event.cs (8)
54var rewrittenArguments = ImmutableArray.Create<BoundExpression>(rewrittenArgument);
128clearCall = new BoundBadExpression(syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create<BoundExpression>(removeDelegate), ErrorTypeSymbol.UnknownResultType);
132ImmutableArray<BoundExpression> marshalArguments;
170marshalCall = new BoundBadExpression(syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, marshalArguments, ErrorTypeSymbol.UnknownResultType);
179ImmutableArray<LocalSymbol> tempSymbols = boundTemp == null
180? ImmutableArray<LocalSymbol>.Empty
265getOrCreateCall = new BoundBadExpression(syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create<BoundExpression>(fieldAccess), ErrorTypeSymbol.UnknownResultType);
287return new BoundBadExpression(syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(getOrCreateCall), ErrorTypeSymbol.UnknownResultType);
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (6)
19ImmutableArray<BoundLocalDeclaration> localDecls = node.Declarations.LocalDeclarations;
67ImmutableArray<BoundCatchBlock>.Empty,
380locals: ImmutableArray<LocalSymbol>.Empty,
484helperCall = new BoundBadExpression(fixedInitializer.Syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, ErrorTypeSymbol.UnknownResultType);
545lengthCall = new BoundBadExpression(fixedInitializer.Syntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create<BoundExpression>(factory.Local(pinnedTemp)), ErrorTypeSymbol.UnknownResultType);
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (11)
146ImmutableArray<LocalSymbol> iterationVariables,
264tryBlock: new BoundBlock(forEachSyntax, locals: ImmutableArray<LocalSymbol>.Empty, statements: ImmutableArray.Create(whileLoop)),
265catchBlocks: ImmutableArray<BoundCatchBlock>.Empty,
421locals: ImmutableArray<LocalSymbol>.Empty,
602ImmutableArray<LocalSymbol> iterationVariables,
811ImmutableArray<LocalSymbol> iterationVariables,
837ImmutableArray<LocalSymbol> iterationVariables,
898ImmutableArray<LocalSymbol> iterationVariables,
1047ImmutableArray<LocalSymbol> iterationVariables,
1095ImmutableArray<BoundExpression> dimensionArgument = ImmutableArray.Create(
1149ImmutableArray<BoundExpression> dimensionArgument = ImmutableArray.Create(
Lowering\LocalRewriter\LocalRewriter_Literal.cs (6)
137argumentNamesOpt: default(ImmutableArray<string?>), argumentRefKindsOpt: default(ImmutableArray<RefKind>), expanded: false,
138argsToParamsOpt: default(ImmutableArray<int>), defaultArguments: default(BitVector),
157argumentNamesOpt: default(ImmutableArray<string?>), argumentRefKindsOpt: default(ImmutableArray<RefKind>), expanded: false,
158argsToParamsOpt: default(ImmutableArray<int>), defaultArguments: default(BitVector),
Lowering\LocalRewriter\LocalRewriter_LockStatement.cs (4)
117exitCallExpr = new BoundBadExpression(lockSyntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create<BoundExpression>(boundLockTemp), ErrorTypeSymbol.UnknownResultType);
179ImmutableArray<BoundCatchBlock>.Empty,
212enterCallExpr = new BoundBadExpression(lockSyntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create<BoundExpression>(boundLockTemp), ErrorTypeSymbol.UnknownResultType);
228ImmutableArray<BoundCatchBlock>.Empty,
Lowering\LocalRewriter\LocalRewriter_ObjectCreationExpression.cs (18)
20var loweredArguments = VisitList(node.Arguments);
43ImmutableArray<RefKind> argumentRefKindsOpt = node.ArgumentRefKindsOpt;
45ImmutableArray<BoundExpression> rewrittenArguments = VisitArgumentsAndCaptureReceiverIfNeeded(
68var temps = tempsBuilder.ToImmutableAndFree();
107ImmutableArray<BoundExpression>.Empty,
204ImmutableArray<BoundExpression> getAnonymousTypeValues(BoundWithExpression withExpr, BoundExpression oldValue, AnonymousTypeManager.AnonymousTypePublicSymbol anonymousType,
252var rewrittenInitializers = MakeObjectOrCollectionInitializersForExpressionTree(initializerExpressionOpt);
293ImmutableArray<LocalSymbol> locals;
355ImmutableArray<BoundExpression>.Empty,
356default(ImmutableArray<string?>),
357default(ImmutableArray<RefKind>),
361argsToParamsOpt: default(ImmutableArray<int>),
394newGuid = new BoundBadExpression(node.Syntax, LookupResultKind.NotCreatable, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, ErrorTypeSymbol.UnknownResultType);
412callGetTypeFromCLSID = new BoundBadExpression(node.Syntax, LookupResultKind.OverloadResolutionFailure, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, ErrorTypeSymbol.UnknownResultType);
428rewrittenObjectCreation = new BoundBadExpression(node.Syntax, LookupResultKind.OverloadResolutionFailure, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, node.Type);
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (20)
18private static BoundObjectInitializerExpressionBase UpdateInitializers(BoundObjectInitializerExpressionBase initializerExpression, ImmutableArray<BoundExpression> newInitializers)
66private ImmutableArray<BoundExpression> MakeObjectOrCollectionInitializersForExpressionTree(BoundExpression initializerExpression)
84void addCollectionInitializersForExpressionTree(ArrayBuilder<BoundExpression> result, ImmutableArray<BoundExpression> initializers)
127private void AddCollectionInitializers(ArrayBuilder<BoundExpression> result, BoundExpression rewrittenReceiver, ImmutableArray<BoundExpression> initializers)
159var rewrittenArguments = VisitList(initializer.Arguments);
168ImmutableArray<TypeWithAnnotations>.Empty,
170default(ImmutableArray<string?>),
171default(ImmutableArray<RefKind>),
202var argumentRefKindsOpt = default(ImmutableArray<RefKind>);
215ImmutableArray<BoundExpression> rewrittenArguments = VisitArgumentsAndCaptureReceiverIfNeeded(
254var rewrittenArguments = VisitArgumentsAndCaptureReceiverIfNeeded(ref rewrittenReceiver, forceReceiverCapturing: false, node.Arguments, node.MemberSymbol, node.ArgsToParamsOpt, node.ArgumentRefKindsOpt,
287ImmutableArray<BoundExpression> initializers)
338var args = EvaluateSideEffectingArgumentsToTemps(
340memberInit.MemberSymbol?.GetParameterRefKinds() ?? default(ImmutableArray<RefKind>),
443var indices = EvaluateSideEffectingArgumentsToTemps(
621private ImmutableArray<BoundExpression> EvaluateSideEffectingArgumentsToTemps(
622ImmutableArray<BoundExpression> args,
623ImmutableArray<RefKind> paramRefKindsOpt,
717var arguments = rewrittenLeft.Arguments;
Lowering\LocalRewriter\LocalRewriter_StringInterpolation.cs (11)
29private InterpolationHandlerResult RewriteToInterpolatedStringHandlerPattern(InterpolatedStringHandlerData data, ImmutableArray<BoundExpression> parts, SyntaxNode syntax)
127var appendCallsStatements = resultExpressions.SelectAsArray(static (appendCall, @this) => (BoundStatement)@this._factory.ExpressionStatement(appendCall), this);
219private BoundExpression LowerPartsToString(InterpolatedStringHandlerData data, ImmutableArray<BoundExpression> parts, SyntaxNode syntax, TypeSymbol type)
228: new BoundBadExpression(syntax, LookupResultKind.Empty, symbols: ImmutableArray<Symbol?>.Empty, childBoundNodes: ImmutableArray<BoundExpression>.Empty, type);
234private static void AssertNoImplicitInterpolatedStringHandlerConversions(ImmutableArray<BoundExpression> arguments, bool allowConversionsWithNoContext = false)
257private readonly ImmutableArray<BoundStatement> _statements;
258private readonly ImmutableArray<BoundExpression> _expressions;
264public InterpolationHandlerResult(ImmutableArray<BoundStatement> statements, BoundLocal handlerTemp, LocalSymbol outTemp, LocalRewriter rewriter)
273public InterpolationHandlerResult(ImmutableArray<BoundExpression> expressions, BoundLocal handlerTemp, LocalSymbol? outTemp, LocalRewriter rewriter)
285var locals = _outTemp != null
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (22)
61var underlyingConversions = c.UnderlyingConversions;
63var resultTypes = conversion.Type.TupleElementTypesWithAnnotations;
83var newArguments = builder.ToImmutableAndFree();
85tuple.Syntax, sourceTuple: null, wasTargetTyped: true, newArguments, ImmutableArray<string?>.Empty,
86ImmutableArray<bool>.Empty, conversion.Type, conversion.HasErrors);
109var destElementTypes = expr.Type.TupleElementTypesWithAnnotations;
112var srcElementFields = boundConversion.Operand.Type.TupleElements;
115var elementConversions = conversion.UnderlyingConversions;
129syntax, sourceTuple: null, wasTargetTyped: true, fieldAccessorsBuilder.ToImmutableAndFree(), ImmutableArray<string?>.Empty,
130ImmutableArray<bool>.Empty, expr.Type, expr.HasErrors);
163var newArguments = builder.ToImmutableAndFree();
165tuple.Syntax, sourceTuple: null, wasTargetTyped: false, newArguments, ImmutableArray<string?>.Empty,
166ImmutableArray<bool>.Empty, tuple.Type, tuple.HasErrors);
313BoundExpression innerSequence = _factory.Sequence(locals: ImmutableArray<LocalSymbol>.Empty, innerEffects.ToImmutableAndFree(), logicalExpression);
328return _factory.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
336return _factory.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
345_factory.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
451var types = expr.Type.GetNullableUnderlyingType().TupleElementTypesWithAnnotations;
453var underlyingConversions = tupleConversion.UnderlyingConversions;
466argumentNamesOpt: ImmutableArray<string?>.Empty,
467inferredNamesOpt: ImmutableArray<bool>.Empty,
495ImmutableArray<TupleBinaryOperatorInfo> nestedOperators = operators.Operators;
Lowering\LocalRewriter\LocalRewriter_TupleCreationExpression.cs (7)
27ImmutableArray<BoundExpression> rewrittenArguments = VisitList(node.Arguments);
37private BoundExpression RewriteTupleCreationExpression(BoundTupleExpression node, ImmutableArray<BoundExpression> rewrittenArguments)
43private BoundExpression MakeTupleCreationExpression(SyntaxNode syntax, NamedTypeSymbol type, ImmutableArray<BoundExpression> rewrittenArguments)
54ImmutableArray<BoundExpression> smallestCtorArguments = ImmutableArray.Create(rewrittenArguments,
69Binder.CheckRequiredMembersInObjectInitializer(smallestConstructor, initializers: ImmutableArray<BoundExpression>.Empty, syntax, _diagnostics);
83Binder.CheckRequiredMembersInObjectInitializer(tuple8Ctor, initializers: ImmutableArray<BoundExpression>.Empty, syntax, _diagnostics);
88ImmutableArray<BoundExpression> ctorArguments = ImmutableArray.Create(rewrittenArguments,
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (9)
64ImmutableArray<LocalSymbol> locals,
65ImmutableArray<BoundLocalDeclaration> declarations,
89private BoundStatement MakeLocalUsingDeclarationStatement(BoundUsingLocalDeclarations usingDeclarations, ImmutableArray<BoundStatement> statements)
92BoundBlock body = new BoundBlock(syntax, ImmutableArray<LocalSymbol>.Empty, statements);
96ImmutableArray<LocalSymbol>.Empty,
422catchBlocks: ImmutableArray<BoundCatchBlock>.Empty,
463disposeCall = new BoundBadExpression(resourceSyntax, LookupResultKind.NotInvocable, ImmutableArray<Symbol?>.Empty, ImmutableArray.Create(disposedExpression), ErrorTypeSymbol.UnknownResultType);
512ImmutableArray<RefKind> argumentRefKindsOpt = default;
514var rewrittenArguments = VisitArgumentsAndCaptureReceiverIfNeeded(
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (13)
369protected ImmutableArray<BoundStatement> LowerDecisionDagCore(BoundDecisionDag decisionDag)
373ImmutableArray<BoundDecisionDagNode> sortedNodes = decisionDag.TopologicallySortedNodes;
388ImmutableArray<BoundDecisionDagNode> nodesToLower = sortedNodes.WhereAsArray(n => n.Kind != BoundKind.WhenDecisionDagNode && n.Kind != BoundKind.LeafDecisionDagNode);
428var result = _loweredDecisionDag.ToImmutableAndFree();
441ImmutableArray<BoundDecisionDagNode> nodesToLower,
620ImmutableArray<(ConstantValue value, LabelSymbol label)> cases,
643(ImmutableArray<(ConstantValue value, LabelSymbol label)> whenTrueCases, ImmutableArray<(ConstantValue value, LabelSymbol label)> whenFalseCases)
644splitCases(ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, BinaryOperatorKind op, ConstantValue value)
787ImmutableArray<(ConstantValue value, LabelSymbol label)> cases;
829var cases = node.Cases.Sort(new CasesComparer(input.Type));
978private void LowerWhenClauses(ImmutableArray<BoundDecisionDagNode> sortedNodes)
1185void lowerBindings(ImmutableArray<BoundPatternBinding> bindings, ArrayBuilder<BoundStatement> sectionBuilder)
Lowering\LocalRewriter\LoweredDynamicOperation.cs (6)
25private readonly ImmutableArray<LocalSymbol> _temps;
29public LoweredDynamicOperation(SyntheticBoundNodeFactory? factory, BoundExpression? siteInitialization, BoundExpression siteInvocation, TypeSymbol resultType, ImmutableArray<LocalSymbol> temps)
40ImmutableArray<BoundExpression> loweredArguments,
52public static LoweredDynamicOperation Bad(TypeSymbol resultType, ImmutableArray<BoundExpression> children)
55var bad = new BoundBadExpression(children[0].Syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, children, resultType);
56return new LoweredDynamicOperation(null, null, bad, resultType, default(ImmutableArray<LocalSymbol>));
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (50)
98var loweredArguments = ImmutableArray.Create(loweredOperand);
112return MakeDynamicOperation(binderConstruction, null, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), null, resultType);
130var loweredArguments = ImmutableArray.Create(loweredOperand);
148return MakeDynamicOperation(binderConstruction, null, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), null, resultType);
173var loweredArguments = ImmutableArray.Create<BoundExpression>(loweredLeft, loweredRight);
191return MakeDynamicOperation(binderConstruction, null, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), null, resultType);
197ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations,
198ImmutableArray<BoundExpression> loweredArguments,
199ImmutableArray<string?> argumentNames,
200ImmutableArray<RefKind> refKinds,
271var loweredArguments = ImmutableArray<BoundExpression>.Empty;
293return MakeDynamicOperation(binderConstruction, loweredReceiver, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), loweredHandler, resultType);
298ImmutableArray<BoundExpression> loweredArguments,
299ImmutableArray<string?> argumentNames,
300ImmutableArray<RefKind> refKinds,
336ImmutableArray<BoundExpression> loweredArguments,
337ImmutableArray<string?> argumentNames,
338ImmutableArray<RefKind> refKinds)
373var loweredArguments = ImmutableArray<BoundExpression>.Empty;
392return MakeDynamicOperation(binderConstruction, loweredReceiver, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), null, resultType);
415var loweredArguments = ImmutableArray<BoundExpression>.Empty;
433return MakeDynamicOperation(binderConstruction, loweredReceiver, RefKind.None, loweredArguments, default(ImmutableArray<RefKind>), loweredRight, AssemblySymbol.DynamicType);
438ImmutableArray<BoundExpression> loweredArguments,
439ImmutableArray<string?> argumentNames,
440ImmutableArray<RefKind> refKinds)
464ImmutableArray<BoundExpression> loweredArguments,
465ImmutableArray<string?> argumentNames,
466ImmutableArray<RefKind> refKinds,
517return MakeDynamicOperation(binderConstruction, loweredReceiver, RefKind.None, ImmutableArray<BoundExpression>.Empty, default(ImmutableArray<RefKind>), null, resultType);
561ImmutableArray<BoundExpression> loweredArguments,
562ImmutableArray<string?> argumentNames = default(ImmutableArray<string?>),
563ImmutableArray<RefKind> refKinds = default(ImmutableArray<RefKind>),
603ImmutableArray<BoundExpression> loweredArguments,
604ImmutableArray<RefKind> refKinds,
641ImmutableArray<LocalSymbol> temps = MakeTempsForDiscardArguments(ref loweredArguments);
648var callSiteArguments = GetCallSiteArguments(callSiteFieldAccess, loweredReceiver, loweredArguments, loweredRight);
671private ImmutableArray<LocalSymbol> MakeTempsForDiscardArguments(ref ImmutableArray<BoundExpression> loweredArguments)
677return ImmutableArray<LocalSymbol>.Empty;
722ImmutableArray<BoundExpression> loweredArguments,
723ImmutableArray<RefKind> refKinds,
874private static ImmutableArray<BoundExpression> GetCallSiteArguments(BoundExpression callSiteFieldAccess, BoundExpression? receiver, ImmutableArray<BoundExpression> arguments, BoundExpression? right)
897private TypeSymbol[] MakeCallSiteDelegateSignature(TypeSymbol callSiteType, BoundExpression? receiver, ImmutableArray<BoundExpression> arguments, BoundExpression? right, TypeSymbol resultType)
Lowering\SpillSequenceSpiller.cs (27)
67public ImmutableArray<LocalSymbol> GetLocals()
69return (_locals == null) ? ImmutableArray<LocalSymbol>.Empty : _locals.ToImmutable();
72public ImmutableArray<BoundStatement> GetStatements()
76return ImmutableArray<BoundStatement>.Empty;
132public void AddLocals(ImmutableArray<LocalSymbol> locals)
150public void AddStatements(ImmutableArray<BoundStatement> statements)
158internal void AddExpressions(ImmutableArray<BoundExpression> expressions)
320var newInitializers = VisitExpressionList(ref builder, arrayInitialization.Initializers, forceSpill: true);
327var newArgs = VisitExpressionList(ref builder, argumentList.Arguments, argumentList.ArgumentRefKindsOpt, forceSpill: true);
487var argRefKinds = objectCreationExpression.ArgumentRefKindsOpt;
584private ImmutableArray<BoundExpression> VisitExpressionList(
586ImmutableArray<BoundExpression> args,
587ImmutableArray<RefKind> refKinds = default(ImmutableArray<RefKind>),
599var newList = VisitList(args);
712var locals = node.Locals;
784var newArgs = VisitExpressionList(ref builder, node.Arguments);
794var indices = this.VisitExpressionList(ref indicesBuilder, node.Indices);
821ImmutableArray<BoundExpression> bounds;
841var initializers = this.VisitExpressionList(ref builder, node.Initializers);
905var indices = this.VisitExpressionList(ref leftBuilder, arrayAccess.Indices, forceSpill: true);
952var indices = this.VisitExpressionList(ref leftBuilder, arrayAccess.Indices, forceSpill: true);
1033var arguments = this.VisitExpressionList(ref builder, node.Arguments, node.ArgumentRefKindsOpt);
1099var arguments = this.VisitExpressionList(ref builder, node.Arguments, node.ArgumentRefKindsOpt);
1430var arguments = this.VisitExpressionList(ref builder, node.Arguments, node.ArgumentRefKindsOpt);
1469var sideEffects = VisitExpressionList(ref builder, node.SideEffects, forceSpill: valueBuilder != null, sideEffectsOnly: true);
1501private void PromoteAndAddLocals(BoundSpillSequenceBuilder builder, ImmutableArray<LocalSymbol> locals)
Lowering\SyntheticBoundNodeFactory.cs (67)
246return new BoundBadExpression(Syntax, LookupResultKind.Empty, ImmutableArray<Symbol?>.Empty, ImmutableArray<BoundExpression>.Empty, type, hasErrors: true);
458return Block(ImmutableArray<BoundStatement>.Empty);
461public BoundBlock Block(ImmutableArray<BoundStatement> statements)
463return Block(ImmutableArray<LocalSymbol>.Empty, statements);
471public BoundBlock Block(ImmutableArray<LocalSymbol> locals, params BoundStatement[] statements)
476public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements)
481public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, params BoundStatement[] statements)
486public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, ImmutableArray<BoundStatement> statements)
488return Block(locals, ImmutableArray<MethodSymbol>.CastUp(localFunctions), statements);
491public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, ImmutableArray<BoundStatement> statements)
503return StatementList(ImmutableArray<BoundStatement>.Empty);
506public BoundStatementList StatementList(ImmutableArray<BoundStatement> statements)
551statements.Add(Try(Block(statement), ImmutableArray<BoundCatchBlock>.Empty, Block(instrumentation.Epilogue)));
774public BoundObjectCreationExpression New(NamedTypeSymbol type, ImmutableArray<BoundExpression> args)
780public BoundObjectCreationExpression New(MethodSymbol ctor, ImmutableArray<BoundExpression> args)
783public BoundObjectCreationExpression New(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKinds)
798public BoundObjectCreationExpression New(WellKnownMember wm, ImmutableArray<BoundExpression> args)
823return new BoundBadExpression(Syntax, default(LookupResultKind), ImmutableArray<Symbol?>.Empty, args.AsImmutable(), receiver);
829public BoundExpression StaticCall(MethodSymbol method, ImmutableArray<BoundExpression> args)
840public BoundExpression StaticCall(WellKnownMember method, ImmutableArray<TypeSymbol> typeArgs, params BoundExpression[] args)
860return Call(receiver, method, ImmutableArray<BoundExpression>.Empty);
881public BoundCall Call(BoundExpression? receiver, MethodSymbol method, ImmutableArray<BoundExpression> args, bool useStrictArgumentRefKinds = false)
887argumentNamesOpt: default(ImmutableArray<string?>), argumentRefKindsOpt: ArgumentRefKindsFromParameterRefKinds(method, useStrictArgumentRefKinds), isDelegateCall: false, expanded: false,
888invokedAsExtensionMethod: false, argsToParamsOpt: default(ImmutableArray<int>), defaultArguments: default(BitVector), resultKind: LookupResultKind.Viable,
893public static ImmutableArray<RefKind> ArgumentRefKindsFromParameterRefKinds(MethodSymbol method, bool useStrictArgumentRefKinds)
895var result = method.ParameterRefKinds;
923public BoundCall Call(BoundExpression? receiver, MethodSymbol method, ImmutableArray<RefKind> refKinds, ImmutableArray<BoundExpression> args)
928argumentNamesOpt: default(ImmutableArray<String?>), argumentRefKindsOpt: refKinds, isDelegateCall: false, expanded: false, invokedAsExtensionMethod: false,
929argsToParamsOpt: ImmutableArray<int>.Empty, defaultArguments: default(BitVector), resultKind: LookupResultKind.Viable, type: method.ReturnType)
955return If(condition, ImmutableArray<LocalSymbol>.Empty, thenClause, elseClauseOpt);
963public BoundStatement If(BoundExpression condition, ImmutableArray<LocalSymbol> locals, BoundStatement thenClause, BoundStatement? elseClauseOpt = null)
1031return MakeSequence(ImmutableArray<LocalSymbol>.Empty, parts);
1034public BoundExpression MakeSequence(ImmutableArray<LocalSymbol> locals, params BoundExpression[] parts)
1060return new BoundSequence(Syntax, ImmutableArray<LocalSymbol>.Empty, sideEffects.AsImmutableOrNull(), result, resultType) { WasCompilerGenerated = true };
1063public BoundExpression Sequence(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundExpression> sideEffects, BoundExpression result)
1072public BoundSpillSequence SpillSequence(ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> sideEffects, BoundExpression result)
1083public readonly ImmutableArray<int> Values;
1084public readonly ImmutableArray<BoundStatement> Statements;
1086public SyntheticSwitchSection(ImmutableArray<int> values, ImmutableArray<BoundStatement> statements)
1096public SyntheticSwitchSection SwitchSection(ImmutableArray<int> values, params BoundStatement[] statements)
1102public BoundStatement Switch(BoundExpression ex, ImmutableArray<SyntheticSwitchSection> sections)
1141private static void CheckSwitchSections(ImmutableArray<SyntheticSwitchSection> sections)
1207ImmutableArray<BoundExpression> firstElementIndices = ArrayBuilder<BoundExpression>.GetInstance(rank, Literal(0)).ToImmutableAndFree();
1216public BoundArrayAccess ArrayAccess(BoundExpression array, ImmutableArray<BoundExpression> indices)
1318public ImmutableArray<BoundExpression> TypeOfs(ImmutableArray<TypeWithAnnotations> typeArguments, TypeSymbol systemType)
1550public BoundExpression ArrayOrEmpty(TypeSymbol elementType, ImmutableArray<BoundExpression> elements)
1565public BoundExpression Array(TypeSymbol elementType, ImmutableArray<BoundExpression> elements)
1596ImmutableArray<BoundCatchBlock> catchBlocks,
1603internal ImmutableArray<BoundCatchBlock> CatchBlocks(
1621return new BoundCatchBlock(Syntax, ImmutableArray<LocalSymbol>.Empty, source, source.Type, exceptionFilterPrologueOpt: null, exceptionFilterOpt: null, body: block, isSynthesizedAsyncCatchAll: false);
1626return new BoundTryStatement(Syntax, tryBlock, ImmutableArray<BoundCatchBlock>.Empty, faultBlock, finallyLabelOpt: null, preferFaultHandler: true);
1745internal ImmutableArray<BoundExpression> MakeTempsForDiscardArguments(ImmutableArray<BoundExpression> arguments, ArrayBuilder<LocalSymbol> builder)
1863locals: ImmutableArray<LocalSymbol>.Empty,
Operations\CSharpOperationFactory_Methods.cs (26)
18internal ImmutableArray<BoundStatement> ToStatements(BoundStatement? statement)
22return ImmutableArray<BoundStatement>.Empty;
75return new VariableInitializerOperation(locals: ImmutableArray<ILocalSymbol>.Empty, value, _semanticModel, initializerSyntax, initializerIsImplicit);
87ImmutableArray<IOperation> ignoredDimensions = CreateFromArray<BoundExpression, IOperation>(boundLocalDeclaration.ArgumentsOpt);
95return boundLocal == null ? null : new VariableDeclaratorOperation(boundLocal.LocalSymbol.GetPublicSymbol(), initializer: null, ignoredArguments: ImmutableArray<IOperation>.Empty, semanticModel: _semanticModel, syntax: boundLocal.Syntax, isImplicit: false);
194internal ImmutableArray<IArgumentOperation> DeriveArguments(BoundNode containingExpression)
264private ImmutableArray<IArgumentOperation> DeriveArguments(
266ImmutableArray<BoundExpression> boundArguments,
267ImmutableArray<int> argumentsToParametersOpt,
276return ImmutableArray<IArgumentOperation>.Empty;
288private static ImmutableArray<IArgumentOperation> MakeArgumentsInEvaluationOrder(
290ImmutableArray<BoundExpression> arguments,
292ImmutableArray<int> argsToParamsOpt,
307ImmutableArray<ParameterSymbol> parameters = methodOrIndexer.GetParameters();
359private static ImmutableArray<IArgumentOperation> BuildArgumentsInEvaluationOrder(
362ImmutableArray<int> argsToParamsOpt,
364ImmutableArray<BoundExpression> arguments)
366ImmutableArray<ParameterSymbol> parameters = methodOrIndexer.GetParameters();
387internal static ImmutableArray<BoundNode> CreateInvalidChildrenFromArgumentsExpression(BoundNode? receiverOpt, ImmutableArray<BoundExpression> arguments, BoundExpression? additionalNodeOpt = null)
407internal ImmutableArray<IOperation> GetAnonymousObjectCreationInitializers(
408ImmutableArray<BoundExpression> arguments,
409ImmutableArray<BoundAnonymousPropertyDeclaration> declarations,
443arguments: ImmutableArray<IArgumentOperation>.Empty,
455ImmutableArray<IArgumentOperation>.Empty,
474static BoundAnonymousPropertyDeclaration? getDeclaration(ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, PropertySymbol currentProperty, ref int currentDeclarationIndex)
Operations\CSharpOperationFactory.cs (121)
318ImmutableArray<IOperation> children = GetIOperationChildren(boundNode);
344public ImmutableArray<TOperation> CreateFromArray<TBoundNode, TOperation>(ImmutableArray<TBoundNode> boundNodes) where TBoundNode : BoundNode where TOperation : class, IOperation
348return ImmutableArray<TOperation>.Empty;
380internal ImmutableArray<IOperation> GetIOperationChildren(IBoundNodeWithIOperationChildren boundNodeWithChildren)
382var children = boundNodeWithChildren.Children;
385return ImmutableArray<IOperation>.Empty;
403internal ImmutableArray<IVariableDeclaratorOperation> CreateVariableDeclarator(BoundNode declaration, SyntaxNode declarationSyntax)
457ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCall).InvalidNodeChildren);
464ImmutableArray<IArgumentOperation> arguments = DeriveArguments(boundCall);
487ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundFunctionPointerInvocation).InvalidNodeChildren);
492var arguments = DeriveArguments(boundFunctionPointerInvocation);
518var namedArguments = CreateFromArray<BoundAssignmentOperator, IOperation>(boundAttribute.NamedArguments);
527internal ImmutableArray<IOperation> CreateIgnoredDimensions(BoundNode declaration)
540var declarations = ((BoundMultipleLocalDeclarationsBase)declaration).LocalDeclarations;
541ImmutableArray<BoundExpression> dimensions;
550dimensions = ImmutableArray<BoundExpression>.Empty;
622var arguments = ImmutableArray<IArgumentOperation>.Empty;
640var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundIndexerAccess).InvalidNodeChildren);
644ImmutableArray<IArgumentOperation> arguments = DeriveArguments(boundIndexerAccess);
704ImmutableArray<IOperation> initializers = GetAnonymousObjectCreationInitializers(boundAnonymousObjectCreationExpression.Arguments, boundAnonymousObjectCreationExpression.Declarations, syntax, type, isImplicit);
720var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectCreationExpression).InvalidNodeChildren);
728ImmutableArray<IOperation> initializers = GetAnonymousObjectCreationInitializers(
730declarations: ImmutableArray<BoundAnonymousPropertyDeclaration>.Empty,
737ImmutableArray<IArgumentOperation> arguments = DeriveArguments(boundObjectCreationExpression);
765ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundDynamicObjectCreationExpression.Arguments);
766ImmutableArray<string?> argumentNames = boundDynamicObjectCreationExpression.ArgumentNamesOpt.NullToEmpty();
767ImmutableArray<RefKind> argumentRefKinds = boundDynamicObjectCreationExpression.ArgumentRefKindsOpt.NullToEmpty();
779return CreateBoundDynamicMemberAccessOperation(implicitReceiver, typeArgumentsOpt: ImmutableArray<TypeSymbol>.Empty, memberName: "Add",
794ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundDynamicInvocation.Arguments);
795ImmutableArray<string?> argumentNames = boundDynamicInvocation.ArgumentNamesOpt.NullToEmpty();
796ImmutableArray<RefKind> argumentRefKinds = boundDynamicInvocation.ArgumentRefKindsOpt.NullToEmpty();
818internal ImmutableArray<IOperation> CreateBoundDynamicIndexerAccessArguments(BoundExpression indexer)
837ImmutableArray<IOperation> arguments = CreateBoundDynamicIndexerAccessArguments(boundDynamicIndexerAccess);
838ImmutableArray<string?> argumentNames = boundDynamicIndexerAccess.ArgumentNamesOpt.NullToEmpty();
839ImmutableArray<RefKind> argumentRefKinds = boundDynamicIndexerAccess.ArgumentRefKindsOpt.NullToEmpty();
848ImmutableArray<IOperation> initializers = CreateFromArray<BoundExpression, IOperation>(BoundObjectCreationExpression.GetChildInitializers(boundObjectInitializerExpression));
857ImmutableArray<IOperation> initializers = CreateFromArray<BoundExpression, IOperation>(BoundObjectCreationExpression.GetChildInitializers(boundCollectionInitializerExpression));
876ImmutableArray<IOperation> arguments = CreateBoundDynamicIndexerAccessArguments(boundObjectInitializerMember);
877ImmutableArray<string?> argumentNames = boundObjectInitializerMember.ArgumentNamesOpt.NullToEmpty();
878ImmutableArray<RefKind> argumentRefKinds = boundObjectInitializerMember.ArgumentRefKindsOpt.NullToEmpty();
894ImmutableArray<IArgumentOperation> arguments;
904var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectInitializerMember).InvalidNodeChildren);
912arguments = ImmutableArray<IArgumentOperation>.Empty;
929ImmutableArray<ITypeSymbol> typeArguments = ImmutableArray<ITypeSymbol>.Empty;
942ImmutableArray<IArgumentOperation> arguments = DeriveArguments(boundCollectionElementInitializer);
950var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCollectionElementInitializer).InvalidNodeChildren);
966ImmutableArray<TypeSymbol> typeArgumentsOpt,
979ImmutableArray<ITypeSymbol> typeArguments = ImmutableArray<ITypeSymbol>.Empty;
992ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundCollectionElementInitializer.Arguments);
996return new DynamicInvocationOperation(operation, arguments, argumentNames: ImmutableArray<string?>.Empty, argumentRefKinds: ImmutableArray<RefKind>.Empty, _semanticModel, syntax, type, isImplicit);
1246ImmutableArray<IOperation> dimensionSizes = CreateFromArray<BoundExpression, IOperation>(boundArrayCreation.Bounds);
1257ImmutableArray<IOperation> elementValues = CreateFromArray<BoundExpression, IOperation>(boundArrayInitialization.Initializers);
1293static ImmutableArray<IOperation> getConstructArguments(
1307: ImmutableArray<IOperation>.CastUp(@this.DeriveArguments(collectionCreation));
1316: ImmutableArray<IOperation>.CastUp(@this.DeriveArguments(collectionCreation));
1484var children = CreateFromArray<BoundExpression, IOperation>(boundBadExpression.ChildBoundNodes);
1693ImmutableArray<IOperation> indices = CreateFromArray<BoundExpression, IOperation>(boundArrayAccess.Indices);
1792ImmutableArray<IFieldSymbol> initializedFields = ImmutableArray.Create<IFieldSymbol>(boundFieldEqualsValue.Field.GetPublicSymbol());
1801ImmutableArray<IPropertySymbol> initializedProperties = ImmutableArray.Create<IPropertySymbol>(boundPropertyEqualsValue.Property.GetPublicSymbol());
1819ImmutableArray<IOperation> operations = CreateFromArray<BoundStatement, IOperation>(boundBlock.Statements);
1820ImmutableArray<ILocalSymbol> locals = boundBlock.Locals.GetPublicSymbols();
1914ImmutableArray<ILocalSymbol> locals = boundWhileStatement.Locals.GetPublicSymbols();
1932ImmutableArray<ILocalSymbol> locals = boundDoStatement.Locals.GetPublicSymbols();
1940ImmutableArray<IOperation> before = CreateFromArray<BoundStatement, IOperation>(ToStatements(boundForStatement.Initializer));
1942ImmutableArray<IOperation> atLoopBottom = CreateFromArray<BoundStatement, IOperation>(ToStatements(boundForStatement.Increment));
1944ImmutableArray<ILocalSymbol> locals = boundForStatement.OuterLocals.GetPublicSymbols();
1945ImmutableArray<ILocalSymbol> conditionLocals = boundForStatement.InnerLocals.GetPublicSymbols();
1998ImmutableArray<IArgumentOperation> createArgumentOperations(MethodArgumentInfo? info)
2006return ImmutableArray<IArgumentOperation>.Empty;
2008var args = DeriveArguments(
2035return new VariableDeclaratorOperation(local.GetPublicSymbol(), initializer: null, ignoredArguments: ImmutableArray<IOperation>.Empty, semanticModel: _semanticModel, syntax: declaratorSyntax, isImplicit: false);
2047var nextVariables = ImmutableArray<IOperation>.Empty;
2051ImmutableArray<ILocalSymbol> locals = boundForEachStatement.IterationVariables.GetPublicSymbols();
2064ImmutableArray<ICatchClauseOperation> catches = CreateFromArray<BoundCatchBlock, ICatchClauseOperation>(boundTryStatement.CatchBlocks);
2079ImmutableArray<ILocalSymbol> locals = boundCatchBlock.Locals.GetPublicSymbols();
2089ImmutableArray<ILocalSymbol> locals = boundFixedStatement.Locals.GetPublicSymbols();
2101ImmutableArray<ILocalSymbol> locals = boundUsingStatement.Locals.GetPublicSymbols();
2161var children = CreateFromArray<BoundNode, IOperation>(boundBadStatement.ChildBoundNodes);
2207ImmutableArray<IVariableDeclaratorOperation> declarators = CreateVariableDeclarator(boundLocalDeclaration, varDeclaration);
2208ImmutableArray<IOperation> ignoredDimensions = CreateIgnoredDimensions(boundLocalDeclaration);
2227ImmutableArray<IVariableDeclaratorOperation> declarators = CreateVariableDeclarator(boundMultipleLocalDeclarations, declarationSyntax);
2228ImmutableArray<IOperation> ignoredDimensions = CreateIgnoredDimensions(boundMultipleLocalDeclarations);
2316ImmutableArray<IOperation> elements = CreateFromArray<BoundExpression, IOperation>(boundTupleExpression.Arguments);
2320private IInterpolatedStringOperation CreateBoundInterpolatedStringExpressionOperation(BoundInterpolatedString boundInterpolatedString, ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)>? positionInfo = null)
2329ImmutableArray<IInterpolatedStringContentOperation> parts = CreateBoundInterpolatedStringContentOperation(boundInterpolatedString.Parts, positionInfo);
2337internal ImmutableArray<IInterpolatedStringContentOperation> CreateBoundInterpolatedStringContentOperation(ImmutableArray<BoundExpression> parts, ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)>? positionInfo)
2341ImmutableArray<IInterpolatedStringContentOperation> createNonHandlerInterpolatedStringContent()
2359ImmutableArray<IInterpolatedStringContentOperation> createHandlerInterpolatedStringContent(ImmutableArray<(bool IsLiteral, bool HasAlignment, bool HasFormat)> positionInfo)
2443static (BoundExpression Value, BoundExpression? Alignment, BoundExpression? Format) getCallInfo(ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, (bool IsLiteral, bool HasAlignment, bool HasFormat) currentPosition)
2511var parts = interpolatedString.Parts.SelectAsArray(
2555return new InvalidOperation(ImmutableArray<IOperation>.Empty, _semanticModel, syntax, type, placeholder.ConstantValueOpt, isImplicit);
2622ImmutableArray<IPatternOperation> deconstructionSubpatterns = boundRecursivePattern.Deconstruction is { IsDefault: false } deconstructions
2624: ImmutableArray<IPatternOperation>.Empty;
2625ImmutableArray<IPropertySubpatternOperation> propertySubpatterns = boundRecursivePattern.Properties is { IsDefault: false } properties
2627: ImmutableArray<IPropertySubpatternOperation>.Empty;
2643ImmutableArray<IPatternOperation> deconstructionSubpatterns = boundITuplePattern.Subpatterns is { IsDefault: false } subpatterns
2645: ImmutableArray<IPatternOperation>.Empty;
2651propertySubpatterns: ImmutableArray<IPropertySubpatternOperation>.Empty,
2753ImmutableArray<ISwitchCaseOperation> cases = CreateFromArray<BoundSwitchSection, ISwitchCaseOperation>(boundSwitchStatement.SwitchSections);
2754ImmutableArray<ILocalSymbol> locals = boundSwitchStatement.InnerLocals.GetPublicSymbols();
2763ImmutableArray<ICaseClauseOperation> clauses = CreateFromArray<BoundSwitchLabel, ICaseClauseOperation>(boundSwitchSection.SwitchLabels);
2764ImmutableArray<IOperation> body = CreateFromArray<BoundStatement, IOperation>(boundSwitchSection.Statements);
2765ImmutableArray<ILocalSymbol> locals = boundSwitchSection.Locals.GetPublicSymbols();
2773ImmutableArray<ISwitchExpressionArmOperation> arms = CreateFromArray<BoundSwitchExpressionArm, ISwitchExpressionArmOperation>(boundSwitchExpression.SwitchArms);
2927var reference = OperationFactory.CreateInvalidOperation(_semanticModel, subpatternSyntax, ImmutableArray<IOperation>.Empty, isImplicit: true);
2949matchedType: previousType, deconstructSymbol: null, deconstructionSubpatterns: ImmutableArray<IPatternOperation>.Empty,
2973reference = new PropertyReferenceOperation(property.GetPublicSymbol(), constrainedToType: null, ImmutableArray<IArgumentOperation>.Empty,
2981reference = OperationFactory.CreateInvalidOperation(_semanticModel, nameSyntax, ImmutableArray<IOperation>.Empty, isImplicit: false);
3006private ImmutableArray<IArgumentOperation> CreateDisposeArguments(MethodArgumentInfo patternDisposeInfo)
3013return ImmutableArray<IArgumentOperation>.Empty;
3016var args = DeriveArguments(
Symbols\AliasSymbol.cs (6)
51private readonly ImmutableArray<Location> _locations; // NOTE: can be empty for the "global" alias.
56protected AliasSymbol(string aliasName, Symbol containingSymbol, ImmutableArray<Location> locations, bool isExtern)
71return new AliasSymbolFromResolvedTarget(globalNamespace, "global", globalNamespace, ImmutableArray<Location>.Empty, isExtern: false);
119public override ImmutableArray<Location> Locations
127public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
436internal AliasSymbolFromResolvedTarget(NamespaceOrTypeSymbol target, string aliasName, Symbol containingSymbol, ImmutableArray<Location> locations, bool isExtern)
Symbols\ArrayTypeSymbol.cs (41)
47return CreateMDArray(declaringAssembly, elementTypeWithAnnotations, rank, default(ImmutableArray<int>), default(ImmutableArray<int>));
53ImmutableArray<int> sizes,
54ImmutableArray<int> lowerBounds,
70ImmutableArray<int> sizes,
71ImmutableArray<int> lowerBounds)
86ImmutableArray<NamedTypeSymbol> constructedInterfaces)
105private static ImmutableArray<NamedTypeSymbol> GetSZArrayInterfaces(
150public virtual ImmutableArray<int> Sizes
154return ImmutableArray<int>.Empty;
163public virtual ImmutableArray<int> LowerBounds
167return default(ImmutableArray<int>);
178var thisLowerBounds = this.LowerBounds;
185var otherLowerBounds = other.LowerBounds;
262public override ImmutableArray<Symbol> GetMembers()
264return ImmutableArray<Symbol>.Empty;
267public override ImmutableArray<Symbol> GetMembers(string name)
269return ImmutableArray<Symbol>.Empty;
272public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
274return ImmutableArray<NamedTypeSymbol>.Empty;
277public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
279return ImmutableArray<NamedTypeSymbol>.Empty;
282public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
284return ImmutableArray<NamedTypeSymbol>.Empty;
311public override ImmutableArray<Location> Locations
315return ImmutableArray<Location>.Empty;
319public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
323return ImmutableArray<SyntaxReference>.Empty;
392internal override bool ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray<byte> transforms, ref int position, out TypeSymbol result)
510private readonly ImmutableArray<NamedTypeSymbol> _interfaces;
515ImmutableArray<NamedTypeSymbol> constructedInterfaces)
524var newInterfaces = _interfaces.SelectAsArray((i, t) => i.OriginalDefinition.Construct(t), newElementType.Type);
549internal override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol>? basesBeingResolved = null)
596internal sealed override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol>? basesBeingResolved = null)
598return ImmutableArray<NamedTypeSymbol>.Empty;
628private readonly ImmutableArray<int> _sizes;
629private readonly ImmutableArray<int> _lowerBounds;
634ImmutableArray<int> sizes,
635ImmutableArray<int> lowerBounds,
650public override ImmutableArray<int> Sizes
658public override ImmutableArray<int> LowerBounds
Symbols\Attributes\SourceAttributeData.cs (16)
23private readonly ImmutableArray<TypedConstant> _constructorArguments;
24private readonly ImmutableArray<int> _constructorArgumentsSourceIndices;
25private readonly ImmutableArray<KeyValuePair<string, TypedConstant>> _namedArguments;
35ImmutableArray<TypedConstant> constructorArguments,
36ImmutableArray<int> constructorArgumentsSourceIndices,
37ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments,
67constructorArguments: ImmutableArray<TypedConstant>.Empty,
69namedArguments: ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty,
80ImmutableArray<TypedConstant> constructorArguments,
81ImmutableArray<int> constructorArgumentsSourceIndices,
82ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments,
118internal ImmutableArray<int> ConstructorArgumentsSourceIndices
202protected internal sealed override ImmutableArray<TypedConstant> CommonConstructorArguments
207protected internal sealed override ImmutableArray<KeyValuePair<string, TypedConstant>> CommonNamedArguments
242ImmutableArray<ParameterSymbol> parameters = ctor.Parameters;
256bool matches(byte[] targetSignature, ImmutableArray<ParameterSymbol> parameters, ref TypeSymbol? lazySystemType)
Symbols\Compilation_WellKnownMembers.cs (25)
253var members = declaringType.GetMembers(descriptor.Name);
257internal static Symbol? GetRuntimeMember(ImmutableArray<Symbol> members, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt)
396ImmutableArray<TypedConstant> arguments = default,
397ImmutableArray<KeyValuePair<WellKnownMember, TypedConstant>> namedArguments = default,
411arguments = ImmutableArray<TypedConstant>.Empty;
414ImmutableArray<KeyValuePair<string, TypedConstant>> namedStringArguments;
417namedStringArguments = ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty;
458arguments: ImmutableArray<TypedConstant>.Empty,
459namedArguments: ImmutableArray<KeyValuePair<string, TypedConstant>>.Empty);
830var transformFlags = DynamicTransformsEncoder.Encode(type, refKindOpt, customModifiersCount, booleanType);
832var arguments = ImmutableArray.Create(new TypedConstant(boolArray, transformFlags));
844var names = TupleNamesEncoder.Encode(type, stringType);
849var args = ImmutableArray.Create(new TypedConstant(stringArray, names));
857var arguments = ImmutableArray.Create(
859var namedArguments = ImmutableArray.Create(
867public static ImmutableArray<string?> Encode(TypeSymbol type)
880public static ImmutableArray<TypedConstant> Encode(TypeSymbol type, TypeSymbol stringType)
890var names = namesBuilder.SelectAsArray((name, constantType) =>
931internal static ImmutableArray<TypedConstant> Encode(TypeSymbol type, RefKind refKind, int customModifiersCount, TypeSymbol booleanType)
938var result = flagsBuilder.SelectAsArray((flag, constantType) => new TypedConstant(constantType, TypedConstantKind.Primitive, flag), booleanType);
943internal static ImmutableArray<bool> Encode(TypeSymbol type, RefKind refKind, int customModifiersCount)
950internal static ImmutableArray<bool> EncodeWithoutCustomModifierFlags(TypeSymbol type, RefKind refKind)
1052void handle(RefKind refKind, ImmutableArray<CustomModifier> customModifiers, TypeWithAnnotations twa)
1173protected override ImmutableArray<ParameterSymbol> GetParameters(MethodSymbol method)
1178protected override ImmutableArray<ParameterSymbol> GetParameters(PropertySymbol property)
Symbols\ConstraintsHelper.cs (29)
75ImmutableArray<TypeWithAnnotations> constraintTypes,
132ImmutableArray<TypeWithAnnotations> constraintTypes,
141ImmutableArray<NamedTypeSymbol> interfaces;
148interfaces = ImmutableArray<NamedTypeSymbol>.Empty;
344internal static ImmutableArray<ImmutableArray<TypeWithAnnotations>> MakeTypeParameterConstraintTypes(
347ImmutableArray<TypeParameterSymbol> typeParameters,
354return ImmutableArray<ImmutableArray<TypeWithAnnotations>>.Empty;
362ImmutableArray<TypeParameterConstraintClause> clauses;
368return ImmutableArray<ImmutableArray<TypeWithAnnotations>>.Empty;
374internal static ImmutableArray<TypeParameterConstraintKind> MakeTypeParameterConstraintKinds(
377ImmutableArray<TypeParameterSymbol> typeParameters,
383return ImmutableArray<TypeParameterConstraintKind>.Empty;
386ImmutableArray<TypeParameterConstraintClause> clauses;
409return ImmutableArray<TypeParameterConstraintKind>.Empty;
415internal static ImmutableArray<TypeParameterConstraintClause> AdjustConstraintKindsBasedOnConstraintTypes(ImmutableArray<TypeParameterSymbol> typeParameters, ImmutableArray<TypeParameterConstraintClause> constraintClauses)
470var constraintTypes = bounds.ConstraintTypes;
609ImmutableArray<Location> elementLocations,
767var array = type.OriginalDefinition.InterfacesNoUseSiteDiagnostics(basesBeingResolved);
899ImmutableArray<TypeParameterSymbol> typeParameters,
900ImmutableArray<TypeWithAnnotations> typeArguments,
1086ImmutableArray<TypeWithAnnotations> originalConstraintTypes = typeParameter.ConstraintTypesWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
1439private static bool IsReferenceType(TypeParameterSymbol typeParameter, ImmutableArray<TypeWithAnnotations> constraintTypes)
1444private static bool IsValueType(TypeParameterSymbol typeParameter, ImmutableArray<TypeWithAnnotations> constraintTypes)
1455private static void AddInterfaces(ArrayBuilder<NamedTypeSymbol> builder, ImmutableArray<NamedTypeSymbol> interfaces)
Symbols\ExtendedErrorTypeSymbol.cs (10)
25private readonly ImmutableArray<Symbol> _candidateSymbols; // Best guess at what user meant, but was wrong.
52private ExtendedErrorTypeSymbol(NamespaceOrTypeSymbol? containingSymbol, string name, int arity, DiagnosticInfo? errorInfo, bool unreported, bool variableUsedBeforeDeclaration, ImmutableArray<Symbol> candidateSymbols, LookupResultKind resultKind)
74internal ExtendedErrorTypeSymbol(NamespaceOrTypeSymbol? containingSymbol, ImmutableArray<Symbol> candidateSymbols, LookupResultKind resultKind, DiagnosticInfo errorInfo, int arity, bool unreported = false)
88private static ImmutableArray<Symbol> UnwrapErrorCandidates(ImmutableArray<Symbol> candidateSymbols)
115public override ImmutableArray<Symbol> CandidateSymbols => _candidateSymbols.NullToEmpty();
176public override ImmutableArray<Location> Locations
180return ImmutableArray<Location>.Empty;
197internal override ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved)
199return ImmutableArray<NamedTypeSymbol>.Empty;
Symbols\FunctionPointers\FunctionPointerMethodSymbol.cs (66)
20private readonly ImmutableArray<FunctionPointerParameterSymbol> _parameters;
87var refCustomModifiers = ImmutableArray<CustomModifier>.Empty;
246ImmutableArray<CustomModifier> refCustomModifiers,
248ImmutableArray<TypeWithAnnotations> parameterTypes,
249ImmutableArray<ImmutableArray<CustomModifier>> parameterRefCustomModifiers,
250ImmutableArray<RefKind> parameterRefKinds,
269ImmutableArray<CustomModifier> callingConventionModifiers,
272ImmutableArray<TypeWithAnnotations> parameterTypes,
273ImmutableArray<RefKind> parameterRefKinds,
284ImmutableArray<CustomModifier> refCustomModifiers;
287refCustomModifiers = ImmutableArray<CustomModifier>.Empty;
330public static FunctionPointerMethodSymbol CreateFromMetadata(ModuleSymbol containingModule, CallingConvention callingConvention, ImmutableArray<ParamInfo<TypeSymbol>> retAndParamTypes)
335ImmutableArray<TypeWithAnnotations> substitutedParameterTypes,
336ImmutableArray<CustomModifier> refCustomModifiers = default,
337ImmutableArray<ImmutableArray<CustomModifier>> paramRefCustomModifiers = default)
354var mergedParameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
404var transformedParameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
445ImmutableArray<CustomModifier> refCustomModifiers,
446ImmutableArray<ParameterSymbol> originalParameters,
447ImmutableArray<TypeWithAnnotations> substitutedParameterTypes,
448ImmutableArray<ImmutableArray<CustomModifier>> substitutedRefCustomModifiers,
466var customModifiers = substitutedRefCustomModifiers.IsDefault ? originalParam.RefCustomModifiers : substitutedRefCustomModifiers[i];
479_parameters = ImmutableArray<FunctionPointerParameterSymbol>.Empty;
490ImmutableArray<CustomModifier> refCustomModifiers,
491ImmutableArray<TypeWithAnnotations> parameterTypes,
492ImmutableArray<ImmutableArray<CustomModifier>> parameterRefCustomModifiers,
493ImmutableArray<RefKind> parameterRefKinds,
508var refCustomModifiers = arg.ParamRefCustomModifiers.IsDefault ? getCustomModifierArrayForRefKind(refKind, arg.Comp) : arg.ParamRefCustomModifiers[i];
513static ImmutableArray<CustomModifier> getCustomModifierArrayForRefKind(RefKind refKind, CSharpCompilation compilation)
514=> GetCustomModifierForRefKind(refKind, compilation) is { } modifier ? ImmutableArray.Create(modifier) : ImmutableArray<CustomModifier>.Empty;
521ImmutableArray<CustomModifier> refCustomModifiers,
540: ImmutableArray<FunctionPointerParameterSymbol>.Empty;
543private FunctionPointerMethodSymbol(CallingConvention callingConvention, ImmutableArray<ParamInfo<TypeSymbol>> retAndParamTypes, bool useUpdatedEscapeRules)
558static ImmutableArray<FunctionPointerParameterSymbol> makeParametersFromMetadata(ReadOnlySpan<ParamInfo<TypeSymbol>> parameterTypes, FunctionPointerMethodSymbol parent)
567var paramRefCustomMods = CSharpCustomModifier.Convert(param.RefCustomModifiers);
577return ImmutableArray<FunctionPointerParameterSymbol>.Empty;
581static RefKind getRefKind(ParamInfo<TypeSymbol> param, ImmutableArray<CustomModifier> paramRefCustomMods, RefKind hasInRefKind, RefKind hasOutRefKind, bool requiresLocationAllowed)
603internal FunctionPointerMethodSymbol ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray<byte> transforms, ref int position)
606var newParamTypes = ImmutableArray<TypeWithAnnotations>.Empty;
639internal override ImmutableArray<NamedTypeSymbol> UnmanagedCallingConventionTypes
645return ImmutableArray<NamedTypeSymbol>.Empty;
648var modifiersToSearch = RefKind != RefKind.None ? RefCustomModifiers : ReturnTypeWithAnnotations.CustomModifiers;
651return ImmutableArray<NamedTypeSymbol>.Empty;
671var modifiersToSearch = RefKind != RefKind.None ? RefCustomModifiers : ReturnTypeWithAnnotations.CustomModifiers;
769public override ImmutableArray<ParameterSymbol> Parameters =>
771public override ImmutableArray<CustomModifier> RefCustomModifiers { get; }
820public override ImmutableArray<TypeParameterSymbol> TypeParameters => ImmutableArray<TypeParameterSymbol>.Empty;
824public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => ImmutableArray<MethodSymbol>.Empty;
826public override ImmutableArray<Location> Locations => ImmutableArray<Location>.Empty;
827public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences => ImmutableArray<SyntaxReference>.Empty;
836public override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotations => ImmutableArray<TypeWithAnnotations>.Empty;
844internal override ImmutableArray<string> GetAppliedConditionalSymbols() => ImmutableArray<string>.Empty;
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (28)
35ImmutableArray<CustomModifier> refCustomModifiers,
37ImmutableArray<TypeWithAnnotations> parameterTypes,
38ImmutableArray<ImmutableArray<CustomModifier>> parameterRefCustomModifiers,
39ImmutableArray<RefKind> parameterRefKinds,
48ImmutableArray<CustomModifier> callingConventionModifiers,
51ImmutableArray<TypeWithAnnotations> parameterTypes,
52ImmutableArray<RefKind> parameterRefKinds,
56public static FunctionPointerTypeSymbol CreateFromMetadata(ModuleSymbol containingModule, Cci.CallingConvention callingConvention, ImmutableArray<ParamInfo<TypeSymbol>> retAndParamTypes)
62ImmutableArray<TypeWithAnnotations> substitutedParameterTypes,
63ImmutableArray<CustomModifier> refCustomModifiers,
64ImmutableArray<ImmutableArray<CustomModifier>> paramRefCustomModifiers)
81public override ImmutableArray<Location> Locations => ImmutableArray<Location>.Empty;
82public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences => ImmutableArray<SyntaxReference>.Empty;
93public override ImmutableArray<Symbol> GetMembers() => ImmutableArray<Symbol>.Empty;
94public override ImmutableArray<Symbol> GetMembers(string name) => ImmutableArray<Symbol>.Empty;
95public override ImmutableArray<NamedTypeSymbol> GetTypeMembers() => ImmutableArray<NamedTypeSymbol>.Empty;
96public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name) => ImmutableArray<NamedTypeSymbol>.Empty;
98internal override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol>? basesBeingResolved = null) => ImmutableArray<NamedTypeSymbol>.Empty;
136internal override bool ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray<byte> transforms, ref int position, out TypeSymbol result)
Symbols\MemberSignatureComparer.cs (14)
502var explicitInterfaceImplementations1 = member1.GetExplicitInterfaceImplementations();
503var explicitInterfaceImplementations2 = member2.GetExplicitInterfaceImplementations();
555ImmutableArray<CustomModifier> refCustomModifiers1;
560ImmutableArray<CustomModifier> refCustomModifiers2;
604var typeParameters = member.GetMemberTypeParameters();
613public static bool HaveSameConstraints(ImmutableArray<TypeParameterSymbol> typeParameters1, TypeMap? typeMap1, ImmutableArray<TypeParameterSymbol> typeParameters2, TypeMap? typeMap2, TypeCompareKind typeComparison)
652var constraintTypes1 = typeParameter1.ConstraintTypesNoUseSiteDiagnostics;
653var constraintTypes2 = typeParameter2.ConstraintTypesNoUseSiteDiagnostics;
723private static void SubstituteConstraintTypes(ImmutableArray<TypeWithAnnotations> types, TypeMap? typeMap, HashSet<TypeSymbol> result)
829private static bool HaveSameCustomModifiers(ImmutableArray<CustomModifier> customModifiers1, TypeMap? typeMap1, ImmutableArray<CustomModifier> customModifiers2, TypeMap? typeMap2)
835private static ImmutableArray<CustomModifier> SubstituteModifiers(TypeMap? typeMap, ImmutableArray<CustomModifier> customModifiers)
Symbols\Metadata\PE\DynamicTypeDecoder.cs (13)
34private readonly ImmutableArray<bool> _dynamicTransformFlags;
44private DynamicTypeDecoder(ImmutableArray<bool> dynamicTransformFlags, bool haveCustomModifierFlags, bool checkLength, AssemblySymbol containingAssembly)
73ImmutableArray<bool> dynamicTransformFlags;
90ImmutableArray<bool> dynamicTransformFlags,
108ImmutableArray<bool> dynamicTransformFlags,
242ImmutableArray<TypeWithAnnotations> typeArguments = namedType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
244ImmutableArray<TypeWithAnnotations> transformedTypeArguments = TransformTypeArguments(typeArguments); // Note, modifiers are not involved, this is behavior of the native compiler.
270private ImmutableArray<TypeWithAnnotations> TransformTypeArguments(ImmutableArray<TypeWithAnnotations> typeArguments)
285return default(ImmutableArray<TypeWithAnnotations>);
360var transformedParameters = ImmutableArray<TypeWithAnnotations>.Empty;
398static (TypeWithAnnotations, bool madeChanges) handle(ref DynamicTypeDecoder decoder, RefKind refKind, ImmutableArray<CustomModifier> refCustomModifiers, TypeWithAnnotations typeWithAnnotations)
Symbols\Metadata\PE\PEMethodSymbol.cs (64)
35public readonly ImmutableArray<ParameterSymbol> Parameters;
38public SignatureData(SignatureHeader header, ImmutableArray<ParameterSymbol> parameters, PEParameterSymbol returnParam)
307/// <see cref="ImmutableArray{T}.Empty"/>. In this case, again, no race has occurred, and the consuming code can simply trust the empty value.</item>
324public ImmutableArray<CSharpAttributeData> _lazyCustomAttributes;
325public ImmutableArray<string> _lazyConditionalAttributeSymbols;
329public ImmutableArray<string> _lazyNotNullMembers;
330public ImmutableArray<string> _lazyNotNullMembersWhenTrue;
331public ImmutableArray<string> _lazyNotNullMembersWhenFalse;
367retVal._lazyCustomAttributes = ImmutableArray<CSharpAttributeData>.Empty;
372retVal._lazyConditionalAttributeSymbols = ImmutableArray<string>.Empty;
382retVal._lazyNotNullMembers = ImmutableArray<string>.Empty;
383retVal._lazyNotNullMembersWhenTrue = ImmutableArray<string>.Empty;
384retVal._lazyNotNullMembersWhenFalse = ImmutableArray<string>.Empty;
403private ImmutableArray<TypeParameterSymbol> _lazyTypeParameters;
405private ImmutableArray<MethodSymbol> _lazyExplicitMethodImplementations;
499internal override ImmutableArray<byte> ReturnValueMarshallingDescriptor => ReturnTypeParameter.MarshallingDescriptor;
632var unused = this.ExplicitInterfaceImplementations;
645var unused = this.ExplicitInterfaceImplementations;
680public override ImmutableArray<ParameterSymbol> Parameters => Signature.Parameters;
716internal override ImmutableArray<string> NotNullMembers
728return ImmutableArray<string>.Empty;
732var result = uncommonFields._lazyNotNullMembers;
733return result.IsDefault ? ImmutableArray<string>.Empty : result;
741var memberNotNull = module.GetMemberNotNullAttributeValues(_handle);
765internal override ImmutableArray<string> NotNullWhenTrueMembers
777return ImmutableArray<string>.Empty;
781var result = uncommonFields._lazyNotNullMembersWhenTrue;
782return result.IsDefault ? ImmutableArray<string>.Empty : result;
787internal override ImmutableArray<string> NotNullWhenFalseMembers
799return ImmutableArray<string>.Empty;
803var result = uncommonFields._lazyNotNullMembersWhenFalse;
804return result.IsDefault ? ImmutableArray<string>.Empty : result;
809public override ImmutableArray<CustomModifier> RefCustomModifiers => Signature.ReturnParam.RefCustomModifiers;
874ImmutableArray<TypeParameterSymbol>.Empty);
878ImmutableArray<ParameterSymbol> @params;
900@params = ImmutableArray<ParameterSymbol>.Empty;
937public override ImmutableArray<TypeParameterSymbol> TypeParameters
942var typeParams = EnsureTypeParametersAreLoaded(ref diagnosticInfo);
952private ImmutableArray<TypeParameterSymbol> EnsureTypeParametersAreLoaded(ref DiagnosticInfo diagnosticInfo)
954var typeParams = _lazyTypeParameters;
963private ImmutableArray<TypeParameterSymbol> LoadTypeParameters(ref DiagnosticInfo diagnosticInfo)
972return ImmutableArray<TypeParameterSymbol>.Empty;
988return ImmutableArray<TypeParameterSymbol>.Empty;
992public override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotations => IsGenericMethod ? GetTypeParametersAsTypeArguments() : ImmutableArray<TypeWithAnnotations>.Empty;
1018public override ImmutableArray<Location> Locations => _containingType.ContainingPEModule.MetadataLocation.Cast<MetadataLocation, Location>();
1020public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences => ImmutableArray<SyntaxReference>.Empty;
1022public override ImmutableArray<CSharpAttributeData> GetAttributes()
1026var attributeData = loadAndFilterAttributes(out var isExtensionMethod, out var isReadOnly, out var hasRequiresUnsafeAttribute);
1046return ImmutableArray<CSharpAttributeData>.Empty;
1050var attributeData = uncommonFields._lazyCustomAttributes;
1052? InterlockedOperations.Initialize(ref uncommonFields._lazyCustomAttributes, ImmutableArray<CSharpAttributeData>.Empty)
1056ImmutableArray<CSharpAttributeData> loadAndFilterAttributes(out bool isExtensionMethod, out bool isReadOnly, out bool hasRequiresUnsafeAttribute)
1113public override ImmutableArray<CSharpAttributeData> GetReturnTypeAttributes() => Signature.ReturnParam.GetAttributes();
1152var parameters = this.Parameters;
1372public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations
1376var explicitInterfaceImplementations = _lazyExplicitMethodImplementations;
1388var explicitlyOverriddenMethods = new MetadataDecoder(moduleSymbol, _containingType).GetExplicitlyOverriddenMethods(_containingType.Handle, _handle, this.ContainingType);
1648internal override ImmutableArray<string> GetAppliedConditionalSymbols()
1652var result = _containingType.ContainingPEModule.Module.GetConditionalAttributeValues(_handle);
1666return ImmutableArray<string>.Empty;
1670var result = uncommonFields._lazyConditionalAttributeSymbols;
1672? InterlockedOperations.Initialize(ref uncommonFields._lazyConditionalAttributeSymbols, ImmutableArray<string>.Empty)
Symbols\Metadata\PE\PENamedTypeSymbol.cs (78)
33private static readonly Dictionary<ReadOnlyMemory<char>, ImmutableArray<PENamedTypeSymbol>> s_emptyNestedTypes =
34new Dictionary<ReadOnlyMemory<char>, ImmutableArray<PENamedTypeSymbol>>(EmptyReadOnlyMemoryOfCharComparer.Instance);
55private ImmutableArray<Symbol> _lazyMembersInDeclarationOrder;
61private Dictionary<string, ImmutableArray<Symbol>> _lazyMembersByName;
67private Dictionary<ReadOnlyMemory<char>, ImmutableArray<PENamedTypeSymbol>> _lazyNestedTypes;
77private ImmutableArray<NamedTypeSymbol> _lazyInterfaces = default(ImmutableArray<NamedTypeSymbol>);
79private ImmutableArray<NamedTypeSymbol> _lazyDeclaredInterfaces = default(ImmutableArray<NamedTypeSymbol>);
135internal ImmutableArray<PEFieldSymbol> lazyInstanceEnumFields;
139internal ImmutableArray<CSharpAttributeData> lazyCustomAttributes;
140internal ImmutableArray<string> lazyConditionalAttributeSymbols;
156internal ImmutableArray<NamedTypeSymbol> lazyCandidateClosedSubtypeDefinitions = default;
158internal ImmutableArray<byte> lazyFilePathChecksum = default;
524ImmutableArray<TypeParameterSymbol> combinedTypeParameters = @this.TypeParameters.Concat(method.TypeParameters);
735internal override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol> basesBeingResolved = null)
739ImmutableInterlocked.InterlockedCompareExchange(ref _lazyInterfaces, MakeAcyclicInterfaces(), default(ImmutableArray<NamedTypeSymbol>));
745internal override ImmutableArray<NamedTypeSymbol> GetInterfacesToEmit()
782internal override ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved)
786ImmutableInterlocked.InterlockedCompareExchange(ref _lazyDeclaredInterfaces, MakeDeclaredInterfaces(), default(ImmutableArray<NamedTypeSymbol>));
814private ImmutableArray<NamedTypeSymbol> MakeDeclaredInterfaces()
842return ImmutableArray<NamedTypeSymbol>.Empty;
951public override ImmutableArray<CSharpAttributeData> GetAttributes()
956return ImmutableArray<CSharpAttributeData>.Empty;
961ImmutableArray<CSharpAttributeData> loadedCustomAttributes = loadAndFilterAttributes(out var hasRequiredMembers, out var isClosed);
980ImmutableArray<CSharpAttributeData> loadAndFilterAttributes(out bool hasRequiredMembers, out bool isClosed)
1221internal sealed override ImmutableArray<NamedTypeSymbol> CandidateClosedSubtypeDefinitions
1236ImmutableArray<NamedTypeSymbol> findClosedSubtypes()
1348public override ImmutableArray<Symbol> GetMembers()
1402ImmutableArray<Symbol> staticFields = GetMembers();
1512ImmutableArray<Symbol> members = GetMembers();
1615internal override ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers()
1620internal override ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers(string name)
1843foreach (var typeArray in _lazyNestedTypes.Values)
1872var peMembers = members.ToImmutableAndFree();
1879var membersInDeclarationOrder = members.ToImmutable();
1908Dictionary<string, ImmutableArray<Symbol>> membersDict = GroupByName(members);
1941internal override ImmutableArray<Symbol> GetSimpleNonTypeMembers(string name)
1945ImmutableArray<Symbol> m;
1948m = ImmutableArray<Symbol>.Empty;
1954public override ImmutableArray<Symbol> GetMembers(string name)
1958ImmutableArray<Symbol> m;
1961m = ImmutableArray<Symbol>.Empty;
1965ImmutableArray<PENamedTypeSymbol> t;
1983var candidates = this.GetMembers(FixedFieldImplementationType.FixedElementFieldName);
1993internal override ImmutableArray<NamedTypeSymbol> GetTypeMembersUnordered()
1998public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
2004private ImmutableArray<NamedTypeSymbol> GetMemberTypesPrivate()
2010foreach (var typeArray in _lazyNestedTypes.Values)
2046public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
2050ImmutableArray<PENamedTypeSymbol> t;
2057return ImmutableArray<NamedTypeSymbol>.Empty;
2060public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
2065public override ImmutableArray<Location> Locations
2073public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
2077return ImmutableArray<SyntaxReference>.Empty;
2111internal override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotationsNoUseSiteDiagnostics
2115return ImmutableArray<TypeWithAnnotations>.Empty;
2119public override ImmutableArray<TypeParameterSymbol> TypeParameters
2123return ImmutableArray<TypeParameterSymbol>.Empty;
2364private ImmutableArray<NamedTypeSymbol> MakeAcyclicInterfaces()
2366var declaredInterfaces = GetDeclaredInterfaces(null);
2393ImmutableArray<TypeDefinitionHandle> nestedTypeDefs;
2432ImmutableArray<TypeDefinitionHandle> markerTypeDefs;
2694private static Dictionary<string, ImmutableArray<Symbol>> GroupByName(ArrayBuilder<Symbol> symbols)
2699private static Dictionary<ReadOnlyMemory<char>, ImmutableArray<PENamedTypeSymbol>> GroupByName(ArrayBuilder<PENamedTypeSymbol> symbols)
3000internal override ImmutableArray<string> GetAppliedConditionalSymbols()
3005return ImmutableArray<string>.Empty;
3010ImmutableArray<string> conditionalSymbols = this.ContainingPEModule.Module.GetConditionalAttributeValues(_handle);
3012ImmutableInterlocked.InterlockedCompareExchange(ref uncommon.lazyConditionalAttributeSymbols, conditionalSymbols, default(ImmutableArray<string>));
3069private static int GetIndexOfFirstMember(ImmutableArray<Symbol> members, SymbolKind kind)
3086private static IEnumerable<TSymbol> GetMembers<TSymbol>(ImmutableArray<Symbol> members, SymbolKind kind, int offset = -1)
3245private ImmutableArray<TypeParameterSymbol> _lazyTypeParameters;
3269_lazyTypeParameters = ImmutableArray<TypeParameterSymbol>.Empty;
3303internal override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotationsNoUseSiteDiagnostics
3312public override ImmutableArray<TypeParameterSymbol> TypeParameters
3383var containingTypeParameters = container.GetAllTypeParameters();
3397var nestedTypeParameters = nestedType.TypeParameters;
Symbols\Metadata\PE\SymbolFactory.cs (12)
18internal override TypeSymbol GetMDArrayTypeSymbol(PEModuleSymbol moduleSymbol, int rank, TypeSymbol elementType, ImmutableArray<ModifierInfo<TypeSymbol>> customModifiers,
19ImmutableArray<int> sizes, ImmutableArray<int> lowerBounds)
39internal override TypeSymbol MakePointerTypeSymbol(PEModuleSymbol moduleSymbol, TypeSymbol type, ImmutableArray<ModifierInfo<TypeSymbol>> customModifiers)
49internal override TypeSymbol MakeFunctionPointerTypeSymbol(PEModuleSymbol moduleSymbol, Cci.CallingConvention callingConvention, ImmutableArray<ParamInfo<TypeSymbol>> retAndParamTypes)
64internal override TypeSymbol GetSZArrayTypeSymbol(PEModuleSymbol moduleSymbol, TypeSymbol elementType, ImmutableArray<ModifierInfo<TypeSymbol>> customModifiers)
82ImmutableArray<KeyValuePair<TypeSymbol, ImmutableArray<ModifierInfo<TypeSymbol>>>> arguments,
83ImmutableArray<bool> refersToNoPiaLocalType)
103ImmutableArray<AssemblySymbol> linkedAssemblies = moduleSymbol.ContainingAssembly.GetLinkedReferencedAssemblies();
141ImmutableArray<TypeParameterSymbol> typeParameters = genericType.GetAllTypeParameters();
167private static TypeWithAnnotations CreateType(TypeSymbol type, ImmutableArray<ModifierInfo<TypeSymbol>> customModifiers)
Symbols\NamedTypeSymbol.cs (87)
43public ImmutableArray<MethodSymbol> _lazyFactoryMethods;
44public ImmutableArray<TypeSymbol> _lazyCaseTypes;
48public ImmutableArray<MethodSymbol> _lazyTryGetValueMethods;
49public ImmutableArray<TypeUnionValueSet.CaseInfo> _lazyTypeUnionValueSetCases;
55public ImmutableArray<NamedTypeSymbol> _lazyMemberProviderInterfaceAllInterfaces;
63/// using <see cref="RoslynImmutableInterlocked.VolatileRead{T}(ref readonly ImmutableArray{T})"/> API
67public ImmutableArray<NamedTypeSymbol> _lazySubtypes;
68public ImmutableArray<TypeUnionValueSet.CaseInfo> _lazyTypeUnionValueSetCases;
107public abstract ImmutableArray<TypeParameterSymbol> TypeParameters { get; }
114internal abstract ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotationsNoUseSiteDiagnostics { get; }
116internal ImmutableArray<TypeWithAnnotations> TypeArgumentsWithDefinitionUseSiteDiagnostics(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
118var result = TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
228var methods = GetMembers(WellKnownMemberNames.DelegateInvokeName);
255ImmutableArray<Symbol> candidates = GetSimpleNonTypeMembers(name);
262internal static void AddOperators(ArrayBuilder<MethodSymbol> operators, ImmutableArray<Symbol> candidates)
287public ImmutableArray<MethodSymbol> InstanceConstructors
298public ImmutableArray<MethodSymbol> StaticConstructors
309public ImmutableArray<MethodSymbol> Constructors
317private ImmutableArray<MethodSymbol> GetConstructors(bool includeInstance, bool includeStatic)
321ImmutableArray<Symbol> instanceCandidates = includeInstance
323: ImmutableArray<Symbol>.Empty;
324ImmutableArray<Symbol> staticCandidates = includeStatic
326: ImmutableArray<Symbol>.Empty;
330return ImmutableArray<MethodSymbol>.Empty;
359public ImmutableArray<PropertySymbol> Indexers
363ImmutableArray<Symbol> candidates = GetSimpleNonTypeMembers(WellKnownMemberNames.Indexer);
367return ImmutableArray<PropertySymbol>.Empty;
398var members = nameOpt == null
492var candidates = name is null || alternativeName is not null
755internal bool TryGetClosedSubtypes(out ImmutableArray<NamedTypeSymbol> subtypes, CancellationToken cancellationToken = default)
765ImmutableArray<NamedTypeSymbol> lazySubtypes = RoslynImmutableInterlocked.VolatileRead(in lazyClosedClassData._lazySubtypes);
778(bool, ImmutableArray<NamedTypeSymbol>) calculateClosedSubtypes(CancellationToken cancellationToken)
780var candidateSubtypes = CandidateClosedSubtypeDefinitions;
796static bool tryGetSpeakableSubtypes(NamedTypeSymbol @this, ImmutableArray<NamedTypeSymbol> candidateSubtypes, ArrayBuilder<NamedTypeSymbol> resultBuilder, HashSet<TypeParameterSymbol> baseTypeTypeParameters, CancellationToken cancellationToken)
820internal ImmutableArray<TypeUnionValueSet.CaseInfo> ClosedClassTypeUnionValueSetCases()
823ImmutableArray<TypeUnionValueSet.CaseInfo> lazyTypeUnionValueSetCases = lazyClosedClassData._lazyTypeUnionValueSetCases;
841internal abstract ImmutableArray<NamedTypeSymbol> CandidateClosedSubtypeDefinitions { get; }
964public abstract override ImmutableArray<Symbol> GetMembers();
971public abstract override ImmutableArray<Symbol> GetMembers(string name);
980internal virtual ImmutableArray<Symbol> GetSimpleNonTypeMembers(string name)
990public abstract override ImmutableArray<NamedTypeSymbol> GetTypeMembers();
998public abstract override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity);
1058internal abstract ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers();
1068internal abstract ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers(string name);
1083internal abstract ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved);
1190var typeArguments = this.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
1191var otherTypeArguments = other.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
1219var elementNames = TupleElementNames;
1220var otherElementNames = other.TupleElementNames;
1238internal override bool ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray<byte> transforms, ref int position, out TypeSymbol result)
1299internal NamedTypeSymbol WithTypeArguments(ImmutableArray<TypeWithAnnotations> allTypeArguments)
1360var typeParameters = definition.TypeParameters;
1363var typeArgumentsA = typeA.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
1364var typeArgumentsB = typeB.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
1429public NamedTypeSymbol Construct(ImmutableArray<TypeSymbol> typeArguments)
1481private NamedTypeSymbol ConstructWithoutModifiers(ImmutableArray<TypeSymbol> typeArguments, bool unbound)
1483ImmutableArray<TypeWithAnnotations> modifiedArguments;
1487modifiedArguments = default(ImmutableArray<TypeWithAnnotations>);
1497internal NamedTypeSymbol Construct(ImmutableArray<TypeWithAnnotations> typeArguments)
1502internal NamedTypeSymbol Construct(ImmutableArray<TypeWithAnnotations> typeArguments, bool unbound)
1539protected virtual NamedTypeSymbol ConstructCore(ImmutableArray<TypeWithAnnotations> typeArguments, bool unbound)
1594internal ImmutableArray<TypeWithAnnotations> GetAllTypeArguments(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1631internal ImmutableArray<TypeWithAnnotations> GetTypeParametersAsTypeArguments()
1892internal abstract ImmutableArray<string> GetAppliedConditionalSymbols();
1957internal ImmutableArray<TypeSymbol> UnionCaseTypesNoUseSiteDiagnostics
1966internal ImmutableArray<TypeSymbol> UnionCaseTypes(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1974ImmutableArray<TypeSymbol> lazyCaseTypes = lazyUnionData._lazyCaseTypes;
1990ImmutableArray<TypeSymbol> definitionCaseTypes = this.OriginalDefinition.UnionCaseTypes(ref useSiteInfo);
2025internal ImmutableArray<TypeUnionValueSet.CaseInfo> UnionTypeUnionValueSetCases()
2028ImmutableArray<TypeUnionValueSet.CaseInfo> lazyTypeUnionValueSetCases = lazyUnionData._lazyTypeUnionValueSetCases;
2047internal ImmutableArray<MethodSymbol> UnionFactoryMethods(ref CompoundUseSiteInfo<AssemblySymbol> membersInterfaceForDefinitionInterfacesUseSiteInfo)
2052ImmutableArray<MethodSymbol> lazyFactoryMethods = lazyUnionData._lazyFactoryMethods;
2066ImmutableArray<MethodSymbol> definitionFactoryMethods = this.OriginalDefinition.UnionFactoryMethods(ref membersInterfaceForDefinitionInterfacesUseSiteInfo);
2141ImmutableArray<NamedTypeSymbol> memberProviderInterfaceAllInterfaces = GetMemberProviderInterfaceAllInterfacesForDefinition();
2230private void AddUseSiteInfoForCachedUnionFactoryMethodsResult(ImmutableArray<NamedTypeSymbol> memberProviderInterfaceAllInterfaces, ref CompoundUseSiteInfo<AssemblySymbol> membersInterfaceForDefinitionInterfacesUseSiteInfo)
2288internal ImmutableArray<NamedTypeSymbol> GetMemberProviderInterfaceAllInterfacesForDefinition()
2296ImmutableArray<NamedTypeSymbol> lazyAllInterfaces = lazyUnionData._lazyMemberProviderInterfaceAllInterfaces;
2313static ImmutableArray<NamedTypeSymbol> makeAllInterfaces(NamedTypeSymbol memberProviderInterface)
2318var interfaces = memberProviderInterface.GetInterfacesToEmit();
2332ImmutableArray<NamedTypeSymbol> baseInterfaces = @interface.OriginalDefinition.GetInterfacesToEmit();
2547ImmutableArray<NamedTypeSymbol> memberProviderInterfaceAllInterfaces = GetMemberProviderInterfaceAllInterfacesForDefinition();
2707ImmutableArray<MethodSymbol> tryGetValueMethods = this.UnionTryGetValueMethods();
2746internal ImmutableArray<MethodSymbol> UnionTryGetValueMethods()
2749ImmutableArray<MethodSymbol> lazyTryGetValueMethods = lazyUnionData._lazyTryGetValueMethods;
2760ImmutableArray<MethodSymbol> definitionTryGetValueMethods = this.OriginalDefinition.UnionTryGetValueMethods();
2970ImmutableArray<ISymbolInternal> INamedTypeSymbolInternal.GetMembers()
2973ImmutableArray<ISymbolInternal> INamedTypeSymbolInternal.GetMembers(string name)
Symbols\ReferenceManager.cs (41)
141protected override ImmutableArray<AssemblySymbol> GetNoPiaResolutionAssemblies(AssemblySymbol candidateAssembly)
148return ImmutableArray<AssemblySymbol>.Empty;
261var peReferences = assembly.AssemblyReferences.SelectAsArray(MapAssemblyIdentityToResolvedSymbol, referencedAssembliesByIdentity);
267var unifiedAssemblies = this.UnifiedAssemblies.WhereAsArray(
322private void InitializeAssemblyReuseData(AssemblySymbol assemblySymbol, ImmutableArray<AssemblySymbol> referencedAssemblies, ImmutableArray<UnifiedAssembly<AssemblySymbol>> unifiedAssemblies)
331var assemblyModules = assemblySymbol.Modules;
332var referencedModulesReferences = this.ReferencedModulesReferences;
351ImmutableArray<MetadataReference> boundReferenceDirectives;
352ImmutableArray<AssemblyData> referencedAssemblies;
353ImmutableArray<PEModule> modules; // To make sure the modules are not collected ahead of time.
354ImmutableArray<MetadataReference> explicitReferences;
356ImmutableArray<ResolvedReference> referenceMap = ResolveMetadataReferences(
367var explicitAssemblyData = referencedAssemblies.Insert(0, assemblyBeingBuiltData);
372ImmutableArray<MetadataReference> implicitlyResolvedReferences;
373ImmutableArray<ResolvedReference> implicitlyResolvedReferenceMap;
374ImmutableArray<AssemblyData> allAssemblyData;
400var references = explicitReferences.AddRange(implicitlyResolvedReferences);
404ImmutableArray<ImmutableArray<string>> aliasesOfReferencedAssemblies;
405Dictionary<MetadataReference, ImmutableArray<MetadataReference>>? mergedAssemblyReferencesMapOpt;
463ImmutableArray<ModuleReferences<AssemblySymbol>> moduleReferences;
539ImmutableArray<AssemblyData> assemblies,
566var noPiaResolutionAssemblies = sourceAssembly.Modules[0].GetReferencedAssemblySymbols();
618private static void UpdateSymbolCacheNoLock(List<int> newSymbols, ImmutableArray<AssemblyData> assemblies, BoundInputAssembly[] bindingResult)
648ImmutableArray<ModuleSymbol> modules = retargetingAssemblySymbol.Modules;
654ImmutableArray<AssemblyIdentity> referencedAssemblies =
660ImmutableArray<AssemblySymbol> underlyingReferencedAssemblySymbols =
726ImmutableArray<ModuleSymbol> modules = portableExecutableAssemblySymbol.Modules;
761ImmutableArray<PEModule> modules,
765out ImmutableArray<ModuleReferences<AssemblySymbol>> moduleReferences)
767var moduleSymbols = sourceAssembly.Modules;
864private ImmutableArray<AssemblySymbol> _assemblies;
866private readonly ImmutableArray<AssemblyIdentity> _referencedAssemblies;
871ImmutableArray<AssemblyIdentity> referencedAssemblies,
892public override ImmutableArray<AssemblySymbol> AvailableSymbols
914public override ImmutableArray<AssemblyIdentity> AssemblyReferences
1093private static ImmutableArray<AssemblyIdentity> GetReferencedAssemblies(CSharpCompilation compilation)
1096var modules = compilation.Assembly.Modules;
1099var sourceReferencedAssemblies = modules[0].GetReferencedAssemblies();
1100var sourceReferencedAssemblySymbols = modules[0].GetReferencedAssemblySymbols();
Symbols\Retargeting\RetargetingSymbolTranslator.cs (49)
190var newModifiers = RetargetModifiers(underlyingType.CustomModifiers, out modifiersHaveChanged);
610ImmutableArray<AssemblySymbol> assembliesToEmbedTypesFrom = this.UnderlyingModule.GetAssembliesToEmbedTypesFrom();
623ImmutableArray<AssemblySymbol> linkedAssemblies = RetargetingAssembly.GetLinkedReferencedAssemblies();
713internal ImmutableArray<CustomModifier> RetargetModifiers(ImmutableArray<CustomModifier> oldModifiers, out bool modifiersHaveChanged)
763var newRefModifiers = RetargetModifiers(signature.RefCustomModifiers, out bool symbolModified);
766var newParameterTypes = ImmutableArray<TypeWithAnnotations>.Empty;
767ImmutableArray<ImmutableArray<CustomModifier>> newParamModifiers = default;
773var newParameterCustomModifiersBuilder = ArrayBuilder<ImmutableArray<CustomModifier>>.GetInstance(paramCount);
779var newModifiers = RetargetModifiers(parameter.RefCustomModifiers, out bool customModifiersChanged);
827public ImmutableArray<Symbol> Retarget(ImmutableArray<Symbol> arr)
834public ImmutableArray<NamedTypeSymbol> Retarget(ImmutableArray<NamedTypeSymbol> sequence)
848public ImmutableArray<TypeSymbol> Retarget(ImmutableArray<TypeSymbol> sequence)
860public ImmutableArray<TypeWithAnnotations> Retarget(ImmutableArray<TypeWithAnnotations> sequence)
867public ImmutableArray<TypeParameterSymbol> Retarget(ImmutableArray<TypeParameterSymbol> list)
1002var targetParams = method.Parameters.SelectAsArray(
1027ImmutableArray<MethodSymbol>.Empty);
1076var targetParams = property.Parameters.SelectAsArray(
1093ImmutableArray<PropertySymbol>.Empty);
1129internal ImmutableArray<CustomModifier> RetargetModifiers(
1130ImmutableArray<CustomModifier> oldModifiers,
1131ref ImmutableArray<CustomModifier> lazyCustomModifiers)
1136ImmutableArray<CustomModifier> newModifiers = this.RetargetModifiers(oldModifiers, out modifiersHaveChanged);
1137ImmutableInterlocked.InterlockedCompareExchange(ref lazyCustomModifiers, newModifiers, default(ImmutableArray<CustomModifier>));
1143private ImmutableArray<CSharpAttributeData> RetargetAttributes(ImmutableArray<CSharpAttributeData> oldAttributes)
1178ImmutableArray<TypedConstant> oldAttributeCtorArguments = oldAttributeData.CommonConstructorArguments;
1179ImmutableArray<TypedConstant> newAttributeCtorArguments = RetargetAttributeConstructorArguments(oldAttributeCtorArguments);
1181ImmutableArray<KeyValuePair<string, TypedConstant>> oldAttributeNamedArguments = oldAttributeData.CommonNamedArguments;
1182ImmutableArray<KeyValuePair<string, TypedConstant>> newAttributeNamedArguments = RetargetAttributeNamedArguments(oldAttributeNamedArguments);
1195private ImmutableArray<TypedConstant> RetargetAttributeConstructorArguments(ImmutableArray<TypedConstant> constructorArguments)
1197ImmutableArray<TypedConstant> retargetedArguments = constructorArguments;
1230var newArray = RetargetAttributeConstructorArguments(oldConstant.Values);
1264private ImmutableArray<KeyValuePair<string, TypedConstant>> RetargetAttributeNamedArguments(ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments)
1266var retargetedArguments = namedArguments;
1302internal ImmutableArray<CSharpAttributeData> GetRetargetedAttributes(
1303ImmutableArray<CSharpAttributeData> underlyingAttributes,
1304ref ImmutableArray<CSharpAttributeData> lazyCustomAttributes)
1309ImmutableArray<CSharpAttributeData> retargetedAttributes = this.RetargetAttributes(underlyingAttributes);
1311ImmutableInterlocked.InterlockedCompareExchange(ref lazyCustomAttributes, retargetedAttributes, default(ImmutableArray<CSharpAttributeData>));
Symbols\Source\ParameterHelpers.cs (30)
20public static ImmutableArray<SourceParameterSymbol> MakeParameters(
115public static ImmutableArray<FunctionPointerParameterSymbol> MakeFunctionPointerParameters(
142ImmutableArray<CustomModifier> customModifiers = refKind switch
147_ => ImmutableArray<CustomModifier>.Empty
166private static ImmutableArray<TParameterSymbol> MakeParameters<TParameterSyntax, TParameterSymbol, TOwningSymbol>(
206ImmutableArray<TParameterSymbol> parameters = builder.ToImmutableAndFree();
211var typeParameters = (object?)methodOwner != null ?
215ImmutableArray<ParameterSymbol> parametersForNameConflict = parameters.Cast<TParameterSymbol, ParameterSymbol>();
327internal static void EnsureRefKindAttributesExist(PEModuleBuilder moduleBuilder, ImmutableArray<ParameterSymbol> parameters)
332internal static void EnsureRefKindAttributesExist(CSharpCompilation? compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics, bool modifyCompilation)
344private static void EnsureRefKindAttributesExist(CSharpCompilation compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag? diagnostics, bool modifyCompilation, PEModuleBuilder? moduleBuilder)
373internal static void EnsureParamCollectionAttributeExists(PEModuleBuilder moduleBuilder, ImmutableArray<ParameterSymbol> parameters)
381internal static void EnsureParamCollectionAttributeExists(CSharpCompilation compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics, bool modifyCompilation)
389internal static void EnsureNativeIntegerAttributeExists(PEModuleBuilder moduleBuilder, ImmutableArray<ParameterSymbol> parameters)
395internal static void EnsureNativeIntegerAttributeExists(CSharpCompilation? compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics, bool modifyCompilation)
412private static void EnsureNativeIntegerAttributeExists(CSharpCompilation compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag? diagnostics, bool modifyCompilation, PEModuleBuilder? moduleBuilder)
457internal static void EnsureScopedRefAttributeExists(PEModuleBuilder moduleBuilder, ImmutableArray<ParameterSymbol> parameters)
462internal static void EnsureScopedRefAttributeExists(CSharpCompilation? compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics, bool modifyCompilation)
474private static void EnsureScopedRefAttributeExists(CSharpCompilation compilation, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag? diagnostics, bool modifyCompilation, PEModuleBuilder? moduleBuilder)
492internal static void EnsureNullableAttributeExists(PEModuleBuilder moduleBuilder, Symbol container, ImmutableArray<ParameterSymbol> parameters)
497internal static void EnsureNullableAttributeExists(CSharpCompilation? compilation, Symbol container, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag? diagnostics, bool modifyCompilation)
509private static void EnsureNullableAttributeExists(CSharpCompilation compilation, Symbol container, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag? diagnostics, bool modifyCompilation, PEModuleBuilder? moduleBuilder)
530internal static void CheckUnderspecifiedGenericExtension(Symbol extensionMember, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics)
552static void reportUnusedExtensionTypeParameters(Symbol extensionMember, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics, NamedTypeSymbol extension, ParameterSymbol extensionParameter, PooledHashSet<TypeParameterSymbol> usedTypeParameters)
1200internal static ImmutableArray<CustomModifier> ConditionallyCreateInModifiers(RefKind refKind, bool addRefReadOnlyModifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1208return ImmutableArray<CustomModifier>.Empty;
1212internal static ImmutableArray<CustomModifier> CreateInModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1218private static ImmutableArray<CustomModifier> CreateRefReadonlyParameterModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1224internal static ImmutableArray<CustomModifier> CreateOutModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1229private static ImmutableArray<CustomModifier> CreateModifiers(WellKnownType modifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
Symbols\Source\SourceAssemblySymbol.cs (42)
61private readonly ImmutableArray<ModuleSymbol> _modules;
114private ImmutableArray<Diagnostic> _unusedFieldWarnings;
120ImmutableArray<PEModule> netModules)
560internal override ImmutableArray<byte> PublicKey
565public override ImmutableArray<ModuleSymbol> Modules
574public override ImmutableArray<Location> Locations
1063ImmutableArray<NamespaceSymbol> constituent = mergedNs.ConstituentNamespaces;
1191ImmutableArray<CSharpAttributeData> appliedSourceAttributes = this.GetSourceAttributesBag().Attributes;
1281private ImmutableArray<CSharpAttributeData> GetNetModuleAttributes(out ImmutableArray<string> netModuleNames)
1305netModuleNames = ImmutableArray<string>.Empty;
1306return ImmutableArray<CSharpAttributeData>.Empty;
1314ImmutableArray<CSharpAttributeData> attributesFromNetModules,
1315ImmutableArray<string> netModuleNames,
1373ImmutableArray<string> netModuleNames;
1374ImmutableArray<CSharpAttributeData> attributesFromNetModules = GetNetModuleAttributes(out netModuleNames);
1470ImmutableArray<string> netModuleNames;
1471ImmutableArray<CSharpAttributeData> attributesFromNetModules = GetNetModuleAttributes(out netModuleNames);
1484WellKnownAttributeData limitedDecodeWellKnownAttributes(ImmutableArray<CSharpAttributeData> attributesFromNetModules,
1485ImmutableArray<string> netModuleNames, QuickAttributes attributeMatches)
1551internal ImmutableArray<SyntaxList<AttributeListSyntax>> GetAttributeDeclarations()
1554var declarations = DeclaringCompilation.MergedRootDeclaration.Declarations;
1596public sealed override ImmutableArray<CSharpAttributeData> GetAttributes()
1598var attributes = this.GetSourceAttributesBag().Attributes;
1599var netmoduleAttributes = this.GetNetModuleAttributesBag().Attributes;
1853internal override ImmutableArray<AssemblySymbol> GetNoPiaResolutionAssemblies()
1858internal override void SetNoPiaResolutionAssemblies(ImmutableArray<AssemblySymbol> assemblies)
1863internal override ImmutableArray<AssemblySymbol> GetLinkedReferencedAssemblies()
1867return default(ImmutableArray<AssemblySymbol>);
1870internal override void SetLinkedReferencedAssemblies(ImmutableArray<AssemblySymbol> assemblies)
1998ImmutableArray<TypedConstant>.Empty,
2060private static bool ContainsExtensions(ImmutableArray<ModuleSymbol> modules)
2122internal override IEnumerable<ImmutableArray<byte>> GetInternalsVisibleToPublicKeys(string simpleName)
2131return SpecializedCollections.EmptyEnumerable<ImmutableArray<byte>>();
2133ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, string>> result = null;
2137return (result != null) ? result.Keys : SpecializedCollections.EmptyEnumerable<ImmutableArray<byte>>();
2197private ConcurrentDictionary<string, ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, string>>> _lazyInternalsVisibleToMap;
2275ref ConcurrentDictionary<string, ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, string>>> lazyInternalsVisibleToMap)
2309new ConcurrentDictionary<string, ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, String>>>(StringComparer.OrdinalIgnoreCase), null);
2329ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, string>> keys = null;
2336keys = new ConcurrentDictionary<ImmutableArray<byte>, Tuple<Location, String>>();
2686internal ImmutableArray<Diagnostic> GetUnusedFieldWarnings(CancellationToken cancellationToken)
Symbols\Source\SourceComplexParameterSymbol.cs (21)
142internal override ImmutableArray<int> InterpolatedStringHandlerArgumentIndexes
353ImmutableArray<LocalSymbol>.Empty,
481ImmutableArray<ParameterSymbol> implParameters = this.ContainingSymbol.GetPartialImplementationPart()?.GetParameters() ?? default;
497ImmutableArray<ParameterSymbol> defParameters = this.ContainingSymbol.GetPartialDefinitionPart()?.GetParameters() ?? default;
614public ImmutableArray<(CSharpAttributeData, BoundAttribute)> BindParameterAttributes()
683var constructorArguments = attributeData.CommonConstructorArguments;
719var parameters = containingSymbol.GetParameters();
910var arguments = attribute.CommonConstructorArguments;
1311ImmutableArray<ParameterSymbol> containingSymbolParameters = ContainingSymbol.GetParameters();
1314ImmutableArray<int> parameterOrdinals;
1445internal override void PostDecodeWellKnownAttributes(ImmutableArray<CSharpAttributeData> boundAttributes, ImmutableArray<AttributeSyntax> allAttributeSyntaxNodes, BindingDiagnosticBag diagnostics, AttributeLocation symbolPart, WellKnownAttributeData decodedData)
1529var attributes = GetAttributes();
1572public abstract override ImmutableArray<CustomModifier> RefCustomModifiers { get; }
1648if (!binder.HasCollectionExpressionApplicableAddMethod(syntax, Type, out ImmutableArray<MethodSymbol> addMethods, diagnostics))
1698var collectionBuilderMethods = binder.GetCollectionBuilderMethods(
1776public override ImmutableArray<CustomModifier> RefCustomModifiers => ImmutableArray<CustomModifier>.Empty;
1781private readonly ImmutableArray<CustomModifier> _refCustomModifiers;
1789ImmutableArray<CustomModifier> refCustomModifiers,
1808public override ImmutableArray<CustomModifier> RefCustomModifiers => _refCustomModifiers;
Symbols\Source\SourceMemberContainerSymbol.cs (214)
188private ImmutableArray<DiagnosticInfo> _managedKindUseSiteDiagnostics;
189private ImmutableArray<AssemblySymbol> _managedKindUseSiteDependencies;
198private ImmutableArray<SynthesizedSimpleProgramEntryPointSymbol> _lazySimpleProgramEntryPoints;
205private Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? _lazyMembersDictionary;
206private Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? _lazyEarlyAttributeDecodingMembersDictionary;
208private static readonly Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> s_emptyTypeMembers =
209new Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>(EmptyReadOnlyMemoryOfCharComparer.Instance);
211private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? _lazyTypeMembers;
212private ImmutableArray<Symbol> _lazyMembersFlattened;
223private ImmutableArray<NamedTypeSymbol> _lazyClosedSubtypeCandidates;
621var tmp = this.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics; // force type arguments
677ImmutableArray<Symbol> members = this.GetMembersUnordered();
860ImmutableInterlocked.InterlockedInitialize(ref _managedKindUseSiteDiagnostics, managedKindUseSiteInfo.Diagnostics?.ToImmutableArray() ?? ImmutableArray<DiagnosticInfo>.Empty);
861ImmutableInterlocked.InterlockedInitialize(ref _managedKindUseSiteDependencies, managedKindUseSiteInfo.Dependencies?.ToImmutableArray() ?? ImmutableArray<AssemblySymbol>.Empty);
867ImmutableArray<DiagnosticInfo> useSiteDiagnostics = _managedKindUseSiteDiagnostics;
876ImmutableArray<AssemblySymbol> useSiteDependencies = _managedKindUseSiteDependencies;
904internal sealed override ImmutableArray<NamedTypeSymbol> CandidateClosedSubtypeDefinitions
920ImmutableArray<NamedTypeSymbol> findClosedSubtypes()
937var nestedTypes = namedType.GetTypeMembers();
945var members = namespaceOrType.GetMembers();
1103public sealed override ImmutableArray<Location> Locations
1104=> ImmutableArray<Location>.CastUp(declaration.NameLocations.ToImmutable());
1109public ImmutableArray<SyntaxReference> SyntaxReferences
1117public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
1128var declarations = declaration.Declarations;
1163internal readonly ImmutableArray<Symbol> NonTypeMembers;
1164internal readonly ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> StaticInitializers;
1165internal readonly ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> InstanceInitializers;
1172ImmutableArray<Symbol> nonTypeMembers,
1173ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> staticInitializers,
1174ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> instanceInitializers,
1198internal ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> StaticInitializers
1203internal ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> InstanceInitializers
1256var allInitializers = isStatic ? membersAndInitializers.StaticInitializers : membersAndInitializers.InstanceInitializers;
1282static bool findInitializer(ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> initializers, int position, SyntaxTree tree,
1286foreach (var group in initializers)
1311static int getGroupLength(ImmutableArray<FieldOrPropertyInitializer> initializers)
1322static int getPrecedingInitializersLength(ImmutableArray<FieldOrPropertyInitializer> initializers, int index)
1333static int getInitializersLength(ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> initializers)
1336foreach (var group in initializers)
1359private static int IndexOfInitializerContainingPosition(ImmutableArray<FieldOrPropertyInitializer> initializers, int position)
1389internal override ImmutableArray<NamedTypeSymbol> GetTypeMembersUnordered()
1394public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
1399public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
1401ImmutableArray<NamedTypeSymbol> members;
1407return ImmutableArray<NamedTypeSymbol>.Empty;
1410public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
1415private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> GetTypeMembersDictionary()
1433private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> MakeTypeMembers(BindingDiagnosticBag diagnostics)
1588internal override ImmutableArray<Symbol> GetMembersUnordered()
1590var result = _lazyMembersFlattened;
1602public override ImmutableArray<Symbol> GetMembers()
1610var allMembers = this.GetMembersUnordered();
1624public sealed override ImmutableArray<Symbol> GetMembers(string name)
1626ImmutableArray<Symbol> members;
1632return ImmutableArray<Symbol>.Empty;
1643internal override ImmutableArray<Symbol> GetSimpleNonTypeMembers(string name)
1650return ImmutableArray<Symbol>.Empty;
1693internal override ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers()
1705internal override ImmutableArray<Symbol> GetEarlyAttributeDecodingMembers(string name)
1707ImmutableArray<Symbol> result;
1708return GetEarlyAttributeDecodingMembersDictionary().TryGetValue(name.AsMemory(), out result) ? result : ImmutableArray<Symbol>.Empty;
1711private Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> GetEarlyAttributeDecodingMembersDictionary()
1715if (Volatile.Read(ref _lazyMembersDictionary) is Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> result)
1725Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName;
1748private static Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> ToNameKeyedDictionary(ImmutableArray<Symbol> symbols)
1752return new Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>(1, ReadOnlyMemoryOfCharComparer.Instance)
1760return new Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>(ReadOnlyMemoryOfCharComparer.Instance);
1773var dictionary = new Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>(accumulator.Count, ReadOnlyMemoryOfCharComparer.Instance);
1899protected Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> GetMembersByName()
1909private Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> GetMembersByNameSlow()
2012var interfaces = GetInterfacesToEmit();
2173Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? typesByName,
2174Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2223Symbol? lastSym = typesByName?.TryGetValue(name, out var types) == true ? types.FirstOrDefault() : null;
2431BindingDiagnosticBag diagnostics, Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName)
2440foreach (var members in membersByName.Values)
2500Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2570Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2571Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? typesByName,
2572ImmutableArray<Symbol> membersUnordered,
2587Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? membersByName;
2588ImmutableArray<Symbol> membersUnordered;
2599static (Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? membersByName, ImmutableArray<Symbol> membersUnordered) mergeMembersInGroup(IGrouping<string, NamedTypeSymbol> grouping)
2601Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? membersByName = null;
2602ImmutableArray<Symbol> membersUnordered = [];
2609Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByNameToMerge = ((SourceMemberContainerTypeSymbol)extension).GetMembersByName();
2629membersByName = new Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>(membersByName, ReadOnlyMemoryOfCharComparer.Instance);
2644if (membersByName.TryGetValue(pair.Key, out var members))
2659static ImmutableArray<Symbol> concatMembers(ImmutableArray<Symbol> existingMembers, NamedTypeSymbol extension, ImmutableArray<Symbol> newMembers, ref ImmutableArray<Symbol> membersUnordered)
2728Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2729ImmutableArray<Symbol> membersUnordered,
2801foreach (var valuesByName in GetMembersByName().Values)
2858foreach (var valuesByName in GetMembersByName().Values)
2880Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2922Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2961Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
2964if (membersByName.TryGetValue(operatorName1.AsMemory(), out ImmutableArray<Symbol> candidates))
3288private Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> MakeAllMembers()
3290Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName;
3312Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
3313Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> typesByName)
3315foreach ((ReadOnlyMemory<char> name, ImmutableArray<NamedTypeSymbol> types) in typesByName)
3317ImmutableArray<Symbol> typesAsSymbols = StaticCast<Symbol>.From(types);
3319ImmutableArray<Symbol> membersForName;
3394public readonly ImmutableArray<Symbol> NonTypeMembersWithPartialImplementations;
3395public readonly ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> StaticInitializers;
3396public readonly ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> InstanceInitializers;
3403private ImmutableArray<Symbol> _lazyNonTypeMembers;
3412ImmutableArray<Symbol> nonTypeMembersWithPartialImplementations,
3413ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> staticInitializers,
3414ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> instanceInitializers,
3440public static void AssertInitializers(ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> initializers, CSharpCompilation compilation)
3448foreach (ImmutableArray<FieldOrPropertyInitializer> group in initializers)
3472public ImmutableArray<Symbol> GetNonTypeMembers(SourceMemberContainerTypeSymbol container)
3500var nonTypeMembers = NonTypeMembers?.ToImmutableAndFree() ?? declaredMembers.GetNonTypeMembers(container);
3502var instanceInitializers = InstanceInitializersForPositionalMembers is null
3515ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> mergeInitializers()
3543ArrayBuilder<ImmutableArray<FieldOrPropertyInitializer>> groupsBuilder;
3550var declaredInitializers = declaredMembers.InstanceInitializers[insertAt];
3560groupsBuilder = ArrayBuilder<ImmutableArray<FieldOrPropertyInitializer>>.GetInstance(groupCount);
3570groupsBuilder = ArrayBuilder<ImmutableArray<FieldOrPropertyInitializer>>.GetInstance(groupCount + 1);
3577var result = groupsBuilder.ToImmutableAndFree();
3603var declaredNonTypeMembers = declaredMembers.GetNonTypeMembers(container);
3634internal static ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> ToReadOnlyAndFree(ArrayBuilder<ArrayBuilder<FieldOrPropertyInitializer>> initializers)
3639return ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>>.Empty;
3642var builder = ArrayBuilder<ImmutableArray<FieldOrPropertyInitializer>>.GetInstance(initializers.Count);
3752private void MergePartialMembersAndInitializeNonTypeMembers(ImmutableArray<Symbol> nonTypeMembersWithPartialImplementations, ref ImmutableArray<Symbol> nonTypeMembers)
3798internal ImmutableArray<SynthesizedSimpleProgramEntryPointSymbol> GetSimpleProgramEntryPoints()
3804var simpleProgramEntryPoints = buildSimpleProgramEntryPoint(diagnostics);
3817ImmutableArray<SynthesizedSimpleProgramEntryPointSymbol> buildSimpleProgramEntryPoint(BindingDiagnosticBag diagnostics)
3822return ImmutableArray<SynthesizedSimpleProgramEntryPointSymbol>.Empty;
3846return ImmutableArray<SynthesizedSimpleProgramEntryPointSymbol>.Empty;
3880ImmutableArray<Symbol> nonTypeMembersToCheck;
3926internal ImmutableArray<Symbol> GetMembersToMatchAgainstDeclarationSpan()
3944internal ImmutableArray<Symbol> GetCandidateMembersForLookup(string name)
3954ImmutableArray<Symbol> nonTypeMembersToCheck;
3977ImmutableArray<Symbol> types = GetTypeMembers(name).Cast<NamedTypeSymbol, Symbol>();
4548Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
4569foreach (var symbol in membersByName.TryGetValue(accessorName.AsMemory(), out var members) ? members : [])
4599Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>> membersByName,
4608foreach (var symbol in membersByName.TryGetValue(accessorName.AsMemory(), out var members) ? members : [])
4653private static bool ParametersMatchPropertyAccessor(PropertySymbol propertySymbol, bool getNotSet, ImmutableArray<ParameterSymbol> methodParams)
4655var propertyParams = propertySymbol.Parameters;
4684private static bool ParametersMatchEventAccessor(EventSymbol eventSymbol, ImmutableArray<ParameterSymbol> methodParams)
4756private static void CheckInterfaceMembers(ImmutableArray<Symbol> nonTypeMembers, BindingDiagnosticBag diagnostics)
4811private void CheckExtensionMembers(ImmutableArray<Symbol> members, LanguageVersion languageVersion, BindingDiagnosticBag diagnostics)
4943var simpleProgramEntryPoints = GetSimpleProgramEntryPoints();
5117var existingOrAddedMembers = addProperties(ctor.Parameters);
5168void addDeconstruct(SynthesizedPrimaryConstructor ctor, ImmutableArray<Symbol> positionalMembers)
5177ImmutableArray<TypeParameterSymbol>.Empty,
5179ImmutableArray<CustomModifier>.Empty,
5188ImmutableArray<CustomModifier>.Empty,
5189ImmutableArray<MethodSymbol>.Empty);
5224ImmutableArray<TypeParameterSymbol>.Empty,
5227ImmutableArray<CustomModifier>.Empty,
5236ImmutableArray<CustomModifier>.Empty,
5237ImmutableArray<MethodSymbol>.Empty);
5277ImmutableArray<TypeParameterSymbol>.Empty,
5280ImmutableArray<CustomModifier>.Empty,
5288refCustomModifiers: ImmutableArray<CustomModifier>.Empty,
5289explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty);
5337ImmutableArray<TypeParameterSymbol>.Empty,
5338ImmutableArray<ParameterSymbol>.Empty,
5343refCustomModifiers: ImmutableArray<CustomModifier>.Empty,
5344explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty);
5406ImmutableArray<Symbol> addProperties(ImmutableArray<ParameterSymbol> recordParameters)
5417ImmutableArray<ParameterSymbol>.Empty,
5420ImmutableArray<CustomModifier>.Empty,
5422ImmutableArray<PropertySymbol>.Empty);
5511ImmutableArray<TypeParameterSymbol>.Empty,
5512ImmutableArray<ParameterSymbol>.Empty,
5517ImmutableArray<CustomModifier>.Empty,
5518ImmutableArray<MethodSymbol>.Empty);
5543ImmutableArray<ParameterSymbol>.Empty,
5546ImmutableArray<CustomModifier>.Empty,
5548ImmutableArray<PropertySymbol>.Empty);
5604ImmutableArray<TypeParameterSymbol>.Empty,
5607ImmutableArray<CustomModifier>.Empty,
5616ImmutableArray<CustomModifier>.Empty,
5617ImmutableArray<MethodSymbol>.Empty);
5750static bool hasNonConstantInitializer(ImmutableArray<ImmutableArray<FieldOrPropertyInitializer>> initializers)
6341public static readonly SynthesizedExplicitImplementations Empty = new SynthesizedExplicitImplementations(ImmutableArray<SynthesizedExplicitImplementationForwardingMethod>.Empty,
6342ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)>.Empty);
6344public readonly ImmutableArray<SynthesizedExplicitImplementationForwardingMethod> ForwardingMethods;
6345public readonly ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> MethodImpls;
6348ImmutableArray<SynthesizedExplicitImplementationForwardingMethod> forwardingMethods,
6349ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> methodImpls)
6356ImmutableArray<SynthesizedExplicitImplementationForwardingMethod> forwardingMethods,
6357ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> methodImpls)
Symbols\Source\SourceNamedTypeSymbol_Bases.cs (20)
24private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> _lazyDeclaredBases;
27private ImmutableArray<NamedTypeSymbol> _lazyInterfaces;
66internal sealed override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol> basesBeingResolved)
72return ImmutableArray<NamedTypeSymbol>.Empty;
76var acyclicInterfaces = MakeAcyclicInterfaces(basesBeingResolved, diagnostics);
77if (ImmutableInterlocked.InterlockedCompareExchange(ref _lazyInterfaces, acyclicInterfaces, default(ImmutableArray<NamedTypeSymbol>)).IsDefault)
255internal Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> GetDeclaredBases(ConsList<TypeSymbol> basesBeingResolved)
275internal override ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved)
280private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> MakeDeclaredBases(ConsList<TypeSymbol> basesBeingResolved, BindingDiagnosticBag diagnostics)
285return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(null, ImmutableArray<NamedTypeSymbol>.Empty);
300Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> one = MakeOneDeclaredBases(newBasesBeingResolved, decl, diagnostics);
304var partInterfaces = one.Item2;
448var baseInterfacesRO = baseInterfaces.ToImmutableAndFree();
470return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(baseType, baseInterfacesRO);
493private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> MakeOneDeclaredBases(ConsList<TypeSymbol> newBasesBeingResolved, SingleTypeDeclaration decl, BindingDiagnosticBag diagnostics)
683return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(localBase, localInterfaces.ToImmutableAndFree());
719private ImmutableArray<NamedTypeSymbol> MakeAcyclicInterfaces(ConsList<TypeSymbol> basesBeingResolved, BindingDiagnosticBag diagnostics)
726return ImmutableArray<NamedTypeSymbol>.Empty;
729var declaredInterfaces = GetDeclaredInterfaces(basesBeingResolved: basesBeingResolved);
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (15)
111ImmutableArray<TypeWithAnnotations> typeConstraints = typeParameter.GetConstraintTypes(ConsList<TypeParameterSymbol>.Empty);
157static void AppendClrType(TypeSymbol type, ImmutableArray<CustomModifier> modifiers, StringBuilder builder)
323var parameters = signature.Parameters;
344static void appendModifiers(ImmutableArray<CustomModifier> customModifiers, StringBuilder builder)
508ImmutableArray<string?> elementNames = namedType.TupleElementNames;
509ImmutableArray<TypeWithAnnotations> tupleElementTypes = namedType.TupleElementTypesWithAnnotations;
575ImmutableArray<TypeWithAnnotations> typeArguments = namedType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
664ImmutableArray<TypeWithAnnotations> contraintTypes = typeParam.ConstraintTypesNoUseSiteDiagnostics;
723ImmutableArray<ParameterSymbol> parameters = signature.Parameters;
762static void appendCallingConventionTypes(ImmutableArray<NamedTypeSymbol> callingConventionTypes, StringBuilder builder)
785static void appendAttributes(ImmutableArray<CSharpAttributeData> attributes, StringBuilder builder)
1230ImmutableArray<TypeWithAnnotations> typeArguments = MethodTypeInferrer.InferTypeArgumentsFromReceiverType(extension, receiverValue, compilation, conversions, ref discardedUseSiteInfo);
1237ImmutableArray<TypeWithAnnotations> typeArgsForConstruct = fillNotInferredTypeArguments(extension, typeArguments, out wasExtensionFullyInferred);
1252static ImmutableArray<TypeWithAnnotations> fillNotInferredTypeArguments(NamedTypeSymbol extension, ImmutableArray<TypeWithAnnotations> typeArgs, out bool wasFullyInferred)
Symbols\Source\SourceNamedTypeSymbol.cs (54)
144private ImmutableArray<TypeParameterSymbol> MakeTypeParameters(BindingDiagnosticBag diagnostics)
148return ImmutableArray<TypeParameterSymbol>.Empty;
273internal ImmutableArray<TypeWithAnnotations> GetTypeParameterConstraintTypes(int ordinal)
275var constraintTypes = GetTypeParameterConstraintTypes();
276return (constraintTypes.Length > 0) ? constraintTypes[ordinal] : ImmutableArray<TypeWithAnnotations>.Empty;
279private ImmutableArray<ImmutableArray<TypeWithAnnotations>> GetTypeParameterConstraintTypes()
304var constraintKinds = GetTypeParameterConstraintKinds();
308private ImmutableArray<TypeParameterConstraintKind> GetTypeParameterConstraintKinds()
321private ImmutableArray<ImmutableArray<TypeWithAnnotations>> MakeTypeParameterConstraintTypes(BindingDiagnosticBag diagnostics)
323var typeParameters = this.TypeParameters;
324var results = ImmutableArray<TypeParameterConstraintClause>.Empty;
330ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>> otherPartialClauses = null;
344ImmutableArray<TypeParameterConstraintClause> constraints;
372(otherPartialClauses ??= ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>>.GetInstance()).Add(constraints);
380results = ImmutableArray<TypeParameterConstraintClause>.Empty;
402private ImmutableArray<TypeParameterConstraintKind> MakeTypeParameterConstraintKinds()
404var typeParameters = this.TypeParameters;
405var results = ImmutableArray<TypeParameterConstraintClause>.Empty;
411ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>> otherPartialClauses = null;
425ImmutableArray<TypeParameterConstraintClause> constraints;
454(otherPartialClauses ??= ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>>.GetInstance()).Add(constraints);
463results = ImmutableArray<TypeParameterConstraintClause>.Empty;
498private ImmutableArray<TypeParameterConstraintClause> MergeConstraintTypesForPartialDeclarations(ImmutableArray<TypeParameterConstraintClause> constraintClauses,
499ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>> otherPartialClauses,
508var typeParameters = TypeParameters;
517ImmutableArray<TypeWithAnnotations> originalConstraintTypes = constraint.ConstraintTypes;
524foreach (ImmutableArray<TypeParameterConstraintClause> otherPartialConstraints in otherPartialClauses)
566static bool mergeConstraints(ImmutableArray<TypeWithAnnotations> originalConstraintTypes,
636static SmallDictionary<TypeWithAnnotations, int> toDictionary(ImmutableArray<TypeWithAnnotations> constraintTypes, IEqualityComparer<TypeWithAnnotations> comparer)
652private ImmutableArray<TypeParameterConstraintClause> MergeConstraintKindsForPartialDeclarations(ImmutableArray<TypeParameterConstraintClause> constraintClauses,
653ArrayBuilder<ImmutableArray<TypeParameterConstraintClause>> otherPartialClauses)
661var typeParameters = TypeParameters;
671ImmutableArray<TypeWithAnnotations> originalConstraintTypes = constraint.ConstraintTypes;
673foreach (ImmutableArray<TypeParameterConstraintClause> otherPartialConstraints in otherPartialClauses)
704static void mergeConstraints(ref TypeParameterConstraintKind mergedKind, ImmutableArray<TypeWithAnnotations> originalConstraintTypes, TypeParameterConstraintClause clause)
745internal sealed override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotationsNoUseSiteDiagnostics
753public override ImmutableArray<TypeParameterSymbol> TypeParameters
786internal ImmutableArray<SyntaxList<AttributeListSyntax>> GetAttributeDeclarations(QuickAttributes? quickAttributes = null)
867public sealed override ImmutableArray<CSharpAttributeData> GetAttributes()
1291ImmutableArray<SyntaxList<AttributeListSyntax>> attributeLists = GetAttributeDeclarations(QuickAttributes.TypeIdentifier);
1630internal override ImmutableArray<string> GetAppliedConditionalSymbols()
1633return data != null ? data.ConditionalSymbols : ImmutableArray<string>.Empty;
1636internal override void PostDecodeWellKnownAttributes(ImmutableArray<CSharpAttributeData> boundAttributes, ImmutableArray<AttributeSyntax> allAttributeSyntaxNodes, BindingDiagnosticBag diagnostics, AttributeLocation symbolPart, WellKnownAttributeData decodedData)
1667var initializers = this.StaticInitializers;
1670foreach (var initializerGroup in initializers)
1686foreach (var initializerGroup in initializers)
1807ImmutableArray<KeyValuePair<WellKnownMember, TypedConstant>> namedArguments;
Symbols\Source\SourceNamespaceSymbol.AliasesAndUsings.cs (41)
112public ImmutableArray<AliasAndExternAliasDirective> GetExternAliases(CSharpSyntaxNode declarationSyntax)
122return ImmutableArray<AliasAndExternAliasDirective>.Empty;
132return ImmutableArray<AliasAndExternAliasDirective>.Empty;
143public ImmutableArray<AliasAndUsingDirective> GetUsingAliases(CSharpSyntaxNode declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
153return ImmutableArray<AliasAndUsingDirective>.Empty;
163return ImmutableArray<AliasAndUsingDirective>.Empty;
206public ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsingNamespacesOrTypes(CSharpSyntaxNode declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
213var result = GetGlobalUsingNamespacesOrTypes(basesBeingResolved);
227return ImmutableArray<NamespaceOrTypeAndUsingDirective>.Empty;
248private ImmutableArray<NamespaceOrTypeAndUsingDirective> GetGlobalUsingNamespacesOrTypes(ConsList<TypeSymbol>? basesBeingResolved)
319var namespacesOrTypes = GetAliasesAndUsings(singleDeclaration).GetGlobalUsingNamespacesOrTypes(this, singleDeclaration.SyntaxReference, basesBeingResolved);
355var externAliases = GetAliasesAndUsings(singleDeclaration).GetExternAliases(this, singleDeclaration.SyntaxReference);
413internal ImmutableArray<AliasAndExternAliasDirective> GetExternAliases(SourceNamespaceSymbol declaringSymbol, CSharpSyntaxNode declarationSyntax)
418internal ImmutableArray<AliasAndExternAliasDirective> GetExternAliases(SourceNamespaceSymbol declaringSymbol, SyntaxReference declarationSyntax)
446var result = buildExternAliases(externAliasDirectives, declaringSymbol, diagnostics);
465static ImmutableArray<AliasAndExternAliasDirective> buildExternAliases(
510internal ImmutableArray<AliasAndUsingDirective> GetUsingAliases(SourceNamespaceSymbol declaringSymbol, CSharpSyntaxNode declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
515internal ImmutableArray<AliasAndUsingDirective> GetGlobalUsingAliases(SourceNamespaceSymbol declaringSymbol, CSharpSyntaxNode declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
530internal ImmutableArray<NamespaceOrTypeAndUsingDirective> GetUsingNamespacesOrTypes(SourceNamespaceSymbol declaringSymbol, CSharpSyntaxNode declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
540internal ImmutableArray<NamespaceOrTypeAndUsingDirective> GetGlobalUsingNamespacesOrTypes(SourceNamespaceSymbol declaringSymbol, SyntaxReference declarationSyntax, ConsList<TypeSymbol>? basesBeingResolved)
623var externAliases = GetExternAliases(declaringSymbol, declarationSyntax);
625var globalUsingNamespacesOrTypes = ImmutableArray<NamespaceOrTypeAndUsingDirective>.Empty;
626var globalUsingAliases = ImmutableArray<AliasAndUsingDirective>.Empty;
877static PooledHashSet<NamespaceOrTypeSymbol> getOrCreateUniqueUsings(ref PooledHashSet<NamespaceOrTypeSymbol>? uniqueUsings, ImmutableArray<NamespaceOrTypeAndUsingDirective> globalUsingNamespacesOrTypes)
888static PooledHashSet<NamespaceOrTypeSymbol> getOrCreateUniqueGlobalUsingsNotInTree(ref PooledHashSet<NamespaceOrTypeSymbol>? uniqueUsings, ImmutableArray<NamespaceOrTypeAndUsingDirective> globalUsingNamespacesOrTypes, SyntaxTree tree)
899static ArrayBuilder<NamespaceOrTypeAndUsingDirective> getOrCreateUsingsBuilder(ref ArrayBuilder<NamespaceOrTypeAndUsingDirective>? usings, ImmutableArray<NamespaceOrTypeAndUsingDirective> globalUsingNamespacesOrTypes)
1112public static readonly ExternAliasesAndDiagnostics Empty = new ExternAliasesAndDiagnostics() { ExternAliases = ImmutableArray<AliasAndExternAliasDirective>.Empty, Diagnostics = ImmutableArray<Diagnostic>.Empty };
1114public ImmutableArray<AliasAndExternAliasDirective> ExternAliases { get; init; }
1115public ImmutableArray<Diagnostic> Diagnostics { get; init; }
1123UsingAliases = ImmutableArray<AliasAndUsingDirective>.Empty,
1125UsingNamespacesOrTypes = ImmutableArray<NamespaceOrTypeAndUsingDirective>.Empty,
1129public ImmutableArray<AliasAndUsingDirective> UsingAliases { get; init; }
1131public ImmutableArray<NamespaceOrTypeAndUsingDirective> UsingNamespacesOrTypes { get; init; }
1149UsingNamespacesOrTypes = ImmutableArray<NamespaceOrTypeAndUsingDirective>.Empty,
1150Diagnostics = ImmutableArray<Diagnostic>.Empty,
1155public ImmutableArray<NamespaceOrTypeAndUsingDirective> UsingNamespacesOrTypes { get; init; }
1156public ImmutableArray<Diagnostic> Diagnostics { get; init; }
1167ImmutableArray<AliasAndExternAliasDirective>.Empty),
Symbols\Source\SourceNamespaceSymbol.cs (30)
30private ImmutableArray<Location> _locations;
31private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamespaceOrTypeSymbol>> _nameToMembersMap;
32private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> _nameToTypeMembersMap;
33private ImmutableArray<Symbol> _lazyAllMembers;
34private ImmutableArray<NamedTypeSymbol> _lazyTypeMembersUnordered;
88public override ImmutableArray<Location> Locations
124public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
127private ImmutableArray<SyntaxReference> ComputeDeclaringReferencesCore()
135internal override ImmutableArray<Symbol> GetMembersUnordered()
137var result = _lazyAllMembers;
141var members = StaticCast<Symbol>.From(this.GetNameToMembersMap().Flatten(null)); // don't sort.
149public override ImmutableArray<Symbol> GetMembers()
157var allMembers = this.GetMembersUnordered();
171public override ImmutableArray<Symbol> GetMembers(ReadOnlyMemory<char> name)
173ImmutableArray<NamespaceOrTypeSymbol> members;
176: ImmutableArray<Symbol>.Empty;
179internal override ImmutableArray<NamedTypeSymbol> GetTypeMembersUnordered()
183var members = this.GetNameToTypeMembersMap().Flatten();
190public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
195public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
197ImmutableArray<NamedTypeSymbol> members;
200: ImmutableArray<NamedTypeSymbol>.Empty;
203public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
224private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamespaceOrTypeSymbol>> GetNameToMembersMap()
248private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> GetNameToTypeMembersMap()
264private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamespaceOrTypeSymbol>> MakeNameToMembersMap(BindingDiagnosticBag diagnostics)
282var result = new Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamespaceOrTypeSymbol>>(builder.Count, ReadOnlyMemoryOfCharComparer.Instance);
291private static void CheckMembers(NamespaceSymbol @namespace, Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamespaceOrTypeSymbol>> result, BindingDiagnosticBag diagnostics)
331var types = constituent.GetTypeMembers(symbol.Name, arity);
440foreach (var array in _nameToMembersMap.Values)
Symbols\Source\SourceParameterSymbol.cs (10)
58ImmutableArray<CustomModifier> inModifiers = ParameterHelpers.ConditionallyCreateInModifiers(refKind, addRefReadOnlyModifier, context, declarationDiagnostics, syntax);
118internal override ParameterSymbol WithCustomModifiersAndParams(TypeSymbol newType, ImmutableArray<CustomModifier> newCustomModifiers, ImmutableArray<CustomModifier> newRefCustomModifiers, bool newIsParams)
123internal SourceParameterSymbol WithCustomModifiersAndParamsCore(TypeSymbol newType, ImmutableArray<CustomModifier> newCustomModifiers, ImmutableArray<CustomModifier> newRefCustomModifiers, bool newIsParams)
197public sealed override ImmutableArray<CSharpAttributeData> GetAttributes()
264public sealed override ImmutableArray<Location> Locations
265=> _location is null ? ImmutableArray<Location>.Empty : ImmutableArray.Create(_location);
274public sealed override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
279ImmutableArray<SyntaxReference>.Empty :
Symbols\Source\SourceTypeParameterSymbol.cs (35)
26private readonly ImmutableArray<SyntaxReference> _syntaxRefs;
27private readonly ImmutableArray<Location> _locations;
35protected SourceTypeParameterSymbol(string name, int ordinal, ImmutableArray<Location> locations, ImmutableArray<SyntaxReference> syntaxRefs)
45public override ImmutableArray<Location> Locations
53public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
61internal ImmutableArray<SyntaxReference> SyntaxReferences
93internal override ImmutableArray<TypeWithAnnotations> GetConstraintTypes(ConsList<TypeParameterSymbol> inProgress)
96return (bounds != null) ? bounds.ConstraintTypes : ImmutableArray<TypeWithAnnotations>.Empty;
99internal override ImmutableArray<NamedTypeSymbol> GetInterfaces(ConsList<TypeParameterSymbol> inProgress)
102return (bounds != null) ? bounds.Interfaces : ImmutableArray<NamedTypeSymbol>.Empty;
117internal ImmutableArray<SyntaxList<AttributeListSyntax>> MergedAttributeDeclarationSyntaxLists
167public sealed override ImmutableArray<CSharpAttributeData> GetAttributes()
217protected abstract ImmutableArray<TypeParameterSymbol> ContainerTypeParameters
257var constraintTypes = this.ConstraintTypesNoUseSiteDiagnostics;
364var constraintTypes = this.ConstraintTypesNoUseSiteDiagnostics;
455public SourceTypeTypeParameterSymbol(SourceNamedTypeSymbol owner, string name, int ordinal, VarianceKind varianceKind, ImmutableArray<Location> locations, ImmutableArray<SyntaxReference> syntaxRefs)
574protected override ImmutableArray<TypeParameterSymbol> ContainerTypeParameters
581var constraintTypes = _owner.GetTypeParameterConstraintTypes(this.Ordinal);
598protected SourceMethodTypeParameterSymbol(string name, int ordinal, ImmutableArray<Location> locations, ImmutableArray<SyntaxReference> syntaxRefs)
641protected sealed override ImmutableArray<TypeParameterSymbol> ContainerTypeParameters
653public SourceNotOverridingMethodTypeParameterSymbol(SourceMethodSymbol owner, string name, int ordinal, ImmutableArray<Location> locations, ImmutableArray<SyntaxReference> syntaxRefs)
757var constraints = _owner.GetTypeParameterConstraintTypes();
758var constraintTypes = constraints.IsEmpty ? ImmutableArray<TypeWithAnnotations>.Empty : constraints[Ordinal];
770var constraintKinds = _owner.GetTypeParameterConstraintKinds();
816var overriddenTypeParameters = overriddenMethod.TypeParameters;
817var overridingTypeParameters = _overridingMethod.TypeParameters;
876var explicitImplementations = overridingMethod.ExplicitInterfaceImplementations;
895public SourceOverridingMethodTypeParameterSymbol(OverriddenMethodTypeParameterMapBase map, string name, int ordinal, ImmutableArray<Location> locations, ImmutableArray<SyntaxReference> syntaxRefs)
1004var constraintTypes = map.SubstituteTypes(typeParameter.ConstraintTypesNoUseSiteDiagnostics);
Symbols\Source\SynthesizedAttributeData.cs (10)
17public static SynthesizedAttributeData Create(CSharpCompilation compilation, MethodSymbol wellKnownMember, ImmutableArray<TypedConstant> arguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments)
31private readonly ImmutableArray<TypedConstant> _arguments;
32private readonly ImmutableArray<KeyValuePair<string, TypedConstant>> _namedArguments;
34internal FromMethodAndArguments(CSharpCompilation compilation, MethodSymbol wellKnownMember, ImmutableArray<TypedConstant> arguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments)
49protected internal override ImmutableArray<TypedConstant> CommonConstructorArguments => _arguments;
50protected internal override ImmutableArray<KeyValuePair<string, TypedConstant>> CommonNamedArguments => _namedArguments;
79protected internal override ImmutableArray<TypedConstant> CommonConstructorArguments => _original.CommonConstructorArguments;
80protected internal override ImmutableArray<KeyValuePair<string, TypedConstant>> CommonNamedArguments => _original.CommonNamedArguments;
Symbols\Symbol_Attributes.cs (27)
25/// Gets the attributes for this symbol. Returns an empty <see cref="ImmutableArray<AttributeData>"/> if
28public virtual ImmutableArray<CSharpAttributeData> GetAttributes()
35return ImmutableArray<CSharpAttributeData>.Empty;
264internal virtual void PostDecodeWellKnownAttributes(ImmutableArray<CSharpAttributeData> boundAttributes, ImmutableArray<AttributeSyntax> allAttributeSyntaxNodes, BindingDiagnosticBag diagnostics, AttributeLocation symbolPart, WellKnownAttributeData decodedData)
316ImmutableArray<Binder> binders;
318ImmutableArray<AttributeSyntax> attributesToBind = this.GetAttributesToBind(attributesSyntaxLists, symbolPart, diagnostics, compilation, attributeMatchesOpt, binderOpt, out binders);
322ImmutableArray<CSharpAttributeData> boundAttributes;
353ImmutableArray<NamedTypeSymbol> boundAttributeTypes = attributeTypesBuilder.AsImmutableOrNull();
397boundAttributes = ImmutableArray<CSharpAttributeData>.Empty;
429Binder.CheckRequiredMembersInObjectInitializer(ctor, ImmutableArray<BoundExpression>.CastUp(boundAttribute.NamedArguments), boundAttribute.Syntax, diagnostics);
447void removeObsoleteDiagnosticsForForwardedTypes(ImmutableArray<CSharpAttributeData> boundAttributes, ImmutableArray<AttributeSyntax> attributesToBind, ref BindingDiagnosticBag diagnostics)
545protected ImmutableArray<(CSharpAttributeData, BoundAttribute)> BindAttributes(OneOrMany<SyntaxList<AttributeListSyntax>> attributeDeclarations, Binder? rootBinder)
567private void RecordPresenceOfBadAttributes(ImmutableArray<CSharpAttributeData> boundAttributes)
589private ImmutableArray<AttributeSyntax> GetAttributesToBind(
596out ImmutableArray<Binder> binders)
663binders = ImmutableArray<Binder>.Empty;
664return ImmutableArray<AttributeSyntax>.Empty;
778ImmutableArray<Binder> binders,
779ImmutableArray<NamedTypeSymbol> boundAttributeTypes,
780ImmutableArray<AttributeSyntax> attributesToBind,
826private void EarlyDecodeWellKnownAttributeTypes(ImmutableArray<NamedTypeSymbol> attributeTypes, ImmutableArray<AttributeSyntax> attributeSyntaxList)
850ImmutableArray<Binder> binders,
851ImmutableArray<AttributeSyntax> attributeSyntaxList,
852ImmutableArray<CSharpAttributeData> boundAttributes,
Symbols\Symbol.cs (17)
316ImmutableArray<Location> ISymbolInternal.Locations => this.Locations;
416public abstract ImmutableArray<Location> Locations { get; }
423var locations = this.Locations;
487public abstract ImmutableArray<SyntaxReference> DeclaringSyntaxReferences { get; }
493internal static ImmutableArray<SyntaxReference> GetDeclaringSyntaxReferenceHelper<TNode>(ImmutableArray<Location> locations)
498return ImmutableArray<SyntaxReference>.Empty;
944var declaringReferences = this.DeclaringSyntaxReferences;
1263internal bool DeriveUseSiteInfoFromParameters(ref UseSiteInfo<AssemblySymbol> result, ImmutableArray<ParameterSymbol> parameters)
1286internal bool DeriveUseSiteInfoFromCustomModifiers(ref UseSiteInfo<AssemblySymbol> result, ImmutableArray<CustomModifier> customModifiers, AllowedRequiredModifierType allowedRequiredModifierType)
1349internal static bool GetUnificationUseSiteDiagnosticRecursive<T>(ref DiagnosticInfo result, ImmutableArray<T> types, Symbol owner, ref HashSet<TypeSymbol> checkedTypes) where T : TypeSymbol
1362internal static bool GetUnificationUseSiteDiagnosticRecursive(ref DiagnosticInfo result, ImmutableArray<TypeWithAnnotations> types, Symbol owner, ref HashSet<TypeSymbol> checkedTypes)
1375internal static bool GetUnificationUseSiteDiagnosticRecursive(ref DiagnosticInfo result, ImmutableArray<CustomModifier> modifiers, Symbol owner, ref HashSet<TypeSymbol> checkedTypes)
1388internal static bool GetUnificationUseSiteDiagnosticRecursive(ref DiagnosticInfo result, ImmutableArray<ParameterSymbol> parameters, Symbol owner, ref HashSet<TypeSymbol> checkedTypes)
1402internal static bool GetUnificationUseSiteDiagnosticRecursive(ref DiagnosticInfo result, ImmutableArray<TypeParameterSymbol> typeParameters, Symbol owner, ref HashSet<TypeSymbol> checkedTypes)
1481public ImmutableArray<SymbolDisplayPart> ToDisplayParts(SymbolDisplayFormat format = null)
1494public ImmutableArray<SymbolDisplayPart> ToMinimalDisplayParts(
Symbols\Synthesized\SynthesizedEmbeddedNullableAttributeSymbol.cs (10)
18private readonly ImmutableArray<FieldSymbol> _fields;
19private readonly ImmutableArray<MethodSymbol> _constructors;
66public override ImmutableArray<MethodSymbol> Constructors => _constructors;
76private void GenerateByteArrayConstructorBody(SyntheticBoundNodeFactory factory, ArrayBuilder<BoundStatement> statements, ImmutableArray<ParameterSymbol> parameters)
90private void GenerateSingleByteConstructorBody(SyntheticBoundNodeFactory factory, ArrayBuilder<BoundStatement> statements, ImmutableArray<ParameterSymbol> parameters)
112private readonly ImmutableArray<ParameterSymbol> _parameters;
114private readonly Action<SyntheticBoundNodeFactory, ArrayBuilder<BoundStatement>, ImmutableArray<ParameterSymbol>> _getConstructorBody;
118Func<MethodSymbol, ImmutableArray<ParameterSymbol>> getParameters,
119Action<SyntheticBoundNodeFactory, ArrayBuilder<BoundStatement>, ImmutableArray<ParameterSymbol>> getConstructorBody) :
126public override ImmutableArray<ParameterSymbol> Parameters => _parameters;
Symbols\Synthesized\SynthesizedEntryPointSymbol.cs (38)
92public override ImmutableArray<TypeParameterSymbol> TypeParameters
94get { return ImmutableArray<TypeParameterSymbol>.Empty; }
102public override ImmutableArray<Location> Locations
104get { return ImmutableArray<Location>.Empty; }
107public override ImmutableArray<SyntaxReference> DeclaringSyntaxReferences
111return ImmutableArray<SyntaxReference>.Empty;
120public override ImmutableArray<CustomModifier> RefCustomModifiers
122get { return ImmutableArray<CustomModifier>.Empty; }
125public override ImmutableArray<TypeWithAnnotations> TypeArgumentsWithAnnotations
127get { return ImmutableArray<TypeWithAnnotations>.Empty; }
222public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations
224get { return ImmutableArray<MethodSymbol>.Empty; }
279internal sealed override ImmutableArray<string> GetAppliedConditionalSymbols()
281return ImmutableArray<string>.Empty;
302ImmutableArray<BoundExpression>.Empty,
303default(ImmutableArray<string>),
304default(ImmutableArray<RefKind>),
308argsToParamsOpt: default(ImmutableArray<int>),
345private readonly ImmutableArray<ParameterSymbol> _parameters;
362var arguments = Parameters.SelectAsArray((p, s) => (BoundExpression)new BoundParameter(s, p, p.Type), _userMainReturnTypeSyntax);
371argumentNamesOpt: default(ImmutableArray<string>),
372argumentRefKindsOpt: default(ImmutableArray<RefKind>),
376argsToParamsOpt: default(ImmutableArray<int>),
397argumentNamesOpt: default(ImmutableArray<string>),
398argumentRefKindsOpt: default(ImmutableArray<RefKind>),
402argsToParamsOpt: default(ImmutableArray<int>),
430public override ImmutableArray<ParameterSymbol> Parameters => _parameters;
442locals: ImmutableArray<LocalSymbol>.Empty,
465locals: ImmutableArray<LocalSymbol>.Empty,
496public override ImmutableArray<ParameterSymbol> Parameters => ImmutableArray<ParameterSymbol>.Empty;
537locals: ImmutableArray<LocalSymbol>.Empty,
538statements: ImmutableArray<BoundStatement>.Empty,
573private readonly ImmutableArray<ParameterSymbol> _parameters;
592public override ImmutableArray<ParameterSymbol> Parameters
632argumentNamesOpt: default(ImmutableArray<string>),
633argumentRefKindsOpt: default(ImmutableArray<RefKind>),
635argsToParamsOpt: default(ImmutableArray<int>),
Symbols\Tuples\TupleTypeSymbol.cs (64)
34ImmutableArray<TypeWithAnnotations> elementTypesWithAnnotations,
35ImmutableArray<Location?> elementLocations,
36ImmutableArray<string?> elementNames,
40ImmutableArray<bool> errorPositions,
63var locations = locationOpt is null ? ImmutableArray<Location>.Empty : ImmutableArray.Create(locationOpt);
76static NamedTypeSymbol getTupleUnderlyingType(ImmutableArray<TypeWithAnnotations> elementTypes, CSharpSyntaxNode? syntax, CSharpCompilation compilation, BindingDiagnosticBag? diagnostics)
104ImmutableArray<string?> elementNames = default,
105ImmutableArray<bool> errorPositions = default,
106ImmutableArray<Location?> elementLocations = default,
107ImmutableArray<Location> locations = default)
129internal NamedTypeSymbol WithElementTypes(ImmutableArray<TypeWithAnnotations> newElementTypes)
163internal NamedTypeSymbol WithElementNames(ImmutableArray<string?> newElementNames,
164ImmutableArray<Location?> newElementLocations,
165ImmutableArray<bool> errorPositions,
166ImmutableArray<Location> locations)
234private static NamedTypeSymbol ConstructTupleUnderlyingType(NamedTypeSymbol firstTupleType, NamedTypeSymbol? chainedTupleTypeOpt, ImmutableArray<TypeWithAnnotations> elementTypes)
246var chainedTypes = ImmutableArray.Create(elementTypes, (loop - 1) * (ValueTupleRestPosition - 1), ValueTupleRestPosition - 1).Add(TypeWithAnnotations.Create(currentSymbol));
282var sourceNames = literal.ArgumentNamesOpt;
288ImmutableArray<bool> inferredNames = literal.InferredNamesOpt;
290ImmutableArray<string> destinationNames = destination.TupleElementNames;
524var members = type.GetMembers(relativeDescriptor.Name);
556public sealed override ImmutableArray<string?> TupleElementNames
559private ImmutableArray<bool> TupleErrorPositions
562private ImmutableArray<Location?> TupleElementLocations
565public sealed override ImmutableArray<TypeWithAnnotations> TupleElementTypesWithAnnotations
568public sealed override ImmutableArray<FieldSymbol> TupleElements
576protected ArrayBuilder<Symbol> MakeSynthesizedTupleMembers(ImmutableArray<Symbol> currentMembers, HashSet<Symbol>? replacedFields = null)
581var elementTypes = TupleElementTypesWithAnnotations;
593var elementNames = TupleElementNames;
594var elementLocations = TupleData!.ElementLocations;
632ImmutableArray<Location> locations = getElementLocations(in elementLocations, tupleFieldIndex);
677var errorPositions = TupleErrorPositions;
805static void collectTargetTupleFields(int arity, ImmutableArray<Symbol> members, ArrayBuilder<FieldSymbol?> fieldsForElements)
816static Symbol? getWellKnownMemberInType(ImmutableArray<Symbol> members, WellKnownMember relativeMember)
825static ImmutableArray<Symbol> getOriginalFields(ImmutableArray<Symbol> members)
848static ImmutableArray<Location> getElementLocations(in ImmutableArray<Location?> elementLocations, int tupleFieldIndex)
852return ImmutableArray<Location>.Empty;
856return elementLocation == null ? ImmutableArray<Location>.Empty : ImmutableArray.Create(elementLocation);
863ImmutableArray<string?> names1 = TupleElementNames;
864ImmutableArray<string?> names2 = other.TupleElementNames;
865ImmutableArray<string?> mergedNames;
895internal ImmutableArray<string?> ElementNames { get; }
901internal ImmutableArray<Location?> ElementLocations { get; }
908internal ImmutableArray<bool> ErrorPositions { get; }
910internal ImmutableArray<Location> Locations { get; }
915private ImmutableArray<TypeWithAnnotations> _lazyElementTypes;
917private ImmutableArray<FieldSymbol> _lazyDefaultElementFields;
933Locations = ImmutableArray<Location>.Empty;
936internal TupleExtraData(NamedTypeSymbol underlyingType, ImmutableArray<string?> elementNames,
937ImmutableArray<Location?> elementLocations, ImmutableArray<bool> errorPositions, ImmutableArray<Location> locations)
958static bool areEqual<T>(ImmutableArray<T> one, ImmutableArray<T> other)
974public ImmutableArray<TypeWithAnnotations> TupleElementTypesWithAnnotations(NamedTypeSymbol tuple)
984static ImmutableArray<TypeWithAnnotations> collectTupleElementTypesWithAnnotations(NamedTypeSymbol tuple)
986ImmutableArray<TypeWithAnnotations> elementTypes;
991var extensionTupleElementTypes = tuple.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[ValueTupleRestPosition - 1].Type.TupleElementTypesWithAnnotations;
1006public ImmutableArray<FieldSymbol> TupleElements(NamedTypeSymbol tuple)
1016ImmutableArray<FieldSymbol> collectTupleElementFields(NamedTypeSymbol tuple)
1060var members = TupleUnderlyingType.GetMembers();
Symbols\TypeMap.cs (21)
25internal static ImmutableArray<TypeWithAnnotations> TypeParametersAsTypeSymbolsWithAnnotations(ImmutableArray<TypeParameterSymbol> typeParameters)
30internal static ImmutableArray<TypeWithAnnotations> TypeParametersAsTypeSymbolsWithIgnoredAnnotations(ImmutableArray<TypeParameterSymbol> typeParameters)
35internal static ImmutableArray<TypeSymbol> AsTypeSymbols(ImmutableArray<TypeWithAnnotations> typesOpt)
41internal TypeMap(ImmutableArray<TypeParameterSymbol> from, ImmutableArray<TypeWithAnnotations> to, bool allowAlpha = false)
49internal TypeMap(ImmutableArray<TypeParameterSymbol> from, ImmutableArray<TypeParameterSymbol> to, bool allowAlpha = false)
69internal TypeMap(NamedTypeSymbol containingType, ImmutableArray<TypeParameterSymbol> typeParameters, ImmutableArray<TypeWithAnnotations> typeArguments)
102internal TypeMap WithAlphaRename(ImmutableArray<TypeParameterSymbol> oldTypeParameters, Symbol newOwner, bool propagateAttributes, out ImmutableArray<TypeParameterSymbol> newTypeParameters)
106newTypeParameters = ImmutableArray<TypeParameterSymbol>.Empty;
139internal TypeMap WithAlphaRename(NamedTypeSymbol oldOwner, NamedTypeSymbol newOwner, out ImmutableArray<TypeParameterSymbol> newTypeParameters)
145internal TypeMap WithAlphaRename(MethodSymbol oldOwner, Symbol newOwner, bool propagateAttributes, out ImmutableArray<TypeParameterSymbol> newTypeParameters)
151internal static ImmutableArray<TypeParameterSymbol> ConcatMethodTypeParameters(MethodSymbol oldOwner, MethodSymbol stopAt)
171var currentParameters = oldOwner.OriginalDefinition.TypeParameters;
194private static SmallDictionary<TypeParameterSymbol, TypeWithAnnotations> ConstructMapping(ImmutableArray<TypeParameterSymbol> from, ImmutableArray<TypeWithAnnotations> to)
Symbols\TypeWithAnnotations.cs (27)
85internal static TypeWithAnnotations Create(TypeSymbol typeSymbol, NullableAnnotation nullableAnnotation = NullableAnnotation.Oblivious, ImmutableArray<CustomModifier> customModifiers = default)
168private static TypeWithAnnotations CreateNonLazyType(TypeSymbol typeSymbol, NullableAnnotation nullableAnnotation, ImmutableArray<CustomModifier> customModifiers)
178private static TypeWithAnnotations CreateLazySubstitutedType(TypeSymbol substitutedTypeSymbol, ImmutableArray<CustomModifier> customModifiers, TypeParameterSymbol typeParameter)
250public TypeWithAnnotations WithModifiers(ImmutableArray<CustomModifier> customModifiers) =>
269public ImmutableArray<CustomModifier> CustomModifiers => _extensions.CustomModifiers;
444var newCustomModifiers = typeMap.SubstituteCustomModifiers(this.CustomModifiers);
567public TypeWithAnnotations WithTypeAndModifiers(TypeSymbol typeSymbol, ImmutableArray<CustomModifier> customModifiers) =>
661public bool ApplyNullableTransforms(byte defaultTransformFlag, ImmutableArray<byte> transforms, ref int position, out TypeWithAnnotations result)
840internal static readonly Extensions Default = new NonLazyType(customModifiers: ImmutableArray<CustomModifier>.Empty);
842internal static Extensions Create(ImmutableArray<CustomModifier> customModifiers)
854internal abstract ImmutableArray<CustomModifier> CustomModifiers { get; }
859internal abstract TypeWithAnnotations WithModifiers(TypeWithAnnotations type, ImmutableArray<CustomModifier> customModifiers);
873internal abstract TypeWithAnnotations WithTypeAndModifiers(TypeWithAnnotations type, TypeSymbol typeSymbol, ImmutableArray<CustomModifier> customModifiers);
884private readonly ImmutableArray<CustomModifier> _customModifiers;
886public NonLazyType(ImmutableArray<CustomModifier> customModifiers)
895internal override ImmutableArray<CustomModifier> CustomModifiers => _customModifiers;
907internal override TypeWithAnnotations WithModifiers(TypeWithAnnotations type, ImmutableArray<CustomModifier> customModifiers)
914internal override TypeWithAnnotations WithTypeAndModifiers(TypeWithAnnotations type, TypeSymbol typeSymbol, ImmutableArray<CustomModifier> customModifiers)
956private readonly ImmutableArray<CustomModifier> _customModifiers;
962public LazySubstitutedType(ImmutableArray<CustomModifier> customModifiers, TypeParameterSymbol typeParameter)
1010internal override ImmutableArray<CustomModifier> CustomModifiers => _customModifiers;
1012internal override TypeWithAnnotations WithModifiers(TypeWithAnnotations type, ImmutableArray<CustomModifier> customModifiers)
1017internal override TypeWithAnnotations WithTypeAndModifiers(TypeWithAnnotations type, TypeSymbol typeSymbol, ImmutableArray<CustomModifier> customModifiers)
1110internal override ImmutableArray<CustomModifier> CustomModifiers => ImmutableArray<CustomModifier>.Empty;
1112internal override TypeWithAnnotations WithModifiers(TypeWithAnnotations type, ImmutableArray<CustomModifier> customModifiers)
1128internal override TypeWithAnnotations WithTypeAndModifiers(TypeWithAnnotations type, TypeSymbol typeSymbol, ImmutableArray<CustomModifier> customModifiers)
Utilities\TypeUnionValueSet.cs (9)
26private readonly ImmutableArray<CaseInfo> _typesInUnion;
62ImmutableArray<CaseInfo> typesInUnion,
68Debug.Assert(!typesInUnion.Any(t => t.CaseType is NamedTypeSymbol { IsClosed: true } closedType && closedType.TryGetClosedSubtypes(out var subtypes) && subtypes is not []));
75internal static TypeUnionValueSet AllValues(ImmutableArray<CaseInfo> typesInUnion, ConversionsBase conversions)
80internal static TypeUnionValueSet FromTypeMatch(ImmutableArray<CaseInfo> typesInUnion, TypeSymbol type, ConversionsBase conversions, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
91private static bool AnyTypeFromUnionMightMatch(ImmutableArray<CaseInfo> typesInUnion, TypeSymbol type, ConversionsBase conversions, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
112internal static TypeUnionValueSet FromNullMatch(ImmutableArray<CaseInfo> typesInUnion, ConversionsBase conversions)
117internal static TypeUnionValueSet FromNonNullMatch(ImmutableArray<CaseInfo> typesInUnion, ConversionsBase conversions)
188&& effectiveClosedBase.TryGetClosedSubtypes(out var derivedTypes)
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryNullableDirective\CSharpRemoveUnnecessaryNullableDirectiveDiagnosticAnalyzer.cs (6)
74private static ImmutableArray<TextSpan> AnalyzeCodeBlock(CodeBlockAnalysisContext context, int positionOfFirstReducingNullableDirective)
81private ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, int positionOfFirstReducingNullableDirective, TextSpanMutableIntervalTree? codeBlockIntervalTree, TextSpanMutableIntervalTree? possibleNullableImpactIntervalTree)
213public bool TryReportNullableImpactingSpans(TextSpan span, ImmutableArray<TextSpan> nullableImpactingSpans)
217private bool TryProceedOrReportNullableImpactingSpans(TextSpan span, ImmutableArray<TextSpan>? nullableImpactingSpans)
279var nullableImpactingSpans = CSharpRemoveUnnecessaryNullableDirectiveDiagnosticAnalyzer.AnalyzeCodeBlock(context, syntaxTreeState.PositionOfFirstReducingNullableDirective.Value);
307var diagnostics = _analyzer.AnalyzeSemanticModel(context, positionOfFirstReducingNullableDirective, syntaxTreeState.IntervalTree, syntaxTreeState.PossibleNullableImpactIntervalTree);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (8)
206public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
218public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
279public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
292static ImmutableArray<ISymbol> GetCallingConventionSymbols(SemanticModel model, FunctionPointerUnmanagedCallingConventionSyntax syntax)
305private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
355var symbols = GetOrderCandidates();
392ImmutableArray<ISymbol> GetOrderCandidates()
434public ImmutableArray<IMethodSymbol> GetLocalFunctionSymbols(Compilation compilation, ISymbol symbol, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (11)
25public sealed override ImmutableArray<string> FixableDiagnosticIds { get; } =
94private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
95Document document, ImmutableArray<Diagnostic> diagnostics, CancellationToken cancellationToken)
100var containersAndLocations =
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
112var outParameters = parameterList.Parameters
120var unassignedParameters = outParameters.WhereAsArray(
134Document document, ImmutableArray<Diagnostic> diagnostics,
149MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
152protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
153SyntaxGenerator generator, ImmutableArray<IParameterSymbol> unassignedParameters)
src\roslyn\src\Analyzers\CSharp\CodeFixes\MakeLocalFunctionStatic\PassInCapturedVariablesAsArgumentsCodeFixProvider.cs (6)
29public override ImmutableArray<string> FixableDiagnosticIds { get; } = [CS8421];
50protected override Task FixAllAsync(Document document, ImmutableArray<Diagnostic> diagnostics, SyntaxEditor editor, CancellationToken cancellationToken)
62ImmutableArray<Diagnostic> diagnostics,
63Func<Document, LocalFunctionStatementSyntax, ImmutableArray<ISymbol>, Task> fixer,
74var localFunctions = diagnostics
87if (MakeLocalFunctionStaticHelper.CanMakeLocalFunctionStaticByRefactoringCaptures(localFunction, semanticModel, out var captures))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Formatting\CSharpSyntaxFormattingService.cs (8)
73public ImmutableArray<TextChange> GetFormattingChangesOnTypedCharacter(
81var formattingRules = GetFormattingRules(document, caretPosition, token);
93var changes = FormatRange(document, indentationOptions, token, formattingRules, cancellationToken);
186ParsedDocument document, IndentationOptions options, SyntaxToken token, ImmutableArray<AbstractFormattingRule> formattingRules, CancellationToken cancellationToken)
192private static ImmutableArray<TextChange> FormatRange(
196ImmutableArray<AbstractFormattingRule> formattingRules,
322private ImmutableArray<AbstractFormattingRule> GetFormattingRules(ParsedDocument document, int position, SyntaxToken tokenBeforeCaret)
337public ImmutableArray<TextChange> GetFormattingChangesOnPaste(ParsedDocument document, TextSpan textSpan, SyntaxFormattingOptions options, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (38)
111var allSymbols = symbolInfo.GetAllSymbols();
364var parentTypes = InferTypes(tupleExpression);
724ImmutableArray<ImmutableArray<IParameterSymbol>> parameterizedSymbols,
740ImmutableArray<ImmutableArray<IParameterSymbol>> parameterizedSymbols,
744using var _1 = ArrayBuilder<ImmutableArray<IParameterSymbol>>.GetInstance(out var parameterListsWithMatchingCount);
745using var _2 = ArrayBuilder<ImmutableArray<IParameterSymbol>>.GetInstance(out var parameterListsWithoutMatchingCount);
748foreach (var parameterList in parameterizedSymbols)
775ImmutableArray<ImmutableArray<IParameterSymbol>> parameterizedSymbols,
793foreach (var parameterSet in parameterizedSymbols)
837var outerTypes = InferTypes(arrayCreationExpression);
861var currentTypes = InferTypes(arrayType);
1022var parentTypes = InferTypes(binop);
1036var parentTypes = InferTypes(binop);
1338var variableTypes = GetTypes(forEachStatementSyntax.Type).ToImmutableArray();
1389var addMethodSymbols = SemanticModel.GetCollectionInitializerSymbolInfo(initializerExpression).GetAllSymbols();
1407var addMethodSymbols = SemanticModel.GetCollectionInitializerSymbolInfo(expressionOpt).GetAllSymbols();
1442var arrayTypes = this.InferTypes(implicitArray);
1498var addMethodSymbols = SemanticModel.GetCollectionInitializerSymbolInfo(expressionOpt).GetAllSymbols();
1660var elementTypes = elementTypesBuilder.ToImmutableAndFree();
1670private static ImmutableArray<NullableAnnotation> GetNullableAnnotations(ImmutableArray<ITypeSymbol> elementTypes)
1695var types = InferTypes(anonymousFunction);
1719var types = InferTypes(anonymousObject);
1997var types = InferTypes(prefixUnaryExpression);
2043var types = InferTypes(awaitExpression);
2277var laterUsageInference = InferTypeBasedOnLaterUsage(symbol, variableDeclaration);
2285private ImmutableArray<TypeInferenceInfo> InferTypeBasedOnLaterUsage(ISymbol symbol, SyntaxNode afterNode)
2306var inferredDescendantTypes = InferTypes(descendant, filterUnusable: true);
2326var elementNames = parenthesizedVariableDesignation.Variables.SelectAsArray(v => ((SingleVariableDesignationSyntax)v).Identifier.ValueText);
2327var elementTypes = parenthesizedVariableDesignation.Variables.SelectAsArray(v =>
2332var inferredFutureUsage = InferTypeBasedOnLaterUsage(symbol, afterNode: left.Parent);
2361if (!TryGetTupleTypesAndNames(tuple.Arguments, out var elementTypes, out var elementNames))
2372out ImmutableArray<ITypeSymbol> elementTypes,
2373out ImmutableArray<string> elementNames)
CodeRefactorings\ConvertLocalFunctionToMethod\CSharpConvertLocalFunctionToMethodCodeRefactoringProvider.cs (18)
80var captures = dataFlow.CapturedInside.Except(dataFlow.VariablesDeclared).Except(declaredSymbol.Parameters).ToImmutableArray();
85var capturesAsParameters = captures.SelectAsArray(
96var typeParameters = CreateFinalTypeParameterList(semanticModel, localFunction, declaredSymbol, captures);
107var parameters = declaredSymbol.Parameters;
108var finalParameterList = CreateFinalParameterList(parameters, capturesAsParameters);
135var additionalTypeParameters = typeParameters.Except(declaredSymbol.TypeParameters).ToImmutableArray();
137var additionalTypeArguments = additionalTypeParameters.SelectAsArray(p => (TypeSyntax)p.Name.ToIdentifierName());
230var reservedNames = GetReservedNames(node, semanticModel, cancellationToken);
231var parameterNames = GenerateUniqueParameterNames(parameters, reservedNames);
252private static ImmutableArray<ITypeParameterSymbol> CreateFinalTypeParameterList(
256ImmutableArray<ISymbol> captures)
277private static ImmutableArray<IParameterSymbol> CreateFinalParameterList(
278ImmutableArray<IParameterSymbol> parameters, ImmutableArray<IParameterSymbol> capturesAsParameters)
293private static ImmutableArray<string> GenerateUniqueParameterNames(ImmutableArray<IParameterSymbol> parameters, ImmutableArray<string> reservedNames)
296private static ImmutableArray<string> GetReservedNames(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
CodeRefactorings\SyncNamespace\CSharpChangeNamespaceService.cs (12)
45protected override async Task<ImmutableArray<(DocumentId, SyntaxNode)>> GetValidContainersFromAllLinkedDocumentsAsync(
72if (!IsSupportedLinkedDocument(document, out var allDocumentIds))
114ImmutableArray<string> newNamespaceParts,
211ImmutableArray<string> newNamespaceParts,
240ImmutableArray<string> declaredNamespaceParts,
241ImmutableArray<string> targetNamespaceParts)
318private static CompilationUnitSyntax MoveMembersFromGlobalToNamespace(CompilationUnitSyntax compilationUnit, ImmutableArray<string> targetNamespaceParts)
370var namespaceDecls = node.AncestorsAndSelf().OfType<BaseNamespaceDeclarationSyntax>().ToImmutableArray();
420private static NameSyntax CreateNamespaceAsQualifiedName(ImmutableArray<string> namespaceParts, string? aliasQualifier, int index)
433private static ExpressionSyntax CreateNamespaceAsMemberAccess(ImmutableArray<string> namespaceParts, string? aliasQualifier, int index)
458private static (ImmutableArray<SyntaxTrivia> openingTrivia, ImmutableArray<SyntaxTrivia> closingTrivia)
Completion\CompletionProviders\DeclarationName\DeclarationNameInfo.cs (13)
22ImmutableArray<SymbolKindOrTypeKind> possibleSymbolKinds,
29private static readonly ImmutableArray<SymbolKindOrTypeKind> s_parameterSyntaxKind =
32private static readonly ImmutableArray<SymbolKindOrTypeKind> s_propertySyntaxKind =
41public ImmutableArray<SymbolKindOrTypeKind> PossibleSymbolKinds { get => field.NullToEmpty(); } = possibleSymbolKinds;
291Func<DeclarationModifiers, ImmutableArray<SymbolKindOrTypeKind>> possibleDeclarationComputer,
325Func<DeclarationModifiers, ImmutableArray<SymbolKindOrTypeKind>> possibleDeclarationComputer,
336Func<DeclarationModifiers, ImmutableArray<SymbolKindOrTypeKind>> possibleDeclarationComputer,
359Func<DeclarationModifiers, ImmutableArray<SymbolKindOrTypeKind>> possibleDeclarationComputer,
366var possibleDeclarations = possibleDeclarationComputer(declarationModifiers);
425? (Func<DeclarationModifiers, ImmutableArray<SymbolKindOrTypeKind>>)
596private static ImmutableArray<SymbolKindOrTypeKind> GetPossibleMemberDeclarations(DeclarationModifiers modifiers)
603var possibleTypes = ImmutableArray.Create(
623private static ImmutableArray<SymbolKindOrTypeKind> GetPossibleLocalDeclarations(DeclarationModifiers modifiers)
Completion\CompletionProviders\DeclarationName\DeclarationNameRecommender.NameGenerator.cs (13)
12using Words = System.Collections.Immutable.ImmutableArray<string>;
23internal static ImmutableArray<Words> GetBaseNames(ITypeSymbol type, bool pluralize)
28var result = GetInterleavedPatterns(parts, baseName, pluralize);
33internal static ImmutableArray<Words> GetBaseNames(IAliasSymbol alias)
45var result = GetInterleavedPatterns(breaks, name, pluralize: false);
49private static ImmutableArray<Words> GetInterleavedPatterns(
52using var result = TemporaryArray<Words>.Empty;
68private static Words GetLongestBackwardSubsequence(int length, in TemporaryArray<TextSpan> breaks, string baseName, bool pluralize)
75private static Words GetLongestForwardSubsequence(int length, in TemporaryArray<TextSpan> breaks, string baseName, bool pluralize)
78private static Words GetWords(int start, int end, in TemporaryArray<TextSpan> breaks, string baseName, bool pluralize)
Completion\CompletionProviders\PropertySubPatternCompletionProvider.cs (5)
71var members = GetCandidatePropertiesAndFields(document, semanticModel, position, type);
124var members = GetCandidatePropertiesAndFields(document, semanticModel, position, type);
125var matches = members.WhereAsArray(m => m.Name == name);
139static ImmutableArray<ISymbol> GetCandidatePropertiesAndFields(Document document, SemanticModel semanticModel, int position, ITypeSymbol? type)
141var members = semanticModel.LookupSymbols(position, type);
SignatureHelp\TupleConstructionSignatureHelpProvider.cs (9)
102public override ImmutableArray<char> TriggerCharacters => ['(', ','];
104public override ImmutableArray<char> RetriggerCharacters => [')'];
134var inferredTypes = typeInferrer.InferTypes(semanticModel, targetExpression!.SpanStart, cancellationToken);
152var prefixParts = SpecializedCollections.SingletonEnumerable(new SymbolDisplayPart(SymbolDisplayPartKind.Punctuation, null, "(")).ToTaggedText();
153var suffixParts = SpecializedCollections.SingletonEnumerable(new SymbolDisplayPart(SymbolDisplayPartKind.Punctuation, null, ")")).ToTaggedText();
154var separatorParts = GetSeparatorParts().ToTaggedText();
164private static SignatureHelpItem Convert(INamedTypeSymbol tupleType, ImmutableArray<TaggedText> prefixParts, ImmutableArray<TaggedText> suffixParts,
165ImmutableArray<TaggedText> separatorParts, SemanticModel semanticModel, int position)
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryNullableDirective\CSharpRemoveUnnecessaryNullableDirectiveDiagnosticAnalyzer.cs (6)
74private static ImmutableArray<TextSpan> AnalyzeCodeBlock(CodeBlockAnalysisContext context, int positionOfFirstReducingNullableDirective)
81private ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, int positionOfFirstReducingNullableDirective, TextSpanMutableIntervalTree? codeBlockIntervalTree, TextSpanMutableIntervalTree? possibleNullableImpactIntervalTree)
213public bool TryReportNullableImpactingSpans(TextSpan span, ImmutableArray<TextSpan> nullableImpactingSpans)
217private bool TryProceedOrReportNullableImpactingSpans(TextSpan span, ImmutableArray<TextSpan>? nullableImpactingSpans)
279var nullableImpactingSpans = CSharpRemoveUnnecessaryNullableDirectiveDiagnosticAnalyzer.AnalyzeCodeBlock(context, syntaxTreeState.PositionOfFirstReducingNullableDirective.Value);
307var diagnostics = _analyzer.AnalyzeSemanticModel(context, positionOfFirstReducingNullableDirective, syntaxTreeState.IntervalTree, syntaxTreeState.PossibleNullableImpactIntervalTree);
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (11)
25public sealed override ImmutableArray<string> FixableDiagnosticIds { get; } =
94private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
95Document document, ImmutableArray<Diagnostic> diagnostics, CancellationToken cancellationToken)
100var containersAndLocations =
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
112var outParameters = parameterList.Parameters
120var unassignedParameters = outParameters.WhereAsArray(
134Document document, ImmutableArray<Diagnostic> diagnostics,
149MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
152protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
153SyntaxGenerator generator, ImmutableArray<IParameterSymbol> unassignedParameters)
src\roslyn\src\Analyzers\CSharp\CodeFixes\MakeLocalFunctionStatic\PassInCapturedVariablesAsArgumentsCodeFixProvider.cs (6)
29public override ImmutableArray<string> FixableDiagnosticIds { get; } = [CS8421];
50protected override Task FixAllAsync(Document document, ImmutableArray<Diagnostic> diagnostics, SyntaxEditor editor, CancellationToken cancellationToken)
62ImmutableArray<Diagnostic> diagnostics,
63Func<Document, LocalFunctionStatementSyntax, ImmutableArray<ISymbol>, Task> fixer,
74var localFunctions = diagnostics
87if (MakeLocalFunctionStaticHelper.CanMakeLocalFunctionStaticByRefactoringCaptures(localFunction, semanticModel, out var captures))
AddImport\AbstractAddImportFeatureService.cs (37)
65public async Task<ImmutableArray<AddImportFixData>> GetFixesAsync(
68ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken)
73var result = await client.TryInvokeAsync<IRemoteMissingImportDiscoveryService, ImmutableArray<AddImportFixData>>(
89private async Task<ImmutableArray<AddImportFixData>> GetFixesInCurrentProcessAsync(
92ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken)
108var allSymbolReferences = await FindResultsAsync(
133private async Task<ImmutableArray<Reference>> FindResultsAsync(
141ImmutableArray<PackageSource> packageSources,
154var exactReferences = await FindResultsAsync(projectToAssembly, referenceToCompilation, project, maxResults, finder, exact: true, cancellationToken).ConfigureAwait(false);
164var fuzzyReferences = await FindResultsAsync(projectToAssembly, referenceToCompilation, project, maxResults, finder, exact: false, cancellationToken).ConfigureAwait(false);
171private async Task<ImmutableArray<Reference>> FindResultsAsync(
236await ProducerConsumer<ImmutableArray<SymbolReference>>.RunParallelAsync(
244var references = await finder.FindInSourceSymbolsInProjectAsync(
277var newReferences = GetUnreferencedMetadataReferences(project, seenReferences);
287await ProducerConsumer<ImmutableArray<SymbolReference>>.RunParallelAsync(
301var references = await finder.FindInMetadataSymbolsAsync(
323private static ImmutableArray<(Project, PortableExecutableReference)> GetUnreferencedMetadataReferences(
353IAsyncEnumerable<ImmutableArray<SymbolReference>> reader,
356await foreach (var symbolReferences in reader.ConfigureAwait(false))
476private static void AddRange(ConcurrentQueue<Reference> allSymbolReferences, ImmutableArray<SymbolReference> proposedReferences)
491public async Task<ImmutableArray<(Diagnostic Diagnostic, ImmutableArray<AddImportFixData> Fixes)>> GetFixesForDiagnosticsAsync(
492Document document, TextSpan span, ImmutableArray<Diagnostic> diagnostics, int maxResultsPerDiagnostic,
494ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken)
499var result = new FixedSizeArrayBuilder<(Diagnostic, ImmutableArray<AddImportFixData>)>(diagnostics.Length);
503var fixes = await GetFixesAsync(
514public async Task<ImmutableArray<AddImportFixData>> GetUniqueFixesAsync(
515Document document, TextSpan span, ImmutableArray<string> diagnosticIds,
517ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken)
522var result = await client.TryInvokeAsync<IRemoteMissingImportDiscoveryService, ImmutableArray<AddImportFixData>>(
538private async Task<ImmutableArray<AddImportFixData>> GetUniqueFixesAsyncInCurrentProcessAsync(
541ImmutableArray<string> diagnosticIds,
544ImmutableArray<PackageSource> packageSources,
550var diagnostics = semanticModel.GetDiagnostics(span, cancellationToken)
562var fixesForDiagnostics = await getFixesForDiagnosticsTask.ConfigureAwait(false);
579public ImmutableArray<CodeAction> GetCodeActionsForFixes(
580Document document, ImmutableArray<AddImportFixData> fixes,
AddImport\AddImportFixData.cs (10)
18ImmutableArray<TextChange> textChanges,
20ImmutableArray<string> tags = default,
41public readonly ImmutableArray<TextChange> TextChanges = textChanges;
53public readonly ImmutableArray<string> Tags = tags;
113public static AddImportFixData CreateForProjectSymbol(ImmutableArray<TextChange> textChanges, string title, ImmutableArray<string> tags, CodeActionPriority priority, ProjectId projectReferenceToAdd)
121public static AddImportFixData CreateForMetadataSymbol(ImmutableArray<TextChange> textChanges, string title, ImmutableArray<string> tags, CodeActionPriority priority, ProjectId portableExecutableReferenceProjectId, string portableExecutableReferenceFilePathToAdd)
130public static AddImportFixData CreateForReferenceAssemblySymbol(ImmutableArray<TextChange> textChanges, string title, string assemblyReferenceAssemblyName, string assemblyReferenceFullyQualifiedTypeName)
139public static AddImportFixData CreateForPackageSymbol(ImmutableArray<TextChange> textChanges, string packageSource, string packageName, string packageVersionOpt)
AddImport\IAddImportFeatureService.cs (12)
22Task<ImmutableArray<AddImportFixData>> GetFixesAsync(
25ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken);
31Task<ImmutableArray<(Diagnostic Diagnostic, ImmutableArray<AddImportFixData> Fixes)>> GetFixesForDiagnosticsAsync(
32Document document, TextSpan span, ImmutableArray<Diagnostic> diagnostics, int maxResultsPerDiagnostic,
34ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken);
40ImmutableArray<CodeAction> GetCodeActionsForFixes(
41Document document, ImmutableArray<AddImportFixData> fixes,
47/// ImmutableArray{PackageSource}, CancellationToken)"/> except it only returns fix data when there is a single
50Task<ImmutableArray<AddImportFixData>> GetUniqueFixesAsync(
51Document document, TextSpan span, ImmutableArray<string> diagnosticIds,
53ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken);
AddImport\Remote\IRemoteMissingImportDiscoveryService.cs (8)
19ValueTask<ImmutableArray<PackageResult>> FindPackagesAsync(RemoteServiceCallbackId callbackId, string source, TypeQuery typeQuery, NamespaceQuery namespaceQuery, CancellationToken cancellationToken);
20ValueTask<ImmutableArray<PackageWithAssemblyResult>> FindPackagesWithAssemblyAsync(RemoteServiceCallbackId callbackId, string source, string name, CancellationToken cancellationToken);
21ValueTask<ImmutableArray<ReferenceAssemblyResult>> FindReferenceAssembliesAsync(RemoteServiceCallbackId callbackId, TypeQuery typeQuery, NamespaceQuery namespaceQuery, CancellationToken cancellationToken);
24ValueTask<ImmutableArray<AddImportFixData>> GetFixesAsync(
26AddImportOptions options, ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken);
28ValueTask<ImmutableArray<AddImportFixData>> GetUniqueFixesAsync(
29Checksum solutionChecksum, RemoteServiceCallbackId callbackId, DocumentId id, TextSpan span, ImmutableArray<string> diagnosticIds,
30AddImportOptions options, ImmutableArray<PackageSource> packageSources, CancellationToken cancellationToken);
AddImport\Remote\RemoteMissingImportDiscoveryServiceCallbackDispatcher.cs (3)
34public ValueTask<ImmutableArray<PackageResult>> FindPackagesAsync(RemoteServiceCallbackId callbackId, string source, TypeQuery typeQuery, NamespaceQuery namespaceQuery, CancellationToken cancellationToken)
37public ValueTask<ImmutableArray<PackageWithAssemblyResult>> FindPackagesWithAssemblyAsync(RemoteServiceCallbackId callbackId, string source, string name, CancellationToken cancellationToken)
40public ValueTask<ImmutableArray<ReferenceAssemblyResult>> FindReferenceAssembliesAsync(RemoteServiceCallbackId callbackId, TypeQuery typeQuery, NamespaceQuery namespaceQuery, CancellationToken cancellationToken)
AddImport\SymbolReferenceFinder.cs (48)
39private readonly ImmutableArray<PackageSource> _packageSources;
56ImmutableArray<PackageSource> packageSources,
94internal Task<ImmutableArray<SymbolReference>> FindInAllSymbolsInStartingProjectAsync(bool exact, CancellationToken cancellationToken)
97internal Task<ImmutableArray<SymbolReference>> FindInSourceSymbolsInProjectAsync(ConcurrentDictionary<Project, AsyncLazy<IAssemblySymbol?>> projectToAssembly, Project project, bool exact, CancellationToken cancellationToken)
100internal Task<ImmutableArray<SymbolReference>> FindInMetadataSymbolsAsync(IAssemblySymbol assembly, Project assemblyProject, PortableExecutableReference metadataReference, bool exact, CancellationToken cancellationToken)
103private async Task<ImmutableArray<SymbolReference>> DoAsync(SearchScope searchScope, CancellationToken cancellationToken)
114using var _1 = ArrayBuilder<Task<ImmutableArray<SymbolReference>>>.GetInstance(out var tasks);
142var taskResult = await task.ConfigureAwait(false);
149private ImmutableArray<SymbolReference> DeDupeAndSortReferences(ImmutableArray<SymbolReference> allReferences)
175private async Task<ImmutableArray<SymbolReference>> GetReferencesForMatchingTypesAsync(
193var symbols = await searchScope.FindDeclarationsAsync(name, nameNode, SymbolFilter.Type, cancellationToken).ConfigureAwait(false);
198var attributeSymbols = await searchScope.FindDeclarationsAsync(
205var typeSymbols = OfType<ITypeSymbol>(symbols);
211var accessibleTypeSymbols = typeSymbols.WhereAsArray(
219var typesContainedDirectlyInNamespaces = accessibleTypeSymbols.WhereAsArray(s => s.Symbol.ContainingSymbol is INamespaceSymbol);
220var typesContainedDirectlyInTypes = accessibleTypeSymbols.WhereAsArray(s => s.Symbol.ContainingType != null);
222var namespaceReferences = GetNamespaceSymbolReferences(searchScope,
225var typeReferences = typesContainedDirectlyInTypes.SelectAsArray(
260private async Task<ImmutableArray<SymbolReference>> GetReferencesForMatchingNamespacesAsync(
271var symbols = await searchScope.FindDeclarationsAsync(name, nameNode, SymbolFilter.Namespace, cancellationToken).ConfigureAwait(false);
272var namespaceSymbols = OfType<INamespaceSymbol>(symbols);
273var containingNamespaceSymbols = OfType<INamespaceSymbol>(symbols).SelectAsArray(s => s.WithSymbol(s.Symbol.ContainingNamespace));
287private async Task<ImmutableArray<SymbolReference>> GetReferencesForMatchingFieldsAndPropertiesAsync(
316var symbolResults = await searchScope.FindDeclarationsAsync(
320var namedTypeSymbols = OfType<INamedTypeSymbol>(symbolResults);
322var namespaceResults =
351private async Task<ImmutableArray<SymbolReference>> GetReferencesForMatchingExtensionMembersAsync(
370var symbols = await searchScope.FindDeclarationsAsync(
373var classicExtensionMethods = OfType<IMethodSymbol>(symbols)
376var modernExtensionMembers = symbols
381var allExtensionNamespaces = classicExtensionNamespaces.Concat(modernExtensionNamespaces).ToImmutableArray();
408private ImmutableArray<SymbolResult<IMethodSymbol>> GetViableExtensionMethodsWorker(
409ImmutableArray<SymbolResult<IMethodSymbol>> methodSymbols)
421private async Task<ImmutableArray<SymbolReference>> GetReferencesForCollectionInitializerMethodsAsync(
442private async Task<ImmutableArray<SymbolReference>> GetReferencesForQueryPatternsAsync(
466private async Task<ImmutableArray<SymbolReference>> GetReferencesForGetAwaiterAsync(
488private async Task<ImmutableArray<SymbolReference>> GetReferencesForGetEnumeratorAsync(
510private async Task<ImmutableArray<SymbolReference>> GetReferencesForGetAsyncEnumeratorAsync(
532private async Task<ImmutableArray<SymbolReference>> GetReferencesForDeconstructAsync(
554private async Task<ImmutableArray<SymbolReference>> GetReferencesForExtensionMethodAsync(
560var symbols = await searchScope.FindDeclarationsAsync(
566var methodSymbols = OfType<IMethodSymbol>(symbols);
567var namespaceSymbols = methodSymbols.SelectAsArray(
641private ImmutableArray<SymbolReference> GetNamespaceSymbolReferences(
642SearchScope scope, ImmutableArray<SymbolResult<INamespaceSymbol>> namespaces)
658private static ImmutableArray<SymbolResult<T>> OfType<T>(ImmutableArray<SymbolResult<ISymbol>> symbols) where T : ISymbol
ChangeSignature\AbstractChangeSignatureService.cs (30)
49public abstract Task<ImmutableArray<ISymbol>> DetermineCascadedSymbolsFromDelegateInvokeAsync(
61protected abstract ImmutableArray<AbstractFormattingRule> GetFormattingRules(Document document);
89protected abstract ImmutableArray<IParameterSymbol> GetParameters(ISymbol declarationSymbol);
94public async Task<ImmutableArray<ChangeSignatureCodeAction>> GetChangeSignatureCodeActionAsync(Document document, TextSpan span, CancellationToken cancellationToken)
100: ImmutableArray<ChangeSignatureCodeAction>.Empty;
225private static async Task<ImmutableArray<ReferencedSymbol>> FindChangeSignatureReferencesAsync(
259var symbols = await FindChangeSignatureReferencesAsync(
418var changedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
470protected ImmutableArray<IUnifiedArgumentSyntax> PermuteArguments(
472ImmutableArray<IUnifiedArgumentSyntax> arguments,
477var declarationParameters = GetParameters(declarationSymbol);
478var declarationParametersToPermute = GetParametersToPermute(arguments, declarationParameters, isReducedExtensionMethod);
583var realParameters = GetParameters(declarationSymbol);
586var originalConfigurationParameters = updatedSignature.OriginalConfiguration.ToListOfParameters();
587var updatedConfigurationParameters = updatedSignature.UpdatedConfiguration.ToListOfParameters();
591var originalConfigurationParametersWithExtraParameters = originalConfigurationParameters.AddRange(bonusParameters.Select(p => new ExistingParameter(p)));
592var updatedConfigurationParametersWithExtraParameters = updatedConfigurationParameters.AddRange(bonusParameters.Select(p => new ExistingParameter(p)));
602private static ImmutableArray<IParameterSymbol> GetParametersToPermute(
603ImmutableArray<IUnifiedArgumentSyntax> arguments,
604ImmutableArray<IParameterSymbol> originalParameters,
680protected (ImmutableArray<T> parameters, ImmutableArray<SyntaxToken> separators) UpdateDeclarationBase<T>(
685var originalParameters = updatedSignature.OriginalConfiguration.ToListOfParameters();
686var reorderedParameters = updatedSignature.UpdatedConfiguration.ToListOfParameters();
746protected ImmutableArray<SyntaxToken> GetSeparators<T>(SeparatedSyntaxList<T> arguments, int numSeparatorsToSkip) where T : SyntaxNode
779var updatedParameters = signaturePermutation.UpdatedConfiguration.ToListOfParameters();
793var parameters = GetParameters(declarationSymbol);
937var recommendations = recommender.GetRecommendedSymbolsInContext(context, recommendationOptions, cancellationToken).NamedSymbols;
971protected ImmutableArray<SyntaxTrivia> GetPermutedDocCommentTrivia(SyntaxNode node, ImmutableArray<SyntaxNode> permutedParamNodes, LanguageServices services, LineFormattingOptions options)
CodeFixes\Service\CodeFixService.cs (53)
42private readonly ImmutableArray<Lazy<CodeFixProvider, CodeChangeProviderMetadata>> _fixers;
43private readonly Lazy<ImmutableDictionary<string, ImmutableArray<Lazy<CodeFixProvider, CodeChangeProviderMetadata>>>> _fixersPerLanguageMap;
45private readonly ConditionalWeakTable<IReadOnlyList<AnalyzerReference>, ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>> _projectFixersMap = new();
48private readonly Lazy<ImmutableDictionary<LanguageKind, Lazy<ImmutableArray<IConfigurationFixProvider>>>> _configurationProvidersMap;
49private readonly ImmutableArray<Lazy<IErrorLoggerService>> _errorLoggers;
51private ImmutableDictionary<LanguageKind, Lazy<ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>>>? _lazyWorkspaceFixersMap;
54private ImmutableDictionary<CodeFixProvider, ImmutableArray<DiagnosticId>> _fixerToFixableIdsMap = ImmutableDictionary<CodeFixProvider, ImmutableArray<DiagnosticId>>.Empty;
86using var _ = PooledDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>.GetInstance(out var builder);
100ImmutableArray<DiagnosticData> allDiagnostics;
116var copilotDiagnostics = await GetCopilotDiagnosticsAsync(document, range, priority, cancellationToken).ConfigureAwait(false);
192ImmutableArray<DiagnosticData> diagnostics;
205var copilotDiagnostics = await GetCopilotDiagnosticsAsync(document, range, priority, cancellationToken).ConfigureAwait(false);
248private static async Task<ImmutableArray<DiagnosticData>> GetCopilotDiagnosticsAsync(
261SourceText text, ImmutableArray<DiagnosticData> diagnostics)
290ImmutableArray<DiagnosticData> diagnostics;
359private bool TryPopulateWorkspaceFixersMap(TextDocument document, Dictionary<DiagnosticId, ImmutableArray<CodeFixProvider>> fixerMap)
374var filteredFixers = ProjectCodeFixProvider.FilterExtensions(document, fixers, GetExtensionInfo);
444using var _1 = PooledDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>.GetInstance(out var fixerMap);
469if (hasAnyProjectFixer && projectFixersMap.TryGetValue(diagnosticId, out var projectFixers))
475if (hasAnySharedFixer && fixerMap.TryGetValue(diagnosticId, out var workspaceFixers))
493var allFixers = fixerToRangesAndDiagnostics.Keys.ToImmutableArray();
586ImmutableArray<CodeFixProvider> fixers,
656private static async Task<ImmutableArray<CodeFix>> GetCodeFixesAsync(
658ImmutableArray<Diagnostic> diagnostics,
694static ImmutableArray<Diagnostic> FilterApplicableDiagnostics(
695ImmutableArray<Diagnostic> applicableDiagnostics,
761var fixes = await provider.GetFixesAsync(document, diagnosticsSpan, dxs, cancellationToken).ConfigureAwait(false);
778Func<ImmutableArray<Diagnostic>, Task<ImmutableArray<CodeFix>>> getFixes,
784var allDiagnostics = await diagnosticsWithSameSpan
787var diagnostics = allDiagnostics.WhereAsArray(hasFix);
794var fixes = await extensionManager.PerformFunctionAsync(fixer,
806var supportedScopes = ImmutableArray<FixAllScope>.Empty;
862private ImmutableArray<DiagnosticId> GetFixableDiagnosticIds(CodeFixProvider fixer, IExtensionManager? extensionManager)
889private static ImmutableArray<string> GetAndTestFixableDiagnosticIds(CodeFixProvider codeFixProvider)
891var ids = codeFixProvider.FixableDiagnosticIds;
903private ImmutableDictionary<LanguageKind, Lazy<ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>>> GetFixerPerLanguageMap(
906var fixerMap = ImmutableDictionary.Create<LanguageKind, Lazy<ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>>>();
910var lazyMap = new Lazy<ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>>(() =>
941private static ImmutableDictionary<LanguageKind, Lazy<ImmutableArray<IConfigurationFixProvider>>> GetConfigurationProvidersPerLanguageMap(
946var configurationFixerMap = ImmutableDictionary.CreateBuilder<LanguageKind, Lazy<ImmutableArray<IConfigurationFixProvider>>>();
949var lazyConfigurationFixers = new Lazy<ImmutableArray<IConfigurationFixProvider>>(() => GetConfigurationFixProviders(lazyFixers));
955static ImmutableArray<IConfigurationFixProvider> GetConfigurationFixProviders(ImmutableArray<Lazy<IConfigurationFixProvider, CodeChangeProviderMetadata>> languageKindAndFixers)
993private ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>> GetProjectFixers(TextDocument document)
997? ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>>.Empty
1001private ImmutableDictionary<DiagnosticId, ImmutableArray<CodeFixProvider>> ComputeProjectFixers(TextDocument document)
1006var codeFixProviders = ProjectCodeFixProvider.GetExtensions(document, GetExtensionInfo);
1009var fixableIds = this.GetFixableDiagnosticIds(fixer, extensionManager);
1024var kinds = EnumArrayConverter.FromStringArray<TextDocumentKind>(attribute.DocumentKinds);
1035ImmutableArray<CodeFixProvider> allFixers,
CodeFixes\Suppression\AbstractSuppressionBatchFixAllProvider.cs (17)
45ImmutableDictionary<Document, ImmutableArray<Diagnostic>> documentsAndDiagnosticsToFixMap,
57var diagnosticsAndCodeActions = await GetDiagnosticsAndCodeActionsAsync(documentsAndDiagnosticsToFixMap, fixAllContext).ConfigureAwait(false);
74private async Task<ImmutableArray<(Diagnostic diagnostic, CodeAction action)>> GetDiagnosticsAndCodeActionsAsync(
75ImmutableDictionary<Document, ImmutableArray<Diagnostic>> documentsAndDiagnosticsToFixMap,
92var source = documentsAndDiagnosticsToFixMap.WhereAsArray(static (kvp, _) => !kvp.Value.IsDefaultOrEmpty, arg: false);
112Document document, ImmutableArray<Diagnostic> diagnostics,
135ImmutableDictionary<Project, ImmutableArray<Diagnostic>> projectsAndDiagnosticsToFixMap,
159var result = bag.ToImmutableArray();
175private static Action<CodeAction, ImmutableArray<Diagnostic>> GetRegisterCodeFixAction(
200Project project, ImmutableArray<Diagnostic> diagnostics,
208ImmutableArray<(Diagnostic diagnostic, CodeAction action)> batchOfFixes,
227ImmutableArray<(Diagnostic diagnostic, CodeAction action)> diagnosticsAndCodeActions,
238var documentIdToFinalText = await GetDocumentIdToFinalTextAsync(
250ImmutableArray<(Diagnostic diagnostic, CodeAction action)> diagnosticsAndCodeActions,
270private static async Task<ImmutableArray<(DocumentId documentId, SourceText newText)>> GetDocumentIdToFinalTextAsync(
273ImmutableArray<(Diagnostic diagnostic, CodeAction action)> diagnosticsAndCodeActions,
305var orderedDocuments = changedDocuments.OrderBy(t => codeActionToDiagnosticLocation[t.action])
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.cs (8)
141public Task<ImmutableArray<CodeFix>> GetFixesAsync(
145return Task.FromResult(ImmutableArray<CodeFix>.Empty);
150internal async Task<ImmutableArray<PragmaWarningCodeAction>> GetPragmaSuppressionsAsync(Document document, TextSpan span, IEnumerable<Diagnostic> diagnostics, CancellationToken cancellationToken)
152var codeFixes = await GetSuppressionsAsync(document, span, diagnostics, skipSuppressMessage: true, skipUnsuppress: true, cancellationToken: cancellationToken).ConfigureAwait(false);
156private async Task<ImmutableArray<CodeFix>> GetSuppressionsAsync(
169public async Task<ImmutableArray<CodeFix>> GetFixesAsync(
185private async Task<ImmutableArray<CodeFix>> GetSuppressionsAsync(
307var decls = analyzerDriverService.ComputeDeclarationsInSpan(semanticModel, span, cancellationToken);
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.GlobalSuppressMessageFixAllCodeAction.cs (13)
28private readonly IEnumerable<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>> _diagnosticsBySymbol;
33IEnumerable<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>> diagnosticsBySymbol,
41internal static CodeAction Create(string title, AbstractSuppressionCodeFixProvider fixer, Document triggerDocument, ImmutableDictionary<Document, ImmutableArray<Diagnostic>> diagnosticsByDocument)
48internal static CodeAction Create(string title, AbstractSuppressionCodeFixProvider fixer, Project triggerProject, ImmutableDictionary<Project, ImmutableArray<Diagnostic>> diagnosticsByProject)
70ImmutableDictionary<Document, ImmutableArray<Diagnostic>> diagnosticsByDocument,
99ImmutableDictionary<Project, ImmutableArray<Diagnostic>> diagnosticsByProject,
152private static async Task<IEnumerable<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>>> CreateDiagnosticsBySymbolAsync(AbstractSuppressionCodeFixProvider fixer, IEnumerable<KeyValuePair<Document, ImmutableArray<Diagnostic>>> diagnosticsByDocument, CancellationToken cancellationToken)
173private static async Task<IEnumerable<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>>> CreateDiagnosticsBySymbolAsync(Project project, ImmutableArray<Diagnostic> diagnostics, CancellationToken cancellationToken)
206private static IEnumerable<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>> CreateDiagnosticsBySymbol(ImmutableDictionary<ISymbol, List<Diagnostic>>.Builder diagnosticsMapBuilder)
211var builder = new List<KeyValuePair<ISymbol, ImmutableArray<Diagnostic>>>();
218private static ImmutableArray<Diagnostic> GetUniqueDiagnostics(List<Diagnostic> diagnostics)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.PragmaBatchFixHelpers.cs (6)
29ImmutableArray<IPragmaBasedCodeAction> pragmaActions,
30ImmutableArray<Diagnostic> pragmaDiagnostics,
44ImmutableArray<IPragmaBasedCodeAction> pragmaActions,
45ImmutableArray<Diagnostic> diagnostics,
88var newSuppressionFixes = await suppressionFixProvider.GetFixesAsync(currentDocument, currentDiagnosticSpan, [diagnostic], cancellationToken).ConfigureAwait(false);
130private static void UpdateDiagnosticSpans(ImmutableArray<Diagnostic> diagnostics, Dictionary<Diagnostic, TextSpan> currentDiagnosticSpans, IEnumerable<TextChange> textChanges)
CodeRefactorings\SyncNamespace\AbstractChangeNamespaceService.cs (44)
60public abstract bool TryGetReplacementReferenceSyntax(SyntaxNode reference, ImmutableArray<string> newNamespaceParts, ISyntaxFactsService syntaxFacts, [NotNullWhen(returnValue: true)] out SyntaxNode? old, [NotNullWhen(returnValue: true)] out SyntaxNode? @new);
90TCompilationUnitSyntax root, ImmutableArray<string> declaredNamespaceParts, ImmutableArray<string> targetNamespaceParts);
107protected abstract Task<ImmutableArray<(DocumentId id, SyntaxNode container)>> GetValidContainersFromAllLinkedDocumentsAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
112protected static bool IsGlobalNamespace(ImmutableArray<string> parts)
122var applicableContainers = await GetValidContainersFromAllLinkedDocumentsAsync(document, container, cancellationToken).ConfigureAwait(false);
137var originalNamespaceDeclarations = await GetTopLevelNamespacesAsync(document, cancellationToken).ConfigureAwait(false);
162var namespaces = await GetTopLevelNamespacesAsync(document, cancellationToken).ConfigureAwait(false);
171static async Task<ImmutableArray<SyntaxNode>> GetTopLevelNamespacesAsync(Document document, CancellationToken cancellationToken)
203var containersFromAllDocuments = await GetValidContainersFromAllLinkedDocumentsAsync(document, container, cancellationToken).ConfigureAwait(false);
223var documentIds = containersFromAllDocuments.SelectAsArray(pair => pair.id);
269protected async Task<ImmutableArray<(DocumentId, SyntaxNode)>> TryGetApplicableContainersFromAllDocumentsAsync(
271ImmutableArray<DocumentId> ids,
280var documents = ids.SelectAsArray(solution.GetRequiredDocument);
312protected static async Task<Solution> AnnotateContainersAsync(Solution solution, ImmutableArray<(DocumentId, SyntaxNode)> containers, CancellationToken cancellationToken)
347protected static bool IsSupportedLinkedDocument(Document document, out ImmutableArray<DocumentId> allDocumentIds)
350var linkedDocumentIds = document.GetLinkedDocumentIds();
367private async Task<ImmutableArray<ISymbol>> GetDeclaredSymbolsInContainerAsync(
385private static ImmutableArray<string> GetNamespaceParts(string @namespace)
388private static ImmutableArray<string> GetAllNamespaceImportsForDeclaringDocument(string oldNamespace, string newNamespace)
390var parts = GetNamespaceParts(oldNamespace);
402private static ImmutableArray<SyntaxNode> CreateImports(Document document, ImmutableArray<string> names, bool withFormatterAnnotation)
428private async Task<(Solution, ImmutableArray<DocumentId>)> ChangeNamespaceInSingleDocumentAsync(
441var declaredSymbols = await GetDeclaredSymbolsInContainerAsync(document, container, cancellationToken).ConfigureAwait(false);
473var refLocationsInSolution = refLocationsInOtherDocuments
487var fixedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
506private static async Task<ImmutableArray<LocationForAffectedSymbol>> FindReferenceLocationsForSymbolAsync(
511var referencedSymbols = await FindReferencesAsync(symbol, document, cancellationToken).ConfigureAwait(false);
529var referencedMethodSymbols = await FindReferencesAsync(methodSymbol, document, cancellationToken).ConfigureAwait(false);
540private static async Task<ImmutableArray<ReferencedSymbol>> FindReferencesAsync(ISymbol symbol, Document document, CancellationToken cancellationToken)
579ImmutableArray<SyntaxNode> containersToAddImports;
581var oldNamespaceParts = GetNamespaceParts(oldNamespace);
582var newNamespaceParts = GetNamespaceParts(newNamespace);
602var namesToImport = GetAllNamespaceImportsForDeclaringDocument(oldNamespace, newNamespace);
685var newNamespaceParts = GetNamespaceParts(newNamespace);
729private static async Task<(Document, ImmutableArray<SyntaxNode>)> FixReferencesAsync(
734ImmutableArray<string> newNamespaceParts,
802ImmutableArray<DocumentId> ids,
803ImmutableArray<string> names,
819var changedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
857ImmutableArray<SyntaxNode> containers,
858ImmutableArray<string> names,
871var imports = CreateImports(document, names, withFormatterAnnotation: true);
Common\AbstractProjectExtensionProvider.cs (20)
21public sealed record class ExtensionInfo(ImmutableArray<TextDocumentKind> DocumentKinds, string[]? DocumentExtensions);
25private static readonly ConditionalWeakTable<IReadOnlyList<AnalyzerReference>, StrongBox<ImmutableArray<TExtension>>> s_referencesToExtensionsMap = new();
30private ImmutableDictionary<string, ImmutableArray<TExtension>> _extensionsPerLanguage = ImmutableDictionary<string, ImmutableArray<TExtension>>.Empty;
32protected abstract ImmutableArray<string> GetLanguages(TExportAttribute exportAttribute);
33protected abstract bool TryGetExtensionsFromReference(AnalyzerReference reference, out ImmutableArray<TExtension> extensions);
35public static bool TryGetCachedExtensions(IReadOnlyList<AnalyzerReference> analyzerReferences, out ImmutableArray<TExtension> extensions)
47public static ImmutableArray<TExtension> GetExtensions(Project? project)
55public static ImmutableArray<TExtension> GetExtensions(string language, IReadOnlyList<AnalyzerReference> analyzerReferences)
57if (TryGetCachedExtensions(analyzerReferences, out var providers))
62static ImmutableArray<TExtension> GetExtensionsSlow(string language, IReadOnlyList<AnalyzerReference> analyzerReferences)
65static ImmutableArray<TExtension> ComputeExtensions(string language, IReadOnlyList<AnalyzerReference> analyzerReferences)
80public static ImmutableArray<TExtension> GetExtensions(TextDocument document, Func<TExportAttribute, ExtensionInfo>? getExtensionInfoForFiltering)
82var extensions = GetExtensions(document.Project);
88public static ImmutableArray<TExtension> FilterExtensions(TextDocument document, ImmutableArray<TExtension> extensions, Func<TExportAttribute, ExtensionInfo> getExtensionInfoForFiltering)
139private ImmutableArray<TExtension> GetExtensions(string language)
142private ImmutableArray<TExtension> CreateExtensions(string language)
145if (TryGetExtensionsFromReference(this.Reference, out var extensions))
170var languages = GetLanguages(attribute);
Completion\CommonCompletionUtilities.cs (4)
94if (!sections.TryGetValue(SymbolDescriptionGroups.MainDescription, out var mainDescriptionTexts))
126if (sections.TryGetValue(SymbolDescriptionGroups.AwaitableUsageText, out var parts))
151SolutionServices workspaceServices, SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, SupportedPlatformData? supportedPlatforms, CancellationToken cancellationToken)
176var documentation = symbol.GetDocumentationParts(semanticModel, position, formatter, cancellationToken);
Completion\CompletionChange.cs (10)
28public ImmutableArray<TextChange> TextChanges { get; }
52TextChange textChange, ImmutableArray<TextChange> textChanges, int? newPosition, bool includesCommitCharacter)
58TextChange textChange, ImmutableArray<TextChange> textChanges, int? newPosition, bool includesCommitCharacter, ImmutableDictionary<string, string> properties)
64TextChange textChange, ImmutableArray<TextChange> textChanges, TextSpan? newSelection, bool includesCommitCharacter, ImmutableDictionary<string, string> properties)
86/// are multiple entries, <see cref="Create(TextChange, ImmutableArray{TextChange}, int?, bool)"/> must be called instead,
91ImmutableArray<TextChange> textChanges,
114ImmutableArray<TextChange> textChanges,
123ImmutableArray<TextChange> textChanges,
133ImmutableArray<TextChange> textChanges,
150public CompletionChange WithTextChanges(ImmutableArray<TextChange> textChanges)
Completion\CompletionItem.cs (22)
25private readonly ImmutableArray<KeyValuePair<string, string>> _properties;
57internal ImmutableArray<string> AdditionalFilterTexts { get; init; } = [];
106internal ImmutableArray<KeyValuePair<string, string>> GetProperties()
145public ImmutableArray<string> Tags { get; }
182ImmutableArray<KeyValuePair<string, string>> properties,
183ImmutableArray<string> tags,
220ImmutableArray<string> tags,
232ImmutableArray<string> tags,
246ImmutableArray<string> tags,
262ImmutableArray<string> tags = default,
282ImmutableArray<KeyValuePair<string, string>> properties = default,
283ImmutableArray<string> tags = default,
322ImmutableArray<string> tags,
348Optional<ImmutableArray<KeyValuePair<string, string>>> properties = default,
349Optional<ImmutableArray<string>> tags = default,
355Optional<ImmutableArray<string>> additionalFilterTexts = default)
362var newProperties = properties.HasValue ? properties.Value : _properties;
363var newTags = tags.HasValue ? tags.Value : Tags;
368var newAdditionalFilterTexts = additionalFilterTexts.HasValue ? additionalFilterTexts.Value.NullToEmpty() : AdditionalFilterTexts;
456internal CompletionItem WithProperties(ImmutableArray<KeyValuePair<string, string>> properties)
468public CompletionItem WithTags(ImmutableArray<string> tags)
506internal CompletionItem WithAdditionalFilterTexts(ImmutableArray<string> additionalFilterTexts)
Completion\CompletionItemRules.cs (16)
51public ImmutableArray<CharacterSetModificationRule> FilterCharacterRules { get; }
56public ImmutableArray<CharacterSetModificationRule> CommitCharacterRules { get; }
80ImmutableArray<CharacterSetModificationRule> filterCharacterRules,
81ImmutableArray<CharacterSetModificationRule> commitCharacterRules,
104ImmutableArray<CharacterSetModificationRule> filterCharacterRules,
105ImmutableArray<CharacterSetModificationRule> commitCharacterRules,
126ImmutableArray<CharacterSetModificationRule> filterCharacterRules = default,
127ImmutableArray<CharacterSetModificationRule> commitCharacterRules = default,
159ImmutableArray<CharacterSetModificationRule> filterCharacterRules,
160ImmutableArray<CharacterSetModificationRule> commitCharacterRules,
170Optional<ImmutableArray<CharacterSetModificationRule>> filterRules = default,
171Optional<ImmutableArray<CharacterSetModificationRule>> commitRules = default,
177var newFilterRules = filterRules.HasValue ? filterRules.Value : FilterCharacterRules;
178var newCommitRules = commitRules.HasValue ? commitRules.Value : CommitCharacterRules;
205public CompletionItemRules WithFilterCharacterRules(ImmutableArray<CharacterSetModificationRule> filterCharacterRules)
217public CompletionItemRules WithCommitCharacterRules(ImmutableArray<CharacterSetModificationRule> commitCharacterRules)
Completion\CompletionRules.cs (8)
29public ImmutableArray<char> DefaultCommitCharacters { get; }
45ImmutableArray<char> defaultCommitCharacters,
66ImmutableArray<char> defaultCommitCharacters,
84ImmutableArray<char> defaultCommitCharacters = default,
99Optional<ImmutableArray<char>> defaultCommitCharacters = default,
105var newDefaultCommitCharacters = defaultCommitCharacters.HasValue ? defaultCommitCharacters.Value : DefaultCommitCharacters;
143public CompletionRules WithDefaultCommitCharacters(ImmutableArray<char> defaultCommitCharacters)
158private static readonly ImmutableArray<char> s_defaultCommitKeys = [' ', '{', '}', '[', ']', '(', ')', '.', ',', ':', ';', '+', '-', '*', '/', '%', '&', '|', '^', '!', '~', '=', '<', '>', '?', '@', '#', '\'', '\"', '\\'];
Completion\CompletionService_GetCompletions.cs (15)
85var triggeredProviders = GetTriggeredProviders(document, providers, caretPosition, options, trigger, roles, text);
87var additionalAugmentingProviders = await GetAugmentingProvidersAsync(document, triggeredProviders, caretPosition, trigger, options, cancellationToken).ConfigureAwait(false);
96var triggeredContexts = await ComputeNonEmptyCompletionContextsAsync(
105var exclusiveContexts = triggeredContexts.WhereAsArray(t => t.IsExclusive);
112var expandedContexts = triggeredContexts.WhereAsArray(static t => t.Provider.IsExpandItemProvider);
123var augmentingProviders = providers.Except(triggeredProviders).ToImmutableArray();
125var augmentingContexts = await ComputeNonEmptyCompletionContextsAsync(
133var allContexts = triggeredContexts.Concat(augmentingContexts)
138ImmutableArray<CompletionProvider> GetTriggeredProviders(
148var triggeredProviders = providers.Where(p => p.ShouldTriggerCompletion(document.Project.Services, text, caretPosition, trigger, options, passThroughOptions)).ToImmutableArrayOrEmpty();
161static async Task<ImmutableArray<CompletionProvider>> GetAugmentingProvidersAsync(
162Document document, ImmutableArray<CompletionProvider> triggeredProviders, int caretPosition, CompletionTrigger trigger, CompletionOptions options, CancellationToken cancellationToken)
240private static async Task<ImmutableArray<CompletionContext>> ComputeNonEmptyCompletionContextsAsync(
243ImmutableArray<CompletionProvider> providers,
262ImmutableArray<CompletionContext> completionContexts,
Completion\CompletionService.ProviderManager.cs (15)
30private readonly Dictionary<ImmutableHashSet<string>, ImmutableArray<CompletionProvider>> _rolesToProviders;
39_rolesToProviders = new Dictionary<ImmutableHashSet<string>, ImmutableArray<CompletionProvider>>(this);
97public ImmutableArray<CompletionProvider> GetCachedProjectCompletionProvidersOrQueueLoadInBackground(Project? project, CompletionOptions options)
114if (ProjectCompletionProvider.TryGetCachedExtensions(project.AnalyzerReferences, out var providers))
121private ImmutableArray<CompletionProvider> GetImportedAndBuiltInProviders(ImmutableHashSet<string>? roles)
127if (!_rolesToProviders.TryGetValue(roles, out var providers))
136ImmutableArray<CompletionProvider> GetImportedAndBuiltInProvidersWorker(ImmutableHashSet<string> roles)
170var allCompletionProviders = FilterProviders(GetImportedAndBuiltInProviders(roles), trigger, options);
171var projectCompletionProviders = FilterProviders(GetCachedProjectCompletionProvidersOrQueueLoadInBackground(project, options), trigger, options);
175private ImmutableArray<CompletionProvider> FilterProviders(
176ImmutableArray<CompletionProvider> providers,
260protected override ImmutableArray<string> GetLanguages(ExportCompletionProviderAttribute exportAttribute)
263protected override bool TryGetExtensionsFromReference(AnalyzerReference reference, out ImmutableArray<CompletionProvider> extensions)
284public ImmutableArray<CompletionProvider> GetImportedAndBuiltInProviders(ImmutableHashSet<string> roles)
289public ImmutableArray<CompletionProvider> GetProjectProviders(Project project)
Completion\Providers\AbstractDocCommentCompletionProvider.cs (13)
26private static readonly ImmutableArray<string> s_listTagNames = [ListHeaderElementName, TermElementName, ItemElementName, DescriptionElementName];
27private static readonly ImmutableArray<string> s_listHeaderTagNames = [TermElementName, DescriptionElementName];
28private static readonly ImmutableArray<string> s_nestedTagNames = [CElementName, CodeElementName, ParaElementName, ListElementName, BElementName, EmElementName, IElementName, StrongElementName, TtElementName];
29private static readonly ImmutableArray<string> s_topLevelRepeatableTagNames = [ExceptionElementName, IncludeElementName, PermissionElementName];
30private static readonly ImmutableArray<string> s_topLevelSingleUseTagNames = [SummaryElementName, RemarksElementName, ExampleElementName, CompletionListElementName];
48private static readonly ImmutableArray<(string elementName, string attributeName, string text)> s_attributeMap =
68private static readonly ImmutableArray<string> s_listTypeValues = ["bullet", "number", "table"];
104protected abstract ImmutableArray<string> GetKeywordNames();
109protected abstract ImmutableArray<IParameterSymbol> GetParameters(ISymbol symbol);
225protected ImmutableArray<CompletionItem> GetTopLevelItems(ISymbol? symbol, TSyntax syntax)
273private IEnumerable<CompletionItem> GetParameterItems<TSymbol>(ImmutableArray<TSymbol> symbols, TSyntax syntax, string tagName) where TSymbol : ISymbol
355protected static readonly ImmutableArray<CharacterSetModificationRule> FilterRules = [CharacterSetModificationRule.Create(CharacterSetModificationKind.Add, '!', '-', '[')];
359var commitRules = defaultRules.CommitCharacterRules;
Completion\Providers\AbstractSymbolCompletionProvider.cs (30)
31protected abstract Task<ImmutableArray<SymbolAndSelectionInfo>> GetSymbolsAsync(
43ImmutableArray<SymbolAndSelectionInfo> symbols,
147private ImmutableArray<CompletionItem> CreateItems(
149ImmutableArray<SymbolAndSelectionInfo> symbols,
152ImmutableArray<ProjectId> totalProjects)
188var symbolLists = DeduplicateSymbols(symbolGroup.Value);
190foreach (var symbolList in symbolLists)
196void CreateAndAddItem(ImmutableArray<SymbolAndSelectionInfo> symbolList, bool doNotMerge)
235protected virtual ImmutableArray<ImmutableArray<SymbolAndSelectionInfo>> DeduplicateSymbols(
261ImmutableArray<SymbolAndSelectionInfo> symbolList,
278ImmutableArray<SymbolAndSelectionInfo> symbols,
280ImmutableArray<ProjectId> totalProjects)
303ImmutableArray<SymbolAndSelectionInfo> symbols,
358var regularItems = await GetItemsAsync(completionContext, syntaxContext, document, position, options, cancellationToken).ConfigureAwait(false);
368private async Task<ImmutableArray<CompletionItem>> GetItemsAsync(
376var relatedDocumentIds = document.GetLinkedDocumentIds();
380var itemsForCurrentDocument = await GetSymbolsAsync(completionContext, syntaxContext, position, options, cancellationToken).ConfigureAwait(false);
389var contextAndSymbolLists = await GetPerContextSymbolsAsync(completionContext, document, options, documentIdToIndex.Keys, cancellationToken).ConfigureAwait(false);
397var totalProjects = contextAndSymbolLists.SelectAsArray(t => t.documentId.ProjectId);
399var items = CreateItems(
415ImmutableArray<(DocumentId documentId, TSyntaxContext syntaxContext, ImmutableArray<SymbolAndSelectionInfo> symbols)> linkedContextSymbolLists)
439private async Task<ImmutableArray<(DocumentId documentId, TSyntaxContext syntaxContext, ImmutableArray<SymbolAndSelectionInfo> symbols)>> GetPerContextSymbolsAsync(
444return await ProducerConsumer<(DocumentId documentId, TSyntaxContext syntaxContext, ImmutableArray<SymbolAndSelectionInfo> symbols)>.RunParallelAsync(
454var symbols = await @this.TryGetSymbolsForContextAsync(
467protected async Task<ImmutableArray<SymbolAndSelectionInfo>> TryGetSymbolsForContextAsync(
484ImmutableArray<(DocumentId documentId, TSyntaxContext syntaxContext, ImmutableArray<SymbolAndSelectionInfo> symbols)> linkedContextSymbolLists)
Completion\Providers\ImportCompletionProvider\ExtensionMemberImportCompletionHelper.cs (13)
54public static async Task<ImmutableArray<SerializableImportCompletionItem>> GetUnimportedExtensionMembersAsync(
59ImmutableArray<ITypeSymbol> targetTypesSymbols,
72var targetTypesSymbolKeyData = targetTypesSymbols.SelectAsArray(s => SymbolKey.CreateString(s, cancellationToken));
76var remoteResult = await client.TryInvokeAsync<IRemoteExtensionMemberImportCompletionService, ImmutableArray<SerializableImportCompletionItem>>(
93public static async Task<ImmutableArray<SerializableImportCompletionItem>> GetUnimportedExtensionMembersInCurrentProcessAsync(
100ImmutableArray<ITypeSymbol> targetTypes,
110var extensionMemberSymbols = await symbolComputer.GetExtensionMemberSymbolsAsync(
114var items = ConvertSymbolsToCompletionItems(compilation, extensionMemberSymbols, targetTypes, cancellationToken);
121var latestProjects = CompletionUtilities.GetDistinctProjectsFromLatestSolutionSnapshot(projects);
128private static ImmutableArray<SerializableImportCompletionItem> ConvertSymbolsToCompletionItems(
129Compilation compilation, ImmutableArray<ISymbol> extensionMemberSymbols, ImmutableArray<ITypeSymbol> targetTypeSymbols, CancellationToken cancellationToken)
200Compilation compilation, ISymbol extensionSymbol, ImmutableArray<ITypeSymbol> targetTypeSymbols,
Completion\Providers\SymbolCompletionItem.cs (23)
24private static readonly Action<ImmutableArray<ISymbol>, ArrayBuilder<KeyValuePair<string, string>>> s_addSymbolEncoding = AddSymbolEncoding;
25private static readonly Action<ImmutableArray<ISymbol>, ArrayBuilder<KeyValuePair<string, string>>> s_addSymbolInfo = AddSymbolInfo;
33ImmutableArray<ISymbol> symbols,
36Action<ImmutableArray<ISymbol>, ArrayBuilder<KeyValuePair<string, string>>> symbolEncoder,
41ImmutableArray<KeyValuePair<string, string>> properties = default,
42ImmutableArray<string> tags = default,
82private static void AddSymbolEncoding(ImmutableArray<ISymbol> symbols, ArrayBuilder<KeyValuePair<string, string>> properties)
85private static void AddSymbolInfo(ImmutableArray<ISymbol> symbols, ArrayBuilder<KeyValuePair<string, string>> properties)
115public static string EncodeSymbols(ImmutableArray<ISymbol> symbols)
139public static async Task<ImmutableArray<ISymbol>> GetSymbolsAsync(CompletionItem item, Document document, CancellationToken cancellationToken)
152var linkedIds = document.GetLinkedDocumentIds();
194var symbols = await GetSymbolsAsync(item, document, cancellationToken).ConfigureAwait(false);
199CompletionItem item, Document document, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, CancellationToken cancellationToken)
273private static ImmutableArray<ProjectId> SplitIntoProjectIds(string projectIds)
330ImmutableArray<ISymbol> symbols,
338ImmutableArray<string> tags = default,
362ImmutableArray<ISymbol> symbols,
372ImmutableArray<KeyValuePair<string, string>> properties = default,
373ImmutableArray<string> tags = default,
386ImmutableArray<ISymbol> symbols,
396ImmutableArray<KeyValuePair<string, string>> properties = default,
397ImmutableArray<string> tags = default,
417CompletionItem item, ImmutableArray<ISymbol> symbols, Document document, SemanticModel semanticModel, SymbolDescriptionOptions options, CancellationToken cancellationToken)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (7)
32protected sealed override ImmutableArray<RefactorAllScope> SupportedRefactorAllScopes => AllRefactorAllScopes;
47out var analyzer, out var sections, out var target))
76[NotNullWhen(true)] out ImmutableArray<AnalyzedSwitchSection> sections,
94var operations = parentBlock.Operations;
125bool supportsOrPattern, ImmutableArray<AnalyzedSwitchSection> sections)
183ImmutableArray<TextSpan> fixAllSpans,
250if (!ShouldOfferRefactoring(ifStatement, semanticModel, syntaxFactsService, out var analyzer, out var sections, out var target))
ConvertTupleToStruct\AbstractConvertTupleToStructCodeRefactoringProvider.cs (41)
75var fields = tupleType.TupleElements;
82var capturedTypeParameters =
93var recordChildActions = CreateChildActions(document, textSpan, tupleExprOrTypeNode, fields, capturedTypeParameters, isRecord: true);
105var childActions = CreateChildActions(document, textSpan, tupleExprOrTypeNode, fields, capturedTypeParameters, isRecord: false);
118ImmutableArray<CodeAction> CreateChildActions(
122ImmutableArray<IFieldSymbol> fields,
123ImmutableArray<ITypeParameterSymbol> capturedTypeParameters,
285var capturedTypeParameters =
303var documentsToUpdate = await GetDocumentsToUpdateAsync(
326ImmutableArray<DocumentToUpdate> documentsToUpdate,
328string structName, ImmutableArray<ITypeParameterSymbol> typeParameters,
375var nodesToUpdate = documentToUpdate.NodesToUpdate.IsDefault
405ImmutableArray<ITypeParameterSymbol> typeParameters, bool addRenameAnnotation)
418private static async Task<ImmutableArray<DocumentToUpdate>> GetDocumentsToUpdateAsync(
435private static async Task<ImmutableArray<DocumentToUpdate>> GetDocumentsToUpdateForDependentProjectAsync(
466var tupleFieldNames = tupleType.TupleElements.SelectAsArray<IFieldSymbol, string>(f => f.Name);
477private static async Task<ImmutableArray<DocumentToUpdate>> GetDocumentsToUpdateForContainingProjectAsync(
481var tupleFieldNames = tupleType.TupleElements.SelectAsArray<IFieldSymbol, string>(f => f.Name);
489private static async Task AddDocumentsToUpdateForProjectAsync(Project project, ArrayBuilder<DocumentToUpdate> result, ImmutableArray<string> tupleFieldNames, CancellationToken cancellationToken)
504private static bool InfoProbablyContainsTupleFieldNames(SyntaxTreeIndex info, ImmutableArray<string> tupleFieldNames)
517private static async Task<ImmutableArray<DocumentToUpdate>> GetDocumentsToUpdateForContainingTypeAsync(
534var nodes = group.SelectAsArray(r => r.GetSyntax(cancellationToken));
542private static ImmutableArray<DocumentToUpdate> GetDocumentsToUpdateForContainingMember(
616string structName, ImmutableArray<ITypeParameterSymbol> typeParameters,
636string typeName, ImmutableArray<ITypeParameterSymbol> typeParameters,
671StringComparer comparer, ImmutableArray<IFieldSymbol> fields1, ImmutableArray<IFieldSymbol> fields2)
690SyntaxEditor editor, string typeName, ImmutableArray<ITypeParameterSymbol> typeParameters,
750string typeName, ImmutableArray<ITypeParameterSymbol> typeParameters,
780SyntaxEditor editor, string typeName, ImmutableArray<ITypeParameterSymbol> typeParameters,
799Document document, Scope scope, bool isRecord, string structName, ImmutableArray<ITypeParameterSymbol> typeParameters,
804var fields = tupleType.TupleElements;
824document, namedTypeWithoutMembers, ImmutableArray<ISymbol>.CastUp(fields),
828ImmutableArray<ISymbol>.CastUp(fields), cancellationToken).ConfigureAwait(false);
857var assignments = tupleType.TupleElements.SelectAsArray(
886var arguments = tupleType.TupleElements.SelectAsArray<IFieldSymbol, SyntaxNode>(
911ImmutableArray<ITypeParameterSymbol> typeParameters, ImmutableArray<ISymbol> members)
923ImmutableArray<IFieldSymbol> fields, SyntaxGenerator generator,
929var parameters = fields.SelectAsArray(field =>
940var assignmentStatements = generator.CreateAssignmentStatements(
Copilot\IProposalAdjusterService.cs (18)
35[property: DataMember(Order = 0)] ImmutableArray<TextChange> TextChanges,
37[property: DataMember(Order = 2)] ImmutableArray<AdjustmentResult> AdjustmentResults);
54ImmutableArray<TextChange> normalizedChanges, LineFormattingOptions? lineFormattingOptions,
63DocumentId documentId, ImmutableArray<TextChange> normalizedChanges,
72private readonly ImmutableArray<(string name, Adjuster adjuster)> _adjusters;
89ImmutableArray<TextChange> normalizedChanges, LineFormattingOptions? lineFormattingOptions,
115ImmutableArray<TextChange> normalizedChanges, LineFormattingOptions? lineFormattingOptions,
162var totalChanges = FixLineEndingBoundaries(oldText, allChanges.AsImmutableOrEmpty());
181private static ImmutableArray<TextChange> FixLineEndingBoundaries(
182SourceText originalText, ImmutableArray<TextChange> changes)
254internal static ImmutableArray<TextChange> ConstrainChangesToAvoidSpan(
255SourceText originalText, ImmutableArray<TextChange> changes, TextSpan protectedSpan)
424private static TextSpan GetSpanToAnalyze(SyntaxNode forkedRoot, ImmutableArray<TextSpan> newSpans)
446var totalSpans = CopilotUtilities.GetTextSpansFromTextChanges(changes);
453internal static ImmutableArray<TextChange> FixLineEndingBoundaries(
454SourceText originalText, ImmutableArray<TextChange> changes)
457internal static ImmutableArray<TextChange> ConstrainChangesToAvoidSpan(
458SourceText originalText, ImmutableArray<TextChange> changes, TextSpan protectedSpan)
Diagnostics\IDiagnosticAnalyzerService.cs (14)
31Task<ImmutableArray<DiagnosticData>> ForceRunCodeAnalysisDiagnosticsAsync(
42Project project, ImmutableArray<string> diagnosticIds, CancellationToken cancellationToken);
66Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForIdsAsync(
67Project project, ImmutableArray<DocumentId> documentIds, ImmutableHashSet<string>? diagnosticIds, AnalyzerFilter analyzerFilter, bool includeLocalDocumentDiagnostics, CancellationToken cancellationToken);
78Task<ImmutableArray<DiagnosticData>> GetProjectDiagnosticsForIdsAsync(
89Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForSpanAsync(
98Solution solution, ImmutableArray<ProjectId> projectIds, CancellationToken cancellationToken);
101Task<ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>>> GetDiagnosticDescriptorsPerReferenceAsync(
105Task<ImmutableArray<DiagnosticDescriptor>> GetDiagnosticDescriptorsAsync(
112Task<ImmutableArray<string>> GetCompilationEndDiagnosticDescriptorIdsAsync(
125public static Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForSpanAsync(
142public static Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForSpanAsync(this IDiagnosticAnalyzerService service,
155public static Task<ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>>> GetDiagnosticDescriptorsPerReferenceAsync(
159public static Task<ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>>> GetDiagnosticDescriptorsPerReferenceAsync(
Diagnostics\Service\DiagnosticAnalyzerService_ComputeDiagnosticAnalysisResults.cs (6)
28ImmutableArray<DocumentDiagnosticAnalyzer> analyzers,
50static string GetProjectLogMessage(Project project, ImmutableArray<DocumentDiagnosticAnalyzer> analyzers)
89ImmutableArray<DocumentDiagnosticAnalyzer> ideAnalyzers)
118ImmutableArray<DocumentDiagnosticAnalyzer> ideAnalyzers,
134var syntaxDiagnostics = await DocumentAnalysisExecutor.ComputeDocumentDiagnosticAnalyzerDiagnosticsAsync(documentAnalyzer, textDocument, AnalysisKind.Syntax, compilation, tree, cancellationToken).ConfigureAwait(false);
135var semanticDiagnostics = await DocumentAnalysisExecutor.ComputeDocumentDiagnosticAnalyzerDiagnosticsAsync(documentAnalyzer, textDocument, AnalysisKind.Semantic, compilation, tree, cancellationToken).ConfigureAwait(false);
Diagnostics\Service\DiagnosticAnalyzerService_GetDiagnosticsForSpan.cs (19)
25private static async Task<ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>>> ComputeDocumentDiagnosticsCoreInProcessAsync(
29using var _ = PooledDictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>>.GetInstance(out var builder);
32var diagnostics = await executor.ComputeDiagnosticsInProcessAsync(analyzer, cancellationToken).ConfigureAwait(false);
39public async Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForSpanInProcessAsync(
50var unfilteredAnalyzers = GetProjectAnalyzers_OnlyCallInProcess(project);
51var analyzers = unfilteredAnalyzers
71var allDiagnostics = await this.ComputeDiagnosticsInProcessAsync(
78ImmutableArray<DiagnosticAnalyzer> syntaxAnalyzers,
79ImmutableArray<DiagnosticAnalyzer> semanticSpanAnalyzers,
80ImmutableArray<DiagnosticAnalyzer> semanticDocumentAnalyzers)> GetAllAnalyzersAsync()
172var descriptors = _analyzerInfoCache.GetDiagnosticDescriptors(analyzer);
220async Task<ImmutableArray<DiagnosticAnalyzer>> FilterAnalyzersAsync(
221ImmutableArray<DiagnosticAnalyzer> analyzers,
277private async Task<ImmutableArray<DiagnosticData>> ComputeDiagnosticsInProcessAsync(
280ImmutableArray<DiagnosticAnalyzer> allAnalyzers,
281ImmutableArray<DiagnosticAnalyzer> syntaxAnalyzers,
282ImmutableArray<DiagnosticAnalyzer> semanticSpanAnalyzers,
283ImmutableArray<DiagnosticAnalyzer> semanticDocumentAnalyzers,
308ImmutableArray<DiagnosticAnalyzer> analyzers,
Diagnostics\Service\DiagnosticAnalyzerService_RemoteOrLocalDispatcher.cs (18)
23public async Task<ImmutableArray<DiagnosticData>> ForceRunCodeAnalysisDiagnosticsAsync(
29var descriptors = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticData>>(
41public async Task<ImmutableArray<DiagnosticDescriptor>> GetDiagnosticDescriptorsAsync(
49var descriptors = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticDescriptorData>>(
65public async Task<ImmutableArray<string>> GetCompilationEndDiagnosticDescriptorIdsAsync(
71var result = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<string>>(
106Solution solution, ImmutableArray<ProjectId> projectIds, CancellationToken cancellationToken)
131public async Task<ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>>> GetDiagnosticDescriptorsPerReferenceAsync(
137var map = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptorData>>>(
143return ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>>.Empty;
154public async Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForIdsAsync(
155Project project, ImmutableArray<DocumentId> documentIds, ImmutableHashSet<string>? diagnosticIds, AnalyzerFilter analyzerFilter, bool includeLocalDocumentDiagnostics, CancellationToken cancellationToken)
160var result = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticData>>(
175public async Task<ImmutableArray<DiagnosticData>> GetProjectDiagnosticsForIdsAsync(
184var result = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticData>>(
197Project project, ImmutableArray<string> diagnosticIds, CancellationToken cancellationToken)
214public async Task<ImmutableArray<DiagnosticData>> GetDiagnosticsForSpanAsync(
225var result = await client.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticData>>(
Diagnostics\Service\DiagnosticAnalyzerService.IncrementalMemberEditAnalyzer.cs (20)
40private readonly record struct MemberSpans(DocumentId DocumentId, VersionStamp Version, ImmutableArray<TextSpan> Spans);
54public async Task<ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>>> ComputeDiagnosticsInProcessAsync(
56ImmutableArray<DiagnosticAnalyzer> analyzers,
115var oldMemberSpans = await GetOrCreateMemberSpansAsync(oldDocument, oldDocumentVersion, cancellationToken).ConfigureAwait(false);
119using var _ = PooledDictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>>.GetInstance(out var builder);
134ImmutableArray<TextSpan> oldMemberSpans,
135Dictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>> builder)
149ImmutableArray<TextSpan> oldMemberSpans,
150Dictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>> builder)
161ImmutableArray<TextSpan> oldMemberSpans,
162Dictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>> builder)
174ImmutableArray<TextSpan> oldMemberSpans,
175Dictionary<DiagnosticAnalyzer, ImmutableArray<DiagnosticData>> builder)
184var diagnostics = await executor.ComputeDiagnosticsInProcessAsync(analyzer, cancellationToken).ConfigureAwait(false);
190private async Task<(SyntaxNode changedMember, int changedMemberId, ImmutableArray<TextSpan> memberSpans, Document lastDocument)?> TryGetChangedMemberAsync(
214var memberSpans = members.SelectAsArray(member => member.FullSpan);
227private async Task<ImmutableArray<TextSpan>> GetOrCreateMemberSpansAsync(Document document, VersionStamp version, CancellationToken cancellationToken)
235var memberSpans = await CreateMemberSpansAsync(document, version, cancellationToken).ConfigureAwait(false);
244static async Task<ImmutableArray<TextSpan>> CreateMemberSpansAsync(Document document, VersionStamp version, CancellationToken cancellationToken)
257private void SaveMemberSpans(DocumentId documentId, VersionStamp version, ImmutableArray<TextSpan> memberSpans)
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (63)
125protected abstract IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes);
514ImmutableArray<ActiveStatementLineSpan> newActiveStatementSpans,
636var oldActiveStatements = oldActiveStatementMap.GetOldActiveStatements(this, oldTree, oldText, oldRoot, cancellationToken);
640var newExceptionRegions = ImmutableArray.CreateBuilder<ImmutableArray<SourceFileSpan>>(oldActiveStatements.Length);
649var semanticEdits = await AnalyzeSemanticsAsync(
672var finalDiagnostics = diagnostics.GetAllDiagnostics(
714void LogRudeEdits(ImmutableArray<RudeEditDiagnostic> diagnostics, SourceText text, string filePath)
952ImmutableArray<UnmappedActiveStatement> oldActiveStatements,
953ImmutableArray<ActiveStatementLineSpan> newActiveStatementSpans,
954[In, Out] ImmutableArray<ActiveStatement>.Builder newActiveStatements,
955[In, Out] ImmutableArray<ImmutableArray<SourceFileSpan>>.Builder newExceptionRegions,
1116ImmutableArray<UnmappedActiveStatement> oldActiveStatements,
1117ImmutableArray<ActiveStatementLineSpan> newActiveStatementSpans,
1120[Out] ImmutableArray<ActiveStatement>.Builder newActiveStatements,
1121[Out] ImmutableArray<ImmutableArray<SourceFileSpan>>.Builder newExceptionRegions,
1489private static bool TryGetTrackedStatement(ImmutableArray<ActiveStatementLineSpan> activeStatementSpans, ActiveStatementId id, SourceText text, MemberBody body, [NotNullWhen(true)] out SyntaxNode? trackedStatement, out int trackedStatementPart)
1542ImmutableArray<ImmutableArray<SourceFileSpan>>.Builder newExceptionRegions,
2549protected static bool ParameterTypesEquivalent(ImmutableArray<IParameterSymbol> oldParameters, ImmutableArray<IParameterSymbol> newParameters, bool exact)
2552protected static bool ParameterDefaultValuesEquivalent(ImmutableArray<IParameterSymbol> oldParameters, ImmutableArray<IParameterSymbol> newParameters)
2555protected static bool LambdaParametersEquivalent(ImmutableArray<IParameterSymbol> oldParameters, ImmutableArray<IParameterSymbol> newParameters)
2562protected static bool CustomModifiersEquivalent(ImmutableArray<CustomModifier> oldModifiers, ImmutableArray<CustomModifier> newModifiers, bool exact)
2590protected static bool TypesEquivalent<T>(ImmutableArray<T> oldTypes, ImmutableArray<T> newTypes, bool exact) where T : ITypeSymbol
2620protected static bool TypeParametersEquivalent(ImmutableArray<ITypeParameterSymbol> oldParameters, ImmutableArray<ITypeParameterSymbol> newParameters, bool exact)
2698private async Task<ImmutableArray<SemanticEditInfo>> AnalyzeSemanticsAsync(
2701ImmutableArray<UnmappedActiveStatement> oldActiveStatements,
2702ImmutableArray<ActiveStatementLineSpan> newActiveStatementSpans,
2710ImmutableArray<ActiveStatement>.Builder newActiveStatements,
2711ImmutableArray<ImmutableArray<SourceFileSpan>>.Builder newExceptionRegions,
3779var otherMembersOfParameterName = otherContainingType.GetMembers(parameterSymbol.Name);
4042private ImmutableArray<(ISymbol? oldSymbol, ISymbol? newSymbol, EditKind editKind)> GetNamespaceSymbolEdits(
4866ImmutableArray<AttributeData>? oldAttributes,
4867ImmutableArray<AttributeData> newAttributes,
4935static void FindChangedAttributes(ImmutableArray<AttributeData>? oldAttributes, ImmutableArray<AttributeData> newAttributes, ArrayBuilder<AttributeData> changedAttributes)
4949static AttributeData? FindMatch(AttributeData attribute, ImmutableArray<AttributeData>? oldAttributes)
5451var attributes = type.GetAttributes();
5799var oldCtors = isStatic ? type.StaticConstructors : type.InstanceConstructors;
6002out var oldInLambdaCaptures,
6003out var oldPrimaryCaptures);
6011out var newInLambdaCaptures,
6012out var newPrimaryCaptures);
6242out ImmutableArray<VariableCapture> variablesCapturedInLambdas,
6243out ImmutableArray<IParameterSymbol> primaryParametersCapturedViaThis)
6269var captures = lambdaBody.GetCapturedVariables(model.RequiredModel);
6317ImmutableArray<IParameterSymbol> oldPrimaryCaptures,
6319ImmutableArray<IParameterSymbol> newPrimaryCaptures,
6368ImmutableArray<VariableCapture> captures,
6380void MarkVariables(ImmutableArray<ISymbol> variables)
6395private static void BuildIndex(Dictionary<VariableCaptureKey, int> index, ImmutableArray<VariableCapture> array)
6414protected abstract SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken);
6514ImmutableArray<VariableCapture> oldCaptures,
6517ImmutableArray<VariableCapture> newCaptures,
EditAndContinue\ActiveStatementsMap.cs (15)
22new(ImmutableDictionary<string, ImmutableArray<ActiveStatement>>.Empty,
35public readonly IReadOnlyDictionary<string, ImmutableArray<ActiveStatement>> DocumentPathMap;
45private ImmutableDictionary<SyntaxTree, ImmutableArray<UnmappedActiveStatement>> _lazyOldDocumentActiveStatements;
48IReadOnlyDictionary<string, ImmutableArray<ActiveStatement>> documentPathMap,
56_lazyOldDocumentActiveStatements = ImmutableDictionary<SyntaxTree, ImmutableArray<UnmappedActiveStatement>>.Empty;
60ImmutableArray<ManagedActiveStatementDebugInfo> debugInfos,
61ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>> remapping)
121private static bool TryGetUpToDateSpan(ManagedActiveStatementDebugInfo activeStatementInfo, ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>> remapping, out LinePositionSpan newSpan)
140if (remapping.TryGetValue(instructionId.Method, out var regionsInMethod))
166internal async ValueTask<ImmutableArray<UnmappedActiveStatement>> GetOldActiveStatementsAsync(IEditAndContinueAnalyzer analyzer, Document oldDocument, CancellationToken cancellationToken)
174internal ImmutableArray<UnmappedActiveStatement> GetOldActiveStatements(IEditAndContinueAnalyzer analyzer, SyntaxTree oldSyntaxTree, SourceText oldText, SyntaxNode oldRoot, CancellationToken cancellationToken)
184private ImmutableArray<UnmappedActiveStatement> CalculateOldActiveStatementsAndExceptionRegions(IEditAndContinueAnalyzer analyzer, SyntaxTree oldTree, SourceText oldText, SyntaxNode oldRoot, CancellationToken cancellationToken)
213if (DocumentPathMap.TryGetValue(targetPath, out var activeStatementsInMappedFile))
235if (DocumentPathMap.TryGetValue(oldTree.FilePath, out var activeStatements))
291ImmutableArray<TElement> spans,
EditAndContinue\CommittedSolution.cs (8)
121internal ImmutableArray<(DocumentId id, DocumentState state)> Test_GetDocumentStates()
138public ImmutableArray<DocumentId> GetDocumentIdsWithFilePath(string path)
329var maybePdbHasDocument = TryReadSourceFileDebugInfo(document, sourceText.Encoding, out var requiredChecksum, out var checksumAlgorithm, out var defaultEncoding);
371ImmutableArray<byte> requiredChecksum,
440private static bool IsMatchingSourceText(SourceText sourceText, ImmutableArray<byte> requiredChecksum, SourceHashAlgorithm checksumAlgorithm)
447ImmutableArray<byte> requiredChecksum,
475private bool? TryReadSourceFileDebugInfo(Document document, Encoding? documentEncoding, out ImmutableArray<byte> checksum, out SourceHashAlgorithm checksumAlgorithm, out Encoding? defaultEncoding)
520out ImmutableArray<byte> checksum,
EditAndContinue\DebuggingSession.cs (16)
127private ImmutableArray<ManagedHotReloadUpdate> _lastModuleUpdatesLog;
156nonRemappableRegions: ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>>.Empty,
244internal void RestartEditSession(ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>>? nonRemappableRegions, bool? inBreakState)
444private static ImmutableDictionary<K, ImmutableArray<V>> GroupToImmutableDictionary<K, V>(IEnumerable<IGrouping<K, V>> items)
447var builder = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
457public async ValueTask<ImmutableArray<Diagnostic>> GetDocumentDiagnosticsAsync(Document document, ActiveStatementSpanProvider activeStatementSpanProvider, CancellationToken cancellationToken)
606ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>>? newNonRemappableRegions = null;
704public async ValueTask<ImmutableArray<ImmutableArray<ActiveStatementSpan>>> GetBaseActiveStatementSpansAsync(Solution solution, ImmutableArray<DocumentId> documentIds, CancellationToken cancellationToken)
781var oldDocumentActiveStatements = await baseActiveStatements.GetOldActiveStatementsAsync(analyzer, oldDocument, cancellationToken).ConfigureAwait(false);
816using var _4 = ArrayBuilder<ImmutableArray<ActiveStatementSpan>>.GetInstance(out var spans);
860public async ValueTask<ImmutableArray<ActiveStatementSpan>> GetAdjustedActiveStatementSpansAsync(TextDocument mappedDocument, ActiveStatementSpanProvider activeStatementSpanProvider, CancellationToken cancellationToken)
882if (!baseActiveStatements.DocumentPathMap.TryGetValue(mappedDocument.FilePath, out var oldMappedDocumentActiveStatements))
888var newDocumentActiveStatementSpans = await activeStatementSpanProvider(mappedDocument.Id, mappedDocument.FilePath, cancellationToken).ConfigureAwait(false);
972public ImmutableArray<IDisposable> GetBaselineModuleReaders()
EditAndContinue\DocumentAnalysisResults.cs (13)
30public ImmutableArray<ActiveStatement> ActiveStatements { get; }
36public ImmutableArray<RudeEditDiagnostic> RudeEdits { get; }
46public ImmutableArray<SemanticEditInfo> SemanticEdits { get; }
69public ImmutableArray<ImmutableArray<SourceFileSpan>> ExceptionRegions { get; }
79public ImmutableArray<SequencePointUpdates> LineEdits { get; }
110ImmutableArray<ActiveStatement> activeStatementsOpt,
111ImmutableArray<RudeEditDiagnostic> rudeEdits,
113ImmutableArray<SemanticEditInfo> semanticEditsOpt,
114ImmutableArray<ImmutableArray<SourceFileSpan>> exceptionRegionsOpt,
115ImmutableArray<SequencePointUpdates> lineEditsOpt,
185public static DocumentAnalysisResults Blocked(DocumentId documentId, string filePath, ImmutableArray<RudeEditDiagnostic> rudeEdits, Diagnostic? syntaxError, TimeSpan elapsedTime, bool hasChanges)
EditAndContinue\EditAndContinueDebugInfoReader.cs (6)
42public abstract bool TryGetDocumentChecksum(string documentPath, out ImmutableArray<byte> checksum, out Guid algorithmId);
90ImmutableArray<byte> localSlots, lambdaMap, stateMachineSuspensionPoints;
111public override bool TryGetDocumentChecksum(string documentPath, out ImmutableArray<byte> checksum, out Guid algorithmId)
145private ImmutableArray<byte> GetCdiBytes(MethodDefinitionHandle methodHandle, Guid kind)
150public override bool TryGetDocumentChecksum(string documentPath, out ImmutableArray<byte> checksum, out Guid algorithmId)
246internal static bool TryGetDocumentChecksum(ISymUnmanagedReader5 symReader, string documentPath, out ImmutableArray<byte> checksum, out Guid algorithmId)
EditAndContinue\EditAndContinueDocumentAnalysesCache.cs (9)
27private readonly Dictionary<DocumentId, (AsyncLazy<DocumentAnalysisResults> results, Project oldProject, Document? newDocument, ImmutableArray<ActiveStatementLineSpan> activeStatementSpans)> _analyses = [];
32public async ValueTask<ImmutableArray<DocumentAnalysisResults>> GetDocumentAnalysesAsync(
75var unmappedActiveStatementSpans = await GetLatestUnmappedActiveStatementSpansAsync(oldDocument, newDocument, activeStatementSpanProvider, cancellationToken).ConfigureAwait(false);
105private async Task<ImmutableArray<ActiveStatementLineSpan>> GetLatestUnmappedActiveStatementSpansAsync(Document? oldDocument, Document? newDocument, ActiveStatementSpanProvider newActiveStatementSpanProvider, CancellationToken cancellationToken)
131var newMappedDocumentSpans = await newActiveStatementSpanProvider(newDocument.Id, newDocument.FilePath, cancellationToken).ConfigureAwait(false);
139using var _1 = PooledDictionary<string, ImmutableArray<ActiveStatementSpan>>.GetInstance(out var mappedSpansByDocumentPath);
144var oldActiveStatements = await baseActiveStatements.GetOldActiveStatementsAsync(analyzer, oldDocument, cancellationToken).ConfigureAwait(false);
149if (!mappedSpansByDocumentPath.TryGetValue(mappedFilePath, out var newMappedDocumentSpans))
175private AsyncLazy<DocumentAnalysisResults> GetDocumentAnalysisNoLock(Project oldProject, Project newProject, Document? oldDocument, Document? newDocument, ImmutableArray<ActiveStatementLineSpan> activeStatementSpans)
EditAndContinue\EditSession.cs (32)
63internal readonly ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>> NonRemappableRegions;
90ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>> nonRemappableRegions,
155public async Task<string?> ReportModuleDiagnosticsAsync(Guid mvid, Project oldProject, Project newProject, ImmutableArray<DocumentAnalysisResults> documentAnalyses, ArrayBuilder<Diagnostic> diagnostics, CancellationToken cancellationToken)
174private static async IAsyncEnumerable<Location> CreateChangedLocationsAsync(Project oldProject, Project newProject, ImmutableArray<DocumentAnalysisResults> documentAnalyses, [EnumeratorCancellation] CancellationToken cancellationToken)
231var capabilities = await DebuggingSession.DebuggerService.GetCapabilitiesAsync(cancellationToken).ConfigureAwait(false);
245var debugInfos = await DebuggingSession.DebuggerService.GetActiveStatementsAsync(cancellationToken).ConfigureAwait(false);
257var newDocumentIds = newSolution.GetDocumentIdsWithFilePath(sourceFilePath);
587var generatorDiagnostics = await project.Solution.CompilationState.GetSourceGeneratorDiagnosticsAsync(project.State, cancellationToken).ConfigureAwait(false);
647private async Task<(ImmutableArray<DocumentAnalysisResults> results, Document? staleDocument)> AnalyzeProjectDifferencesAsync(
726var analyses = await Analyses.GetDocumentAnalysesAsync(DebuggingSession.LastCommittedSolution, newSolution, documents, newDocumentActiveStatementSpanProvider, cancellationToken).ConfigureAwait(false);
730private static ProjectAnalysisSummary GetProjectAnalysisSummary(ImmutableArray<DocumentAnalysisResults> documentAnalyses)
841ImmutableArray<DocumentAnalysisResults> changedDocumentAnalyses,
871var oldActiveStatements = (oldDocument == null) ? [] :
893internal static async ValueTask<(ImmutableArray<SemanticEdit> mergedEdits, ImmutableHashSet<ISymbol> addedSymbols)> MergePartialEditsAsync(
952var newMaps = partialTypeEdits.SelectAsArray(
1133using var _2 = ArrayBuilder<(Guid ModuleId, ImmutableArray<(ManagedModuleMethodId Method, NonRemappableRegion Region)>)>.GetInstance(out var nonRemappableRegions);
1414var requiredCapabilities = projectChanges.RequiredCapabilities.ToStringArray();
1480var updatedMethodTokens = emitResult.UpdatedMethods.SelectAsArray(h => MetadataTokens.GetToken(h));
1481var changedTypeTokens = emitResult.ChangedTypes.SelectAsArray(h => MetadataTokens.GetToken(h));
1490out var activeStatementsInUpdatedMethods,
1491out var moduleNonRemappableRegions,
1492out var exceptionRegionUpdates);
1582var diagnostics = diagnosticBuilders.SelectAsArray(entry => new ProjectDiagnostics(entry.Key, entry.Value.ToImmutableAndFree()));
1599var updates = deltas.ToImmutable();
1608out var projectsToRebuild);
1676ImmutableArray<int> updatedMethodTokens,
1677ImmutableDictionary<ManagedMethodId, ImmutableArray<NonRemappableRegion>> previousNonRemappableRegions,
1678ImmutableArray<DocumentActiveStatementChanges> activeStatementsInChangedDocuments,
1679out ImmutableArray<ManagedActiveStatementUpdate> activeStatementsInUpdatedMethods,
1680out ImmutableArray<(ManagedModuleMethodId Method, NonRemappableRegion Region)> nonRemappableRegions,
1681out ImmutableArray<ManagedExceptionRegionUpdate> exceptionRegionUpdates)
1697var newActiveStatementExceptionRegions = newExceptionRegions[i];
EditAndContinue\EmitSolutionUpdateResults.cs (24)
32public required ImmutableArray<DiagnosticData> Diagnostics { get; init; }
38public required ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart { get; init; }
41public required ImmutableArray<ProjectId> ProjectsToRebuild { get; init; }
44public required ImmutableArray<ProjectId> ProjectsToRedeploy { get; init; }
46internal ImmutableArray<ManagedHotReloadDiagnostic> GetAllDiagnostics()
85ImmutableArray<DiagnosticData> diagnostics = [];
117ProjectsToRestart = ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
142public required ImmutableArray<ProjectDiagnostics> Diagnostics { get; init; }
149public required ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart { get; init; }
156public required ImmutableArray<ProjectId> ProjectsToRebuild { get; init; }
162public required ImmutableArray<ProjectId> ProjectsToRedeploy { get; init; }
172ProjectsToRestart = ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
214ImmutableArray<ManagedHotReloadUpdate> moduleUpdates,
215ImmutableArray<ProjectDiagnostics> diagnostics,
218out ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> projectsToRestart,
219out ImmutableArray<ProjectId> projectsToRebuild)
252using var _3 = ArrayBuilder<(ProjectId projectWithRudeEdits, ImmutableArray<ProjectId> impactedRunningProjects)>.GetInstance(out var impactedRunningProjectMap);
401private static void ClassifyRudeEdits(ImmutableArray<Diagnostic> diagnostics, out bool blocking, out bool noEffect)
418public ImmutableArray<Diagnostic> GetAllDiagnostics()
438public ImmutableArray<(ProjectId projectId, ImmutableArray<Diagnostic> diagnostics)> GetTransientDiagnostics()
440using var _ = ArrayBuilder<(ProjectId projectId, ImmutableArray<Diagnostic> diagnostics)>.GetInstance(out var result);
444var transientDiagnostics = diagnostics.WhereAsArray(static d => d.IsEncDiagnostic());
457public ImmutableArray<Diagnostic> GetPersistentDiagnostics()
EditAndContinue\Remote\IRemoteEditAndContinueService.cs (9)
20ValueTask<ImmutableArray<ManagedActiveStatementDebugInfo>> GetActiveStatementsAsync(RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
22ValueTask<ImmutableArray<string>> GetCapabilitiesAsync(RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
25ValueTask<ImmutableArray<ActiveStatementSpan>> GetSpansAsync(RemoteServiceCallbackId callbackId, DocumentId? documentId, string filePath, CancellationToken cancellationToken);
26ValueTask<string?> TryGetMatchingSourceTextAsync(RemoteServiceCallbackId callbackId, string filePath, ImmutableArray<byte> requiredChecksum, SourceHashAlgorithm checksumAlgorithm, CancellationToken cancellationToken);
29ValueTask<ImmutableArray<DiagnosticData>> GetDocumentDiagnosticsAsync(Checksum solutionChecksum, RemoteServiceCallbackId callbackId, DocumentId documentId, CancellationToken cancellationToken);
49ValueTask<ImmutableArray<ImmutableArray<ActiveStatementSpan>>> GetBaseActiveStatementSpansAsync(Checksum solutionChecksum, DebuggingSessionId sessionId, ImmutableArray<DocumentId> documentIds, CancellationToken cancellationToken);
50ValueTask<ImmutableArray<ActiveStatementSpan>> GetAdjustedActiveStatementSpansAsync(Checksum solutionChecksum, RemoteServiceCallbackId callbackId, DebuggingSessionId sessionId, DocumentId documentId, CancellationToken cancellationToken);
EditAndContinue\Remote\RemoteEditAndContinueServiceProxy.cs (10)
32public ValueTask<ImmutableArray<ActiveStatementSpan>> GetSpansAsync(RemoteServiceCallbackId callbackId, DocumentId? documentId, string filePath, CancellationToken cancellationToken)
35public ValueTask<string?> TryGetMatchingSourceTextAsync(RemoteServiceCallbackId callbackId, string filePath, ImmutableArray<byte> requiredChecksum, SourceHashAlgorithm checksumAlgorithm, CancellationToken cancellationToken)
38public ValueTask<ImmutableArray<ManagedActiveStatementDebugInfo>> GetActiveStatementsAsync(RemoteServiceCallbackId callbackId, CancellationToken cancellationToken)
44public ValueTask<ImmutableArray<string>> GetCapabilitiesAsync(RemoteServiceCallbackId callbackId, CancellationToken cancellationToken)
56public async ValueTask<string?> TryGetMatchingSourceTextAsync(string filePath, ImmutableArray<byte> requiredChecksum, SourceHashAlgorithm checksumAlgorithm, CancellationToken cancellationToken)
68public async ValueTask<ImmutableArray<ManagedActiveStatementDebugInfo>> GetActiveStatementsAsync(CancellationToken cancellationToken)
104public async ValueTask<ImmutableArray<string>> GetCapabilitiesAsync(CancellationToken cancellationToken)
152public async ValueTask<ImmutableArray<DiagnosticData>> GetDocumentDiagnosticsAsync(Document document, ActiveStatementSpanProvider activeStatementSpanProvider, CancellationToken cancellationToken)
163var diagnostics = await GetLocalService().GetDocumentDiagnosticsAsync(document, activeStatementSpanProvider, cancellationToken).ConfigureAwait(false);
167var diagnosticData = await client.TryInvokeAsync<IRemoteEditAndContinueService, ImmutableArray<DiagnosticData>>(
EditAndContinue\SolutionUpdate.cs (16)
15ImmutableArray<(Guid ModuleId, ImmutableArray<(ManagedModuleMethodId Method, NonRemappableRegion Region)>)> nonRemappableRegions,
16ImmutableArray<ProjectBaseline> projectBaselines,
17ImmutableArray<ProjectDiagnostics> diagnostics,
19ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> projectsToRestart,
20ImmutableArray<ProjectId> projectsToRebuild,
21ImmutableArray<ProjectId> projectsToRedeploy)
25public readonly ImmutableArray<(Guid ModuleId, ImmutableArray<(ManagedModuleMethodId Method, NonRemappableRegion Region)>)> NonRemappableRegions = nonRemappableRegions;
26public readonly ImmutableArray<ProjectBaseline> ProjectBaselines = projectBaselines;
29public readonly ImmutableArray<ProjectDiagnostics> Diagnostics = diagnostics;
31public readonly ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>> ProjectsToRestart = projectsToRestart;
32public readonly ImmutableArray<ProjectId> ProjectsToRebuild = projectsToRebuild;
33public readonly ImmutableArray<ProjectId> ProjectsToRedeploy = projectsToRedeploy;
36ImmutableArray<ProjectDiagnostics> diagnostics,
47projectsToRestart: ImmutableDictionary<ProjectId, ImmutableArray<ProjectId>>.Empty,
EmbeddedLanguages\Classification\AbstractEmbeddedLanguageClassificationService.cs (2)
39Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
52SolutionServices services, Project? project, SemanticModel semanticModel, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
EncapsulateField\AbstractEncapsulateFieldService.cs (14)
42protected abstract Task<ImmutableArray<IFieldSymbol>> GetFieldsAsync(Document document, TextSpan span, CancellationToken cancellationToken);
47var fields = await GetFieldsAsync(document, span, cancellationToken).ConfigureAwait(false);
58public async Task<ImmutableArray<CodeAction>> GetEncapsulateFieldCodeActionsAsync(Document document, TextSpan span, CancellationToken cancellationToken)
60var fields = await GetFieldsAsync(document, span, cancellationToken).ConfigureAwait(false);
82private ImmutableArray<CodeAction> EncapsulateAllFields(Document document, ImmutableArray<IFieldSymbol> fields)
94private ImmutableArray<CodeAction> EncapsulateOneField(Document document, IFieldSymbol field)
96var fields = ImmutableArray.Create(field);
111Document document, ImmutableArray<IFieldSymbol> fields,
122var fieldSymbolKeys = fields.SelectAsArray(f => SymbolKey.CreateString(f, cancellationToken));
124var result = await client.TryInvokeAsync<IRemoteEncapsulateFieldService, ImmutableArray<(DocumentId, ImmutableArray<TextChange>)>>(
141private async Task<Solution> EncapsulateFieldsInCurrentProcessAsync(Document document, ImmutableArray<IFieldSymbol> fields, bool updateReferences, CancellationToken cancellationToken)
237var linkedDocumentIds = document.GetLinkedDocumentIds();
ExternalAccess\UnitTesting\API\UnitTestingHotReloadService.cs (22)
18private sealed class DebuggerService(ImmutableArray<string> capabilities) : IManagedHotReloadService
20private readonly ImmutableArray<string> _capabilities = capabilities;
22public ValueTask<ImmutableArray<ManagedActiveStatementDebugInfo>> GetActiveStatementsAsync(CancellationToken cancellationToken)
23=> ValueTask.FromResult(ImmutableArray<ManagedActiveStatementDebugInfo>.Empty);
28public ValueTask<ImmutableArray<string>> GetCapabilitiesAsync(CancellationToken cancellationToken)
37ImmutableArray<byte> ilDelta,
38ImmutableArray<byte> metadataDelta,
39ImmutableArray<byte> pdbDelta,
40ImmutableArray<int> updatedMethods,
41ImmutableArray<int> updatedTypes)
44public readonly ImmutableArray<byte> ILDelta = ilDelta;
45public readonly ImmutableArray<byte> MetadataDelta = metadataDelta;
46public readonly ImmutableArray<byte> PdbDelta = pdbDelta;
47public readonly ImmutableArray<int> UpdatedMethods = updatedMethods;
48public readonly ImmutableArray<int> UpdatedTypes = updatedTypes;
52(_, _, _) => ValueTask.FromResult(ImmutableArray<ActiveStatementSpan>.Empty);
62public async Task StartSessionAsync(Solution solution, ImmutableArray<string> capabilities, CancellationToken cancellationToken)
80/// where <paramref name="commitUpdates"/> was `true` or the one passed to <see cref="StartSessionAsync(Solution, ImmutableArray{string}, CancellationToken)"/>
88public async Task<(ImmutableArray<Update> updates, ImmutableArray<Diagnostic> diagnostics)> EmitSolutionUpdateAsync(Solution solution, bool commitUpdates, CancellationToken cancellationToken)
109var diagnostics = results.GetAllDiagnostics();
115var updates = results.ModuleUpdates.Updates.SelectAsArray(
ExternalAccess\UnitTesting\SolutionCrawler\UnitTestingWorkCoordinator.UnitTestingIncrementalAnalyzerProcessor.cs (11)
57var lazyAllAnalyzers = new Lazy<ImmutableArray<IUnitTestingIncrementalAnalyzer>>(() => GetIncrementalAnalyzers(_registration, analyzersGetter, onlyHighPriorityAnalyzer: false));
66private static ImmutableArray<IUnitTestingIncrementalAnalyzer> GetIncrementalAnalyzers(UnitTestingRegistration registration, UnitTestingAnalyzersGetter analyzersGetter, bool onlyHighPriorityAnalyzer)
68var orderedAnalyzers = analyzersGetter.GetOrderedAnalyzers(registration.WorkspaceKind, registration.Services, onlyHighPriorityAnalyzer);
97public ImmutableArray<IUnitTestingIncrementalAnalyzer> Analyzers => _normalPriorityProcessor.Analyzers;
120TextDocument textDocument, ImmutableArray<IUnitTestingIncrementalAnalyzer> analyzers, UnitTestingWorkItem workItem, CancellationToken cancellationToken)
148ImmutableArray<IUnitTestingIncrementalAnalyzer> analyzers,
181private async Task RunBodyAnalyzersAsync(ImmutableArray<IUnitTestingIncrementalAnalyzer> analyzers, UnitTestingWorkItem workItem, Document document, CancellationToken cancellationToken)
269internal void WaitUntilCompletion(ImmutableArray<IUnitTestingIncrementalAnalyzer> analyzers, List<UnitTestingWorkItem> items)
287private readonly Dictionary<(string workspaceKind, SolutionServices services), ImmutableArray<IUnitTestingIncrementalAnalyzer>> _analyzerMap = [];
289public ImmutableArray<IUnitTestingIncrementalAnalyzer> GetOrderedAnalyzers(string workspaceKind, SolutionServices services, bool onlyHighPriorityAnalyzer)
293if (!_analyzerMap.TryGetValue((workspaceKind, services), out var analyzers))
ExternalAccess\VSTypeScript\VSTypeScriptClassificationService.cs (4)
30public void AddSyntacticClassifications(SolutionServices services, SyntaxNode? root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
34public Task AddSyntacticClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
37public Task AddEmbeddedLanguageClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
49public async Task AddSemanticClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
ExtractMethod\MethodExtractor.Analyzer.cs (19)
127var typeParametersInConstraintList = GetMethodTypeParametersInConstraintList(variableInfoMap, symbolMap, sortedMap);
128var typeParametersInDeclaration = GetMethodTypeParametersInDeclaration(returnType, sortedMap);
146private (ImmutableArray<VariableInfo> finalOrderedVariableInfos, ITypeSymbol returnType, bool returnsByRef)
149var allVariableInfos = symbolMap.Values.Order().ToImmutableArray();
164var finalOrderedVariableInfos = MarkVariableInfosToUseAsReturnValueIfPossible(
166var variablesToUseAsReturnValue = finalOrderedVariableInfos.WhereAsArray(v => v.UseAsReturnValue);
197ITypeSymbol GetReturnType(ImmutableArray<VariableInfo> variablesToUseAsReturnValue)
222ImmutableArray<VariableInfo> variables,
230var namesWithAnonymousTypes = variables.SelectAsArray(v => v.OriginalTypeHadAnonymousTypeOrDelegate, v => v.Name ?? string.Empty);
310private ImmutableArray<VariableInfo> MarkVariableInfosToUseAsReturnValueIfPossible(
311ImmutableArray<VariableInfo> variableInfos, bool hasFlowControlResult)
348ImmutableArray<VariableInfo> variableInfo,
523PooledDisposer<PooledHashSet<ISymbol>> GetPooledSymbolSet(ImmutableArray<ISymbol> symbols, out PooledHashSet<ISymbol> symbolSet)
762var constraintTypes = typeParameter.ConstraintTypes;
784private ImmutableArray<ITypeParameterSymbol> GetMethodTypeParametersInConstraintList(
807var constraintTypes = typeParameter.ConstraintTypes;
832var parameters = constructedType.GetAllTypeParameters();
833var arguments = constructedType.GetAllTypeArguments();
860private ImmutableArray<ITypeParameterSymbol> GetMethodTypeParametersInDeclaration(ITypeSymbol returnType, SortedDictionary<int, ITypeParameterSymbol> sortedMap)
FindUsages\DefinitionItem.cs (44)
59public ImmutableArray<string> Tags { get; }
71public ImmutableArray<(string key, string value)> DisplayableProperties { get; }
77public ImmutableArray<TaggedText> NameDisplayParts { get; }
83public ImmutableArray<TaggedText> DisplayParts { get; }
89public ImmutableArray<DocumentSpan> SourceSpans { get; }
94public ImmutableArray<ClassifiedSpansAndHighlightSpan?> ClassifiedSpans { get; }
99public ImmutableArray<AssemblyLocation> MetadataLocations { get; }
116ImmutableArray<string> tags,
117ImmutableArray<TaggedText> displayParts,
118ImmutableArray<TaggedText> nameDisplayParts,
119ImmutableArray<DocumentSpan> sourceSpans,
120ImmutableArray<ClassifiedSpansAndHighlightSpan?> classifiedSpans,
121ImmutableArray<AssemblyLocation> metadataLocations,
123ImmutableArray<(string key, string value)> displayableProperties,
162ImmutableArray<string> tags,
163ImmutableArray<TaggedText> displayParts,
165ImmutableArray<TaggedText> nameDisplayParts = default,
177ImmutableArray<string> tags,
178ImmutableArray<TaggedText> displayParts,
181ImmutableArray<TaggedText> nameDisplayParts = default,
194ImmutableArray<string> tags,
195ImmutableArray<TaggedText> displayParts,
196ImmutableArray<DocumentSpan> sourceSpans,
197ImmutableArray<ClassifiedSpansAndHighlightSpan?> classifiedSpans,
198ImmutableArray<TaggedText> nameDisplayParts,
208ImmutableArray<string> tags,
209ImmutableArray<TaggedText> displayParts,
210ImmutableArray<DocumentSpan> sourceSpans,
211ImmutableArray<ClassifiedSpansAndHighlightSpan?> classifiedSpans,
212ImmutableArray<TaggedText> nameDisplayParts = default,
222ImmutableArray<string> tags,
223ImmutableArray<TaggedText> displayParts,
224ImmutableArray<DocumentSpan> sourceSpans,
225ImmutableArray<ClassifiedSpansAndHighlightSpan?> classifiedSpans,
226ImmutableArray<AssemblyLocation> metadataLocations,
227ImmutableArray<TaggedText> nameDisplayParts = default,
229ImmutableArray<(string key, string value)> displayableProperties = default,
243ImmutableArray<string> tags,
244ImmutableArray<TaggedText> displayParts,
245ImmutableArray<TaggedText> originationParts,
254ImmutableArray<string> tags,
255ImmutableArray<TaggedText> displayParts,
256ImmutableArray<TaggedText> nameDisplayParts = default,
257ImmutableArray<AssemblyLocation> metadataLocations = default,
FindUsages\DefinitionItemFactory.cs (19)
46ImmutableArray<Location> locations,
53var sourceLocations = await GetSourceLocationsAsync(
74var sourceLocations = await GetSourceLocationsAsync(solution, definition, definition.Locations, includeHiddenLocations, cancellationToken).ConfigureAwait(false);
75var classifiedSpans = await ClassifyDocumentSpansAsync(classificationOptions, sourceLocations, cancellationToken).ConfigureAwait(false);
90var locations = group.Symbols.SelectManyAsArray(s => s.Locations);
92var sourceLocations = await GetSourceLocationsAsync(solution, definition, locations, includeHiddenLocations, cancellationToken).ConfigureAwait(false);
93var classifiedSpans = await ClassifyDocumentSpansAsync(classificationOptions, sourceLocations, cancellationToken).ConfigureAwait(false);
99ImmutableArray<DocumentSpan> sourceLocations,
100ImmutableArray<ClassifiedSpansAndHighlightSpan?> classifiedSpans,
118var displayParts = GetDisplayParts(definition);
119var nameDisplayParts = definition.ToDisplayParts(s_namePartsFormat).ToTaggedText();
121var tags = GlyphTags.GetTags(definition.GetGlyph());
127var metadataLocations = GetMetadataLocations(definition, solution, out var originatingProjectId);
145var displayableProperties = AbstractReferenceFinder.GetAdditionalFindUsagesProperties(definition);
168internal static ImmutableArray<AssemblyLocation> GetMetadataLocations(ISymbol definition, Solution solution, out ProjectId? originatingProjectId)
228private static async Task<ImmutableArray<DocumentSpan>> GetSourceLocationsAsync(
231ImmutableArray<Location> locations,
258private static ValueTask<ImmutableArray<ClassifiedSpansAndHighlightSpan?>> ClassifyDocumentSpansAsync(OptionsProvider<ClassificationOptions> optionsProvider, ImmutableArray<DocumentSpan> unclassifiedSpans, CancellationToken cancellationToken)
FindUsages\IRemoteFindUsagesService.cs (19)
33ValueTask OnReferencesFoundAsync(RemoteServiceCallbackId callbackId, ImmutableArray<SerializableSourceReferenceItem> references, CancellationToken cancellationToken);
74public ValueTask OnReferencesFoundAsync(RemoteServiceCallbackId callbackId, ImmutableArray<SerializableSourceReferenceItem> references, CancellationToken cancellationToken)
132public async ValueTask OnReferencesFoundAsync(ImmutableArray<SerializableSourceReferenceItem> references, CancellationToken cancellationToken)
144ImmutableArray<SerializableSourceReferenceItem> references, [EnumeratorCancellation] CancellationToken cancellationToken)
189ImmutableArray<string> tags,
190ImmutableArray<TaggedText> displayParts,
191ImmutableArray<TaggedText> nameDisplayParts,
192ImmutableArray<SerializableDocumentSpan> sourceSpans,
193ImmutableArray<AssemblyLocation> metadataLocations,
195ImmutableArray<(string key, string value)> displayableProperties,
202public readonly ImmutableArray<string> Tags = tags;
205public readonly ImmutableArray<TaggedText> DisplayParts = displayParts;
208public readonly ImmutableArray<TaggedText> NameDisplayParts = nameDisplayParts;
211public readonly ImmutableArray<SerializableDocumentSpan> SourceSpans = sourceSpans;
214public readonly ImmutableArray<AssemblyLocation> MetadataLocations = metadataLocations;
220public readonly ImmutableArray<(string key, string value)> DisplayableProperties = displayableProperties;
238var sourceSpans = await SourceSpans.SelectAsArrayAsync(static (ss, solution, cancellationToken) => ss.RehydrateAsync(solution, cancellationToken), solution, cancellationToken).ConfigureAwait(false);
284ImmutableArray<(string key, string value)> additionalProperties)
299public readonly ImmutableArray<(string key, string value)> AdditionalProperties = additionalProperties;
FullyQualify\AbstractFullyQualifyService.cs (14)
78var matchingTypes = await FindAsync(name, ignoreCase, SymbolFilter.Type).ConfigureAwait(false);
79var matchingAttributeTypes = inAttributeContext ? await FindAsync(name + nameof(Attribute), ignoreCase, SymbolFilter.Type).ConfigureAwait(false) : [];
80var matchingNamespaces = inAttributeContext ? [] : await FindAsync(name, ignoreCase, SymbolFilter.Namespace).ConfigureAwait(false);
89var matchingTypeSearchResults = GetTypeSearchResults(semanticModel, simpleName, options.HideAdvancedMembers, [.. matchingTypes, .. matchingAttributeTypes]);
90var matchingNamespaceSearchResults = GetNamespaceSearchResults(semanticModel, simpleName, matchingNamespaces);
97var proposedContainers = matchingTypeContainers
112async Task<ImmutableArray<ISymbol>> FindAsync(string name, bool ignoreCase, SymbolFilter filter)
119ImmutableArray<SymbolResult> GetTypeSearchResults(
123ImmutableArray<ISymbol> matchingTypes)
132var validSymbols = matchingTypes
151ImmutableArray<SymbolResult> GetNamespaceSearchResults(
154ImmutableArray<ISymbol> symbols)
186ImmutableArray<SymbolResult> proposedContainers,
291ImmutableArray<SymbolResult> symbols, Compilation compilation)
GenerateConstructors\AbstractGenerateConstructorsCodeRefactoringProvider.State.cs (8)
30public ImmutableArray<(IParameterSymbol parameter, ISymbol fieldOrProperty)> Parameters { get; private set; }
41ImmutableArray<ISymbol> selectedMembers,
57ImmutableArray<ISymbol> selectedMembers,
60var mappedMembers = selectedMembers.Select(m => TryMapToWritableInstanceFieldOrProperty(service, m, cancellationToken)).Distinct().ToImmutableArray();
72var rules = await document.GetNamingRulesAsync(cancellationToken).ConfigureAwait(false);
98ImmutableArray<(IParameterSymbol parameter, ISymbol fieldOrProperty)> parameters)
113private static IMethodSymbol? GetMatchingConstructorBasedOnParameterTypes(INamedTypeSymbol containingType, ImmutableArray<(IParameterSymbol parameter, ISymbol fieldOrProperty)> parameters)
116private static bool MatchesConstructorBasedOnParameterTypes(IMethodSymbol constructor, ImmutableArray<(IParameterSymbol parameter, ISymbol fieldOrProperty)> parameters)
GenerateEqualsAndGetHashCodeFromMembers\AbstractGenerateEqualsAndGetHashCodeService.cs (12)
25ImmutableArray<SyntaxNode> statements, out ImmutableArray<SyntaxNode> wrappedStatements);
39Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members,
52ImmutableArray<ISymbol> members, INamedTypeSymbol constructedEquatableType, CancellationToken cancellationToken)
118ImmutableArray<ISymbol> members, CancellationToken cancellationToken)
128INamedTypeSymbol namedType, ImmutableArray<ISymbol> members)
130var statements = CreateGetHashCodeStatements(
146private ImmutableArray<SyntaxNode> CreateGetHashCodeStatements(
148INamedTypeSymbol namedType, ImmutableArray<ISymbol> members)
155var components = factory.GetGetHashCodeComponents(
165var statements = factory.CreateGetHashCodeMethodStatements(
176if (TryWrapWithUnchecked(statements, out var wrappedStatements))
GenerateEqualsAndGetHashCodeFromMembers\GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider.cs (9)
61var actions = await GenerateEqualsAndGetHashCodeFromMembersAsync(document, textSpan, cancellationToken).ConfigureAwait(false);
99var viableMembers = containingType
115var actions = await CreateActionsAsync(
168public async Task<ImmutableArray<CodeAction>> GenerateEqualsAndGetHashCodeFromMembersAsync(
199private async Task<ImmutableArray<CodeAction>> CreateActionsAsync(
200Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> selectedMembers,
240Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
257Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
294Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
GenerateEqualsAndGetHashCodeFromMembers\IGenerateEqualsAndGetHashCodeService.cs (3)
29Task<IMethodSymbol> GenerateEqualsMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, string? localNameOpt, CancellationToken cancellationToken);
41Task<IMethodSymbol> GenerateIEquatableEqualsMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, INamedTypeSymbol constructedEquatableType, CancellationToken cancellationToken);
50Task<IMethodSymbol> GenerateGetHashCodeMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, CancellationToken cancellationToken);
InheritanceMargin\AbstractInheritanceMarginService_Helpers.cs (53)
25using SymbolAndLineNumberArray = ImmutableArray<(ISymbol symbol, int lineNumber)>;
43private static async ValueTask<ImmutableArray<InheritanceMarginItem>> GetSymbolInheritanceChainItemsAsync(
46SymbolAndLineNumberArray symbolAndLineNumbers,
83private async ValueTask<(Project remapped, SymbolAndLineNumberArray symbolAndLineNumbers)> GetMemberSymbolsAsync(
89var allDeclarationNodes = GetMembers(root.DescendantNodes(spanToSearch));
129return (document.Project, SymbolAndLineNumberArray.Empty);
132private async Task<ImmutableArray<InheritanceMarginItem>> GetInheritanceMarginItemsInProcessAsync(
164private async Task<ImmutableArray<InheritanceMarginItem>> GetGlobalImportsItemsAsync(
187var scopes = semanticModel.GetImportScopes(root.FullSpan.End, cancellationToken);
197var nonLocalImports = lastScope.Imports
297var allBaseSymbols = typeHierarchyService.GetBaseTypesAndInterfaces(memberSymbol, transitive: true);
307var baseSymbols = allBaseSymbols
311var allDerivedSymbols = await typeHierarchyService.GetDerivedTypesAndImplementationsAsync(
320var derivedSymbols = allDerivedSymbols.WhereAsArray(symbol => symbol.Locations.Any(static l => l.IsInSource));
360var allImplementingSymbols = await GetImplementingSymbolsForTypeMemberAsync(solution, memberSymbol, cancellationToken).ConfigureAwait(false);
365var implementingSymbols = allImplementingSymbols.WhereAsArray(symbol => symbol.Locations.Any(static l => l.IsInSource));
381var allOverridingSymbols = await SymbolFinder.FindOverridesArrayAsync(memberSymbol, solution, cancellationToken: cancellationToken).ConfigureAwait(false);
384var overriddenSymbols = GetOverriddenSymbols(memberSymbol, allowLooseMatch: true);
387var implementedSymbols = GetImplementedSymbolsForTypeMember(memberSymbol, overriddenSymbols);
392var overridingSymbols = allOverridingSymbols.WhereAsArray(symbol => symbol.Locations.Any(static l => l.IsInSource));
412ImmutableArray<ISymbol> baseSymbols,
413ImmutableArray<ISymbol> derivedTypesSymbols,
416var baseSymbolItems = await baseSymbols
426var derivedTypeItems = await derivedTypesSymbols
436var nonNullBaseSymbolItems = GetNonNullTargetItems(baseSymbolItems);
437var nonNullDerivedTypeItems = GetNonNullTargetItems(derivedTypeItems);
451ImmutableArray<ISymbol> implementingMembers,
454var implementedMemberItems = await implementingMembers
464var nonNullImplementedMemberItems = GetNonNullTargetItems(implementedMemberItems);
477ImmutableArray<ISymbol> baseSymbols,
478ImmutableArray<ISymbol> derivedTypesSymbols,
483var baseSymbolItems = await baseSymbols
493var derivedTypeItems = await derivedTypesSymbols
503var nonNullBaseSymbolItems = GetNonNullTargetItems(baseSymbolItems);
504var nonNullDerivedTypeItems = GetNonNullTargetItems(derivedTypeItems);
518ImmutableArray<ISymbol> implementedMembers,
519ImmutableArray<ISymbol> overridingMembers,
520ImmutableArray<ISymbol> overriddenMembers,
523var implementedMemberItems = await implementedMembers
533var overriddenMemberItems = await overriddenMembers
543var overridingMemberItems = await overridingMembers
553var nonNullImplementedMemberItems = GetNonNullTargetItems(implementedMemberItems);
554var nonNullOverriddenMemberItems = GetNonNullTargetItems(overriddenMemberItems);
555var nonNullOverridingMemberItems = GetNonNullTargetItems(overridingMemberItems);
601private static ImmutableArray<ISymbol> GetImplementedSymbolsForTypeMember(
603ImmutableArray<ISymbol> overriddenSymbols)
610var directImplementingSymbols = memberSymbol.ExplicitOrImplicitInterfaceImplementations();
633private static async Task<ImmutableArray<ISymbol>> GetImplementingSymbolsForTypeMemberAsync(
643var implementationSymbols = await SymbolFinder.FindMemberImplementationsArrayAsync(
668private static ImmutableArray<ISymbol> GetOverriddenSymbols(ISymbol memberSymbol, bool allowLooseMatch)
694var locations = symbol.Locations;
735private static ImmutableArray<InheritanceTargetItem> GetNonNullTargetItems(ImmutableArray<InheritanceTargetItem?> inheritanceTargetItems)
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (22)
49protected sealed override Task<ImmutableArray<CodeAction>> GetRefactoringsForAllParametersAsync(
51ImmutableArray<SyntaxNode> listOfParameterNodes, TextSpan parameterSpan,
57protected sealed override async Task<ImmutableArray<CodeAction>> GetRefactoringsForSingleParameterAsync(
83var rules = await document.GetNamingRulesAsync(cancellationToken).ConfigureAwait(false);
102private async Task<ImmutableArray<CodeAction>> HandleNoExistingFieldOrPropertyAsync(
108ImmutableArray<NamingRule> rules,
159ImmutableArray<NamingRule> rules,
165var parameters = GetParametersWithoutAssociatedMembers(blockStatement, rules, method);
170var fields = parameters.SelectAsArray(p => (ISymbol)CreateField(p, accessibilityModifiersRequired, rules));
171var properties = parameters.SelectAsArray(p => (ISymbol)CreateProperty(p, accessibilityModifiersRequired, rules));
192ImmutableArray<NamingRule> rules,
213private static ImmutableArray<IParameterSymbol> GetParametersWithoutAssociatedMembers(
215ImmutableArray<NamingRule> rules,
236private ImmutableArray<CodeAction> HandleExistingFieldOrProperty(
276ImmutableArray<NamingRule> rules)
278var parameterNameParts = IdentifierNameParts.CreateIdentifierNameParts(parameter, rules).BaseNameParts;
312ImmutableArray<NamingRule> rules)
314var parameterNameParts = IdentifierNameParts.CreateIdentifierNameParts(parameter, rules).BaseNameParts;
360ImmutableArray<IParameterSymbol> parameters,
361ImmutableArray<ISymbol> fieldsOrProperties,
615Document document, IParameterSymbol parameter, IBlockOperation? blockStatement, ImmutableArray<NamingRule> rules, ImmutableArray<string> parameterWords, CancellationToken cancellationToken)
InlineHints\InlineHint.cs (9)
17public readonly ImmutableArray<TaggedText> DisplayParts;
20private readonly Func<Document, CancellationToken, Task<ImmutableArray<TaggedText>>>? _getDescriptionAsync;
24ImmutableArray<TaggedText> displayParts,
25Func<Document, CancellationToken, Task<ImmutableArray<TaggedText>>>? getDescriptionAsync = null)
32ImmutableArray<TaggedText> displayParts,
34Func<Document, CancellationToken, Task<ImmutableArray<TaggedText>>>? getDescriptionAsync = null)
41ImmutableArray<TaggedText> displayParts,
44Func<Document, CancellationToken, Task<ImmutableArray<TaggedText>>>? getDescriptionAsync = null)
60public Task<ImmutableArray<TaggedText>> GetDescriptionAsync(Document document, CancellationToken cancellationToken)
InlineHints\InlineHintHelpers.cs (4)
19public static Func<Document, CancellationToken, Task<ImmutableArray<TaggedText>>>? GetDescriptionFunction(int position, ISymbol symbol, SymbolDescriptionOptions options)
24private static async Task<ImmutableArray<TaggedText>> GetDescriptionAsync(Document document, int position, ISymbol originalSymbol, SymbolDescriptionOptions options, CancellationToken cancellationToken)
42var documentation = symbol.GetDocumentationParts(semanticModel, position, formatter, cancellationToken);
50if (groups.TryGetValue(SymbolDescriptionGroups.StructuralTypes, out var anonymousTypes))
LanguageServices\SymbolDisplayService\AbstractSymbolDisplayService.AbstractSymbolDescriptionBuilder.cs (34)
84private readonly Dictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>> _documentationMap = [];
111protected abstract Task<ImmutableArray<SymbolDisplayPart>> GetInitializerSourcePartsAsync(ISymbol symbol);
112protected abstract ImmutableArray<SymbolDisplayPart> ToMinimalDisplayParts(ISymbol symbol, SemanticModel semanticModel, int position, SymbolDisplayFormat format);
158protected virtual ImmutableArray<SymbolDisplayPart> WrapConstraints(ISymbol symbol, ImmutableArray<SymbolDisplayPart> displayParts)
161private async Task AddPartsAsync(ImmutableArray<ISymbol> symbols)
282var parts = formatter.Format(rawXmlText, symbol, _semanticModel, _position, format, typeDisplayInfo, CancellationToken);
344var captures = analysis.CapturedInside.Except(analysis.VariablesDeclared).ToImmutableArray();
372public async Task<ImmutableArray<SymbolDisplayPart>> BuildDescriptionAsync(
373ImmutableArray<ISymbol> symbolGroup, SymbolDescriptionGroups groups)
382public async Task<IDictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>>> BuildDescriptionSectionsAsync(ImmutableArray<ISymbol> symbolGroup)
464private ImmutableArray<SymbolDisplayPart> BuildDescription(SymbolDescriptionGroups groups)
517private Dictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>> BuildDescriptionSections()
522var result = new Dictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>>(_documentationMap);
526var taggedText = parts.ToTaggedText(TaggedTextStyle.None, _getNavigationHint, includeNavigationHints);
563var displayParts = isAnonymousDelegate
587var allTypeParameters = symbol.GetAllTypeParameters();
588var allTypeArguments = symbol.GetAllTypeArguments();
596var underlyingTypeDisplayParts = symbol.EnumUnderlyingType.ToDisplayParts(s_descriptionStyle.WithMiscellaneousOptions(SymbolDisplayMiscellaneousOptions.UseSpecialTypes));
603var typeArguments = symbol.GetAllTypeArguments();
604var typeParameters = symbol.GetAllTypeParameters();
637var parts = await GetFieldPartsAsync(symbol).ConfigureAwait(false);
655private async Task<ImmutableArray<SymbolDisplayPart>> GetFieldPartsAsync(IFieldSymbol symbol)
659var initializerParts = await GetInitializerSourcePartsAsync(symbol).ConfigureAwait(false);
678var parts = await GetLocalPartsAsync(symbol).ConfigureAwait(false);
687private async Task<ImmutableArray<SymbolDisplayPart>> GetLocalPartsAsync(ILocalSymbol symbol)
691var initializerParts = await GetInitializerSourcePartsAsync(symbol).ConfigureAwait(false);
748var initializerParts = await GetInitializerSourcePartsAsync(symbol).ConfigureAwait(false);
800ImmutableArray<ISymbol> symbolGroup)
817private static int GetOverloadCount(ImmutableArray<ISymbol> symbolGroup)
826ImmutableArray<ITypeParameterSymbol> typeParameters,
827ImmutableArray<ITypeSymbol> typeArguments)
901protected ImmutableArray<SymbolDisplayPart> ToMinimalDisplayParts(ISymbol symbol, SymbolDisplayFormat? format = null)
LanguageServices\SymbolDisplayService\AbstractSymbolDisplayService.cs (5)
21public Task<ImmutableArray<SymbolDisplayPart>> ToDescriptionPartsAsync(SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, SymbolDescriptionGroups groups, CancellationToken cancellationToken)
30public async Task<IDictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>>> ToDescriptionGroupsAsync(
31SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, CancellationToken cancellationToken)
34return SpecializedCollections.EmptyDictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>>();
LanguageServices\SymbolDisplayService\ISymbolDisplayService.cs (6)
15Task<ImmutableArray<SymbolDisplayPart>> ToDescriptionPartsAsync(SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, SymbolDescriptionGroups groups = SymbolDescriptionGroups.All, CancellationToken cancellationToken = default);
16Task<IDictionary<SymbolDescriptionGroups, ImmutableArray<TaggedText>>> ToDescriptionGroupsAsync(SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, CancellationToken cancellationToken = default);
26public async Task<string> ToDescriptionStringAsync(SemanticModel semanticModel, int position, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, SymbolDescriptionGroups groups = SymbolDescriptionGroups.All, CancellationToken cancellationToken = default)
28var parts = await service.ToDescriptionPartsAsync(semanticModel, position, symbols, options, groups, cancellationToken).ConfigureAwait(false);
MoveStaticMembers\MoveStaticMembersWithDialogCodeAction.cs (20)
29ImmutableArray<ISymbol> selectedMembers) : CodeActionWithOptions
32private readonly ImmutableArray<ISymbol> _selectedMembers = selectedMembers;
59var memberNodes = moveOptions.SelectedMembers
90var typeParameters = ExtractTypeHelpers.GetRequiredTypeParametersForMembers(_selectedType, moveOptions.SelectedMembers);
92var typeArgIndices = Enumerable.Range(0, _selectedType.TypeParameters.Length)
121var memberReferenceLocations = await FindMemberReferencesAsync(newDoc.Project.Solution, newDoc.Project.Id, moveOptions.SelectedMembers, cancellationToken).ConfigureAwait(false);
138var members = memberNodes
171ImmutableArray<ISymbol> selectedMembers,
172ImmutableArray<SyntaxNode> oldMemberNodes,
175ImmutableArray<int> typeArgIndices,
203var memberReferenceLocations = await FindMemberReferencesAsync(
222var members = oldMemberNodes
240ImmutableArray<int> typeArgIndices,
272ImmutableArray<(ReferenceLocation location, bool isExtensionMethod)> referenceLocations,
275ImmutableArray<int> typeArgIndices,
334var newTypeArgs = typeArgIndices.SelectAsArray(i => typeArgs[i]);
364private static async Task<ImmutableArray<(ReferenceLocation location, bool isExtension)>> FindMemberReferencesAsync(
367ImmutableArray<ISymbol> members,
402ImmutableArray<SyntaxNode> memberNodes,
404ImmutableArray<ISymbol> selectedMembers,
NavigateTo\AbstractNavigateToSearchService.CachedDocumentSearch.cs (9)
70ImmutableArray<Project> projects,
71ImmutableArray<Document> priorityDocuments,
75Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
89var documentKeys = projects.SelectManyAsArray(p => p.Documents.Select(DocumentKey.ToDocumentKey));
90var priorityDocumentKeys = priorityDocuments.SelectAsArray(DocumentKey.ToDocumentKey);
111ImmutableArray<DocumentKey> documentKeys,
112ImmutableArray<DocumentKey> priorityDocumentKeys,
115Func<ImmutableArray<RoslynNavigateToItem>, VoidResult, CancellationToken, Task> onItemsFound,
130var groups = documentKeys.GroupBy(d => d.Project).ToImmutableArray();
NavigateTo\AbstractNavigateToSearchService.NormalSearch.cs (12)
30Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
57Func<ImmutableArray<RoslynNavigateToItem>, VoidResult, CancellationToken, Task> onItemsFound,
73Task SearchDocumentsInCurrentProcessAsync(ImmutableArray<(Document document, NormalizedTextSpanCollection? spans)> documentAndSpans)
98var relatedDocuments = await GetRelatedDocumentsAsync().ConfigureAwait(false);
102async Task<ImmutableArray<(Document document, NormalizedTextSpanCollection? spans)>> GetRelatedDocumentsAsync()
148ImmutableArray<Project> projects,
149ImmutableArray<Document> priorityDocuments,
153Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
169var priorityDocumentIds = priorityDocuments.SelectAsArray(d => d.Id);
189ImmutableArray<Project> projects,
190ImmutableArray<Document> priorityDocuments,
193Func<ImmutableArray<RoslynNavigateToItem>, VoidResult, CancellationToken, Task> onItemsFound,
NavigateTo\INavigateToSearchService.cs (9)
22Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
37ImmutableArray<Project> projects,
38ImmutableArray<Document> priorityDocuments,
42Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
64ImmutableArray<Project> projects,
65ImmutableArray<Document> priorityDocuments,
69Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
83ImmutableArray<Project> projects,
87Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound,
NavigateTo\IRemoteNavigateToSearchService.cs (13)
20ValueTask SearchDocumentAndRelatedDocumentsAsync(Checksum solutionChecksum, DocumentId documentId, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
21ValueTask SearchProjectsAsync(Checksum solutionChecksum, ImmutableArray<ProjectId> projectIds, ImmutableArray<DocumentId> priorityDocumentIds, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
23ValueTask SearchGeneratedDocumentsAsync(Checksum solutionChecksum, ImmutableArray<ProjectId> projectIds, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
24ValueTask SearchCachedDocumentsAsync(ImmutableArray<DocumentKey> documentKeys, ImmutableArray<DocumentKey> priorityDocumentKeys, string searchPattern, ImmutableArray<string> kinds, RemoteServiceCallbackId callbackId, CancellationToken cancellationToken);
30ValueTask OnItemsFoundAsync(RemoteServiceCallbackId callbackId, ImmutableArray<RoslynNavigateToItem> items);
43public ValueTask OnItemsFoundAsync(RemoteServiceCallbackId callbackId, ImmutableArray<RoslynNavigateToItem> items)
51Func<ImmutableArray<RoslynNavigateToItem>, VoidResult, CancellationToken, Task> onItemsFound,
55public async ValueTask OnItemsFoundAsync(ImmutableArray<RoslynNavigateToItem> items)
NavigateTo\NavigateToSearcher.cs (25)
53private readonly ImmutableArray<Document> _visibleDocuments;
225var orderedProjects = GetOrderedProjectsToProcess();
232ImmutableArray<ImmutableArray<Project>> orderedProjects,
284private ImmutableArray<ImmutableArray<Project>> GetOrderedProjectsToProcess()
286using var result = TemporaryArray<ImmutableArray<Project>>.Empty;
327private ImmutableArray<Document> GetPriorityDocuments(ImmutableArray<Project> projects)
348ImmutableArray<ImmutableArray<Project>> orderedProjects,
350Func<INavigateToSearchService, ImmutableArray<Project>, Func<ImmutableArray<INavigateToSearchResult>, Task>, Func<Task>, Task> processProjectAsync,
358foreach (var projectGroup in orderedProjects)
414ImmutableArray<ImmutableArray<Project>> orderedProjects,
432ImmutableArray<ImmutableArray<Project>> orderedProjects,
464ImmutableArray<ImmutableArray<Project>> orderedProjects,
487var filteredProjects = _solution
533public Task SearchDocumentAsync(Document document, string searchPattern, IImmutableSet<string> kinds, Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound, CancellationToken cancellationToken)
536public async Task SearchProjectsAsync(Solution solution, ImmutableArray<Project> projects, ImmutableArray<Document> priorityDocuments, string searchPattern, IImmutableSet<string> kinds, Document? activeDocument, Func<ImmutableArray<INavigateToSearchResult>, Task> onResultsFound, Func<Task> onProjectCompleted, CancellationToken cancellationToken)
NavigationBar\IRemoteNavigationBarItemService.cs (7)
15ValueTask<ImmutableArray<SerializableNavigationBarItem>> GetItemsAsync(
36public readonly ImmutableArray<SerializableNavigationBarItem> ChildItems;
71ImmutableArray<SerializableNavigationBarItem> childItems,
108public static ImmutableArray<SerializableNavigationBarItem> Dehydrate(ImmutableArray<RoslynNavigationBarItem> values)
111public static SerializableNavigationBarItem ActionlessItem(string text, Glyph glyph, ImmutableArray<SerializableNavigationBarItem> childItems = default, int indent = 0, bool bolded = false, bool grayed = false)
114public static SerializableNavigationBarItem SymbolItem(string text, Glyph glyph, string name, bool isObsolete, SymbolItemLocation location, ImmutableArray<SerializableNavigationBarItem> childItems = default, int indent = 0, bool bolded = false, bool grayed = false)
QuickInfo\CommonSemanticQuickInfoProvider.cs (13)
36var interceptorDisplayParts = GetInterceptorDisplayParts(semanticModel, token, cancellationToken);
48var linkedDocumentIds = document.GetLinkedDocumentIds();
61ImmutableArray<DocumentId> linkedDocumentIds)
109var candidateProjects = candidateResults.SelectAsArray(result => result.docId.ProjectId);
125private static bool HasNoErrors(ImmutableArray<ISymbol> symbols)
151ImmutableArray<TaggedText> interceptorDisplayParts,
158var symbols = tokenInformation.Symbols;
181protected virtual ImmutableArray<TaggedText> GetInterceptorDisplayParts(SemanticModel semanticModel, SyntaxToken token, CancellationToken cancellationToken) => default;
265var symbols = BindSymbols(services, semanticModel, newToken, cancellationToken);
300protected ImmutableArray<ISymbol> BindSymbols(
317void AddSymbols(ImmutableArray<ISymbol> symbols, bool checkAccessibility)
336var filteredSymbols = BindSymbols(services, semanticModel, token, cancellationToken);
362private ImmutableArray<ISymbol> GetSymbolsFromToken(SyntaxToken token, SolutionServices services, SemanticModel semanticModel, CancellationToken cancellationToken)
QuickInfo\QuickInfoUtilities.cs (17)
21public static Task<QuickInfoItem> CreateQuickInfoItemAsync(SolutionServices services, SemanticModel semanticModel, TextSpan span, ImmutableArray<ISymbol> symbols, SymbolDescriptionOptions options, CancellationToken cancellationToken)
28ImmutableArray<ISymbol> symbols,
32ImmutableArray<TaggedText> interceptorDisplayParts,
54if (TryGetGroupText(SymbolDescriptionGroups.MainDescription, out var mainDescriptionTaggedParts))
68else if (TryGetGroupText(SymbolDescriptionGroups.MainDescription, out var mainDescriptionTaggedParts))
73if (groups.TryGetValue(SymbolDescriptionGroups.Documentation, out var docParts) && !docParts.IsDefaultOrEmpty)
80groups.TryGetValue(SymbolDescriptionGroups.RemarksDocumentation, out var remarksDocumentation) &&
91if (groups.TryGetValue(SymbolDescriptionGroups.ReturnsDocumentation, out var returnsDocumentation) &&
100if (groups.TryGetValue(SymbolDescriptionGroups.ValueDocumentation, out var valueDocumentation) &&
109if (TryGetGroupText(SymbolDescriptionGroups.TypeParameterMap, out var typeParameterMapText))
117if (TryGetGroupText(SymbolDescriptionGroups.StructuralTypes, out var anonymousTypesText))
126if (TryGetGroupText(SymbolDescriptionGroups.AwaitableUsageText, out var awaitableUsageText))
151if (TryGetGroupText(SymbolDescriptionGroups.Exceptions, out var exceptionsText))
154if (TryGetGroupText(SymbolDescriptionGroups.Captures, out var capturesText))
157var tags = ImmutableArray.CreateRange(GlyphTags.GetTags(symbol.GetGlyph()));
163bool TryGetGroupText(SymbolDescriptionGroups group, out ImmutableArray<TaggedText> taggedParts)
166void AddSection(string kind, ImmutableArray<TaggedText> taggedParts)
SignatureHelp\AbstractSignatureHelpProvider.cs (9)
31public abstract ImmutableArray<char> TriggerCharacters { get; }
32public abstract ImmutableArray<char> RetriggerCharacters { get; }
93private static (IList<SignatureHelpItem> items, int? selectedItem) Filter(IList<SignatureHelpItem> items, ImmutableArray<string> parameterNames, int? selectedItem)
110private static bool Include(SignatureHelpItem item, ImmutableArray<string> parameterNames)
249var relatedDocuments = await FindActiveRelatedDocumentsAsync(position, document, cancellationToken).ConfigureAwait(false);
255var totalProjects = relatedDocuments.Concat(document).SelectAsArray(d => d.Project.Id);
303private static async Task<ImmutableArray<Document>> FindActiveRelatedDocumentsAsync(int position, Document document, CancellationToken cancellationToken)
320var platformParts = platformData.ToDisplayParts().ToTaggedText();
338protected static int? TryGetSelectedIndex<TSymbol>(ImmutableArray<TSymbol> candidates, ISymbol? currentSymbol) where TSymbol : class, ISymbol
Snippets\RoslynLSPSnippetConverter.cs (5)
22public static async Task<string> GenerateLSPSnippetAsync(Document document, int caretPosition, ImmutableArray<SnippetPlaceholder> placeholders, TextChange textChange, int triggerLocation, CancellationToken cancellationToken)
32private static string ConvertToLSPSnippetString(TextChange textChange, ImmutableArray<SnippetPlaceholder> placeholders, int caretPosition)
84private static void PopulateMapOfSpanStartsToLSPStringItem(Dictionary<int, (string identifier, int priority)> dictionary, ImmutableArray<SnippetPlaceholder> placeholders, int textChangeStart)
108private static async Task<TextChange> ExtendSnippetTextChangeAsync(Document document, TextChange textChange, ImmutableArray<SnippetPlaceholder> placeholders, int caretPosition, int triggerLocation, CancellationToken cancellationToken)
123private static TextSpan GetUpdatedTextSpan(TextChange textChange, ImmutableArray<SnippetPlaceholder> placeholders, int caretPosition, int triggerLocation)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (22)
88Func<DiagnosticAnalyzer, ImmutableArray<DiagnosticDescriptor>> getSupportedDiagnostics,
158using var _2 = ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)>.GetInstance(out var sortedPragmasWithIds);
230ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
232ImmutableArray<string> userExclusions)
346private static (ImmutableArray<string> userIdExclusions, ImmutableArray<string> userCategoryExclusions, bool analyzerDisabled) ParseUserExclusions(string? userExclusions)
389private static async Task<(ImmutableArray<Diagnostic> reportedDiagnostics, ImmutableArray<string> unhandledIds)> GetReportedDiagnosticsForIdsAsync(
394Func<DiagnosticAnalyzer, ImmutableArray<DiagnosticDescriptor>> getSupportedDiagnostics,
462var analyzers = analyzersBuilder.ToImmutable();
483static void AddAllDiagnostics(ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<Diagnostic>> diagnostics, ArrayBuilder<Diagnostic> reportedDiagnostics)
485foreach (var perAnalyzerDiagnostics in diagnostics.Values)
493foreach (var perAnalyzerDiagnostics in analysisResult.CompilationDiagnostics.Values)
507ImmutableArray<Diagnostic> diagnostics,
610ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
632ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
643ImmutableArray<Location> additionalLocations;
679ArrayBuilder<(SyntaxTrivia pragma, ImmutableArray<string> ids, bool isDisable)> sortedPragmasWithIds,
683var idsForPragma = sortedPragmasWithIds[indexOfPragma].ids;
690var intersect = nextPragmaIds.Intersect(idsForPragma).ToImmutableArray();
738ImmutableArray<string> userIdExclusions,
739ImmutableArray<string> userCategoryExclusions,
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (8)
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
170private ImmutableArray<ParameterName> GenerateParameterNames(
176var isFixed = reservedNames.Select(s => true).Concat(
179var parameterNames = reservedNames.Concat(
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.State.cs (32)
35private ImmutableArray<Argument<TExpressionSyntax>> _arguments;
40private ImmutableArray<RefKind> _parameterRefKinds;
41public ImmutableArray<ITypeSymbol> ParameterTypes;
48private ImmutableArray<IParameterSymbol> _parameters;
128var typeParametersNames = TypeToGenerateIn.GetAllTypeParameters().SelectAsArray(t => t.Name);
129var parameterNames = GetParameterNames(_arguments, typeParametersNames, cancellationToken);
136private ImmutableArray<ParameterName> GetParameterNames(
137ImmutableArray<Argument<TExpressionSyntax>> arguments, ImmutableArray<string> typeParametersNames, CancellationToken cancellationToken)
146var parameters = ParameterTypes.Zip(_parameterRefKinds,
148var expressions = _arguments.SelectAsArray(a => a.Expression);
160var remainingArguments = _arguments.Skip(argumentCount).ToImmutableArray();
161var remainingParameterNames = _service.GenerateParameterNames(
172var remainingParameterTypes = ParameterTypes.Skip(argumentCount).ToImmutableArray();
183ImmutableArray<IParameterSymbol> allParameters,
184ImmutableArray<TExpressionSyntax?> allExpressions,
192var parameters = allParameters[0..i];
193var expressions = allExpressions[0..i];
204ImmutableArray<IParameterSymbol> parameters,
205ImmutableArray<TExpressionSyntax?> expressions,
206ImmutableArray<IMethodSymbol> constructors,
278internal ImmutableArray<ITypeSymbol> GetParameterTypes(CancellationToken cancellationToken)
280var allTypeParameters = TypeToGenerateIn.GetAllTypeParameters();
300out var token, out var arguments, out var typeToGenerateIn))
318out var token, out var arguments, out var typeToGenerateIn))
337out var token, out var arguments, out var typeToGenerateIn))
431var delegatingArguments = this.GetRequiredLanguageService<SyntaxGenerator>(TypeToGenerateIn.Language).CreateArguments(_delegatedConstructor.Parameters);
433var newParameters = _delegatedConstructor.Parameters.Concat(_parameters);
458private async Task<(ImmutableArray<ISymbol>, ImmutableArray<SyntaxNode>)> GenerateMembersAndAssignmentsAsync(
463var members = withFields ? SyntaxGeneratorExtensions.CreateFieldsForParameters(_parameters, ParameterToNewFieldMap, IsContainedInUnsafeType) :
468var assignments = !withFields && !withProperties
src\roslyn\src\Dependencies\CodeAnalysis.Debugging\CustomDebugInfoReader.cs (29)
56public static ImmutableArray<byte> TryGetCustomDebugInfoRecord(byte[] customDebugInfo, CustomDebugInfoKind recordKind)
127public static ImmutableArray<short> DecodeUsingRecord(ImmutableArray<byte> bytes)
149public static int DecodeForwardRecord(ImmutableArray<byte> bytes)
163public static int DecodeForwardToModuleRecord(ImmutableArray<byte> bytes)
175public static ImmutableArray<StateMachineHoistedLocalScope> DecodeStateMachineHoistedLocalScopesRecord(ImmutableArray<byte> bytes)
214public static string DecodeForwardIteratorRecord(ImmutableArray<byte> bytes)
243public static ImmutableArray<DynamicLocalInfo> DecodeDynamicLocalsRecord(ImmutableArray<byte> bytes)
302public static ImmutableArray<TupleElementNamesInfo> DecodeTupleElementNamesRecord(ImmutableArray<byte> bytes)
315private static TupleElementNamesInfo DecodeTupleElementNamesInfo(ImmutableArray<byte> bytes, ref int offset)
339public static ImmutableArray<ImmutableArray<string>> GetCSharpGroupedImportStrings<TArg>(
343Func<int, TArg, ImmutableArray<string>> getMethodImportStrings,
344out ImmutableArray<string> externAliasStrings)
348ImmutableArray<short> groupSizes = default;
397var allModuleInfoImportStrings = getMethodImportStrings(moduleInfoMethodToken, arg);
421var importStrings = getMethodImportStrings(methodToken, arg);
424var resultBuilder = ArrayBuilder<ImmutableArray<string>>.GetInstance(groupSizes.Length);
487public static ImmutableArray<string> GetVisualBasicImportStrings<TArg>(
490Func<int, TArg, ImmutableArray<string>> getMethodImportStrings)
492var importStrings = getMethodImportStrings(methodToken, arg);
497return ImmutableArray<string>.Empty;
520private static int ReadInt32(ImmutableArray<byte> bytes, ref int offset)
532private static short ReadInt16(ImmutableArray<byte> bytes, ref int offset)
544private static byte ReadByte(ImmutableArray<byte> bytes, ref int offset)
853private static string ReadUtf8String(ImmutableArray<byte> bytes, ref int offset)
Structure\Syntax\BlockSpanCollector.cs (8)
16private readonly ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxStructureProvider>> _nodeProviderMap;
17private readonly ImmutableDictionary<int, ImmutableArray<AbstractSyntaxStructureProvider>> _triviaProviderMap;
22ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxStructureProvider>> nodeOutlinerMap,
23ImmutableDictionary<int, ImmutableArray<AbstractSyntaxStructureProvider>> triviaOutlinerMap,
35ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxStructureProvider>> nodeOutlinerMap,
36ImmutableDictionary<int, ImmutableArray<AbstractSyntaxStructureProvider>> triviaOutlinerMap,
65if (_nodeProviderMap.TryGetValue(node.GetType(), out var providers))
87if (_triviaProviderMap.TryGetValue(trivia.RawKind, out var providers))
SyncNamespaces\AbstractSyncNamespacesService.cs (14)
33ImmutableArray<Project> projects,
41var diagnosticAnalyzers = ImmutableArray.Create<DiagnosticAnalyzer>(DiagnosticAnalyzer);
58private static async Task<ImmutableDictionary<Project, ImmutableArray<Diagnostic>>> GetDiagnosticsByProjectAsync(
59ImmutableArray<Project> projects,
60ImmutableArray<DiagnosticAnalyzer> diagnosticAnalyzers,
64var builder = ImmutableDictionary.CreateBuilder<Project, ImmutableArray<Diagnostic>>();
68var diagnostics = await GetDiagnosticsAsync(project, diagnosticAnalyzers, isHostAnalyzer, cancellationToken).ConfigureAwait(false);
75private static async Task<ImmutableArray<Diagnostic>> GetDiagnosticsAsync(
77ImmutableArray<DiagnosticAnalyzer> diagnosticAnalyzers,
98ImmutableDictionary<Project, ImmutableArray<Diagnostic>> diagnosticsByProject,
144var operations = await fixAllAction.GetOperationsAsync(
156private readonly ImmutableDictionary<Project, ImmutableArray<Diagnostic>> _diagnosticsByProject;
158internal DiagnosticProvider(ImmutableDictionary<Project, ImmutableArray<Diagnostic>> diagnosticsByProject)
177return _diagnosticsByProject.TryGetValue(project, out var diagnostics)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\IdentifiersShouldHaveCorrectSuffix.cs (17)
33private static readonly ImmutableArray<string> s_setCollectionSuffixes = ImmutableArray.Create(SetSuffix, CollectionSuffix);
34private static readonly ImmutableArray<string> s_queueCollectionSuffixes = ImmutableArray.Create(QueueSuffix, CollectionSuffix);
35private static readonly ImmutableArray<string> s_stackCollectionSuffixes = ImmutableArray.Create(StackSuffix, CollectionSuffix);
36private static readonly ImmutableArray<string> s_dictionaryCollectionSuffixes = ImmutableArray.Create(DictionarySuffix, CollectionSuffix);
37private static readonly ImmutableArray<string> s_collectionDictionarySetStackQueueSuffixes = ImmutableArray.Create(CollectionSuffix, DictionarySuffix, SetSuffix, StackSuffix, QueueSuffix);
68public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(OneSuffixRule, MultipleSuffixesRule, UserSuffixRule);
72private static readonly ImmutableArray<(string typeName, ImmutableArray<string> suffixes)> s_baseTypesAndTheirSuffix =
111var baseTypeSuffixMapBuilder = ImmutableDictionary.CreateBuilder<INamedTypeSymbol, ImmutableArray<string>>(SymbolEqualityComparer.Default);
112var interfaceTypeSuffixMapBuilder = ImmutableDictionary.CreateBuilder<INamedTypeSymbol, ImmutableArray<string>>(SymbolEqualityComparer.Default);
153? namedTypeSymbol.BaseType != null ? ImmutableArray.Create(namedTypeSymbol.BaseType) : ImmutableArray<INamedTypeSymbol>.Empty
158if (TryGetTypeSuffix(baseTypes, baseTypeSuffixMap, userTypeSuffixMap, out var typesSuffixes, out var rule))
168var interfaces = excludeIndirectBaseTypes
172if (TryGetTypeSuffix(interfaces, interfaceTypeSuffixMap, userTypeSuffixMap, out var interfaceSuffixes, out rule) &&
202private static bool TryGetTypeSuffix(IEnumerable<INamedTypeSymbol> typeSymbols, ImmutableDictionary<INamedTypeSymbol, ImmutableArray<string>> hardcodedMap,
203SymbolNamesWithValueOption<string?> userMap, out ImmutableArray<string> suffixes, [NotNullWhen(true)] out DiagnosticDescriptor? rule)
224suffixes = ImmutableArray<string>.Empty;
Microsoft.CodeQuality.Analyzers\QualityGuidelines\AvoidMultipleEnumerations\AvoidMultipleEnumerations.cs (21)
35public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(MultipleEnumerableDescriptor);
40private static readonly ImmutableArray<string> s_additionalDeferredTypes =
46private static readonly ImmutableArray<(string typeName, string methodName)> s_immutableCollectionsTypeNamesAndConvensionMethods = ImmutableArray.Create(
57private static readonly ImmutableArray<string> s_constructorsEnumeratedParameterTypes = ImmutableArray.Create(
70private static readonly ImmutableArray<string> s_enumeratedParametersLinqMethods = ImmutableArray.Create(
103private static readonly ImmutableArray<string> s_linqChainMethods = ImmutableArray.Create(
144private static readonly ImmutableArray<string> s_noEffectLinqChainMethods = ImmutableArray.Create(
150private static readonly ImmutableArray<string> s_noEnumerationLinqMethods = ImmutableArray.Create(
167var linqChainMethods = GetLinqMethods(wellKnownTypeProvider, s_linqChainMethods);
168var noEnumerationMethods = GetLinqMethods(wellKnownTypeProvider, s_noEnumerationLinqMethods);
169var enumeratedMethods = GetEnumeratedMethods(wellKnownTypeProvider, s_immutableCollectionsTypeNamesAndConvensionMethods, s_enumeratedParametersLinqMethods, s_constructorsEnumeratedParameterTypes);
170var noEffectLinqChainMethods = GetLinqMethods(wellKnownTypeProvider, s_noEffectLinqChainMethods);
171var additionalDeferredTypes = GetTypes(compilation, s_additionalDeferredTypes);
175var getEnumeratorSymbols = GetGetEnumeratorMethods(wellKnownTypeProvider);
187ImmutableArray<IMethodSymbol> linqChainMethods,
188ImmutableArray<IMethodSymbol> noEnumerationMethods,
189ImmutableArray<IMethodSymbol> enumeratedMethods,
190ImmutableArray<IMethodSymbol> noEffectLinqChainMethods,
191ImmutableArray<ITypeSymbol> additionalDeferredTypes,
192ImmutableArray<IMethodSymbol> getEnumeratorSymbols,
195var operationBlocks = context.OperationBlocks;
Microsoft.CodeQuality.Analyzers\QualityGuidelines\AvoidMultipleEnumerations\AvoidMultipleEnumerationsHelpers.cs (15)
363public static ImmutableArray<IMethodSymbol> GetEnumeratedMethods(WellKnownTypeProvider wellKnownTypeProvider,
364ImmutableArray<(string typeName, string methodName)> typeAndMethodNames,
365ImmutableArray<string> linqMethodNames,
366ImmutableArray<string> constructorTypeNames)
377ImmutableArray<string> typeNames,
391ImmutableArray<(string, string)> typeAndMethodNames,
399var methods = type.GetMembers(methodName);
415public static ImmutableArray<IMethodSymbol> GetGetEnumeratorMethods(WellKnownTypeProvider wellKnownTypeProvider)
440private static bool IsConstraintTypesHasDeferredType(ITypeParameterSymbol typeParameterSymbol, ImmutableArray<ITypeSymbol> additionalTypesToCheck)
443public static bool IsDeferredType(ITypeSymbol? type, ImmutableArray<ITypeSymbol> additionalTypesToCheck)
451public static ImmutableArray<ITypeSymbol> GetTypes(Compilation compilation, ImmutableArray<string> typeNames)
465public static ImmutableArray<IMethodSymbol> GetLinqMethods(WellKnownTypeProvider wellKnownTypeProvider, ImmutableArray<string> methodNames)
475ImmutableArray<string> methodNames,
Microsoft.NetCore.Analyzers\InteropServices\PlatformCompatibilityAnalyzer.cs (25)
40private static readonly ImmutableArray<string> s_osPlatformAttributes = ImmutableArray.Create(SupportedOSPlatformAttribute, UnsupportedOSPlatformAttribute, ObsoletedOSPlatformAttribute);
153public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(OnlySupportedCsReachable, OnlySupportedCsUnreachable,
182var msBuildPlatforms = GetSupportedPlatforms(context.Options, context.Compilation);
253static ImmutableArray<string> GetSupportedPlatforms(AnalyzerOptions options, Compilation compilation) =>
308ImmutableArray<IMethodSymbol> guardMethods,
315ImmutableArray<string> msBuildPlatforms,
324var osPlatformTypeArray = osPlatformType != null ? ImmutableArray.Create(osPlatformType) : ImmutableArray<INamedTypeSymbol>.Empty;
442private static bool ComputeNeedsValueContentAnalysis(IOperation operationBlock, ImmutableArray<IMethodSymbol> guardMethods, IMethodSymbol? runtimeIsOSPlatformMethod, INamedTypeSymbol? osPlatformType)
835var supportedRule = GetSupportedPlatforms(attributes, callsiteAttributes, out var platformNames, out var obsoletedPlatforms);
867out ImmutableArray<string> platformNames, out ImmutableArray<string> obsoletedPlatforms)
1005var unsupportedRule = GetPlatformNames(attributes, callsiteAttributes, out var platformNames, out var obsoletedPlatforms);
1019out ImmutableArray<string> platformNames, out ImmutableArray<string> obsoletedPlatforms)
1125static ImmutableArray<string> GetCallsitePlatforms(SmallDictionary<string, Versions> attributes,
1226static string JoinNames(ImmutableArray<string> platformNames)
1337ConcurrentDictionary<ISymbol, PlatformAttributes> platformSpecificMembers, ImmutableArray<string> msBuildPlatforms,
1383void CheckTypeArguments(ImmutableArray<ITypeSymbol> typeArguments)
1389void CheckTypeArgumentsCore(ImmutableArray<ITypeSymbol> typeArguments, PooledHashSet<ITypeSymbol> workingSet)
1452ImmutableArray<string> msBuildPlatforms, out SmallDictionary<string, Versions> copiedAttributes)
1511SmallDictionary<string, Versions> callSiteAttributes, ImmutableArray<string> msBuildPlatforms,
1812static void MergePlatformAttributes(ImmutableArray<AttributeData> immediateAttributes, ref PlatformAttributes parentAttributes,
Microsoft.NetCore.Analyzers\InteropServices\PlatformCompatibilityAnalyzer.OperationVisitor.cs (11)
20private readonly ImmutableArray<IMethodSymbol> _platformCheckMethods;
25ImmutableArray<IMethodSymbol> platformCheckMethods,
43internal bool TryParseGuardAttributes(ISymbol symbol, ref GlobalFlowStateAnalysisValueSet value, ImmutableArray<IArgumentOperation> visitedArguments)
45var attributes = symbol.GetAttributes();
77private static bool HasAnyGuardAttribute(ImmutableArray<AttributeData> attributes, ImmutableArray<IArgumentOperation> methodArguments, [NotNullWhen(true)] out SmallDictionary<string, Versions>? mappedAttributes)
181ImmutableArray<IArgumentOperation> visitedArguments,
202var attributes = method.GetAttributes();
225private static bool HasAnyGuardAttribute(ImmutableArray<AttributeData> attributes, Version expectedVersion, [NotNullWhen(true)] out SmallDictionary<string, Versions>? mappedAttributes)
266if (TryParseGuardAttributes(operation.Field, ref value, ImmutableArray<IArgumentOperation>.Empty))
278if (TryParseGuardAttributes(operation.Property, ref value, ImmutableArray<IArgumentOperation>.Empty))
Microsoft.NetCore.Analyzers\Performance\ConstantExpectedAnalyzer.cs (14)
118public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(
162void CheckParameters(ImmutableArray<IParameterSymbol> parameters, ImmutableArray<IParameterSymbol> baseParameters)
164if (constantExpectedContext.ValidatesAttributeImplementedFromParent(parameters, baseParameters, out var diagnostics))
211if (!constantExpectedContext.ValidateConstantExpectedParameter(parameter, Helper, out ImmutableArray<Diagnostic> diagnostics))
235public bool ValidatesAttributeImplementedFromParent(ImmutableArray<IParameterSymbol> parameters, ImmutableArray<IParameterSymbol> baseParameters, out ImmutableArray<Diagnostic> diagnostics)
339public bool ValidateConstantExpectedParameter(IParameterSymbol parameterSymbol, DiagnosticHelper helper, out ImmutableArray<Diagnostic> diagnostics)
346diagnostics = ImmutableArray<Diagnostic>.Empty;
386static bool ValidateMinMaxIsNull(IParameterSymbol parameterSymbol, AttributeData attributeData, DiagnosticHelper helper, out ImmutableArray<Diagnostic> diagnostics)
411diagnostics = ImmutableArray<Diagnostic>.Empty;
589public static ImmutableArray<Diagnostic> ParameterIsInvalid(string expectedTypeName, SyntaxNode attributeSyntax) => ImmutableArray.Create(Diagnostic.Create(CA1856.UnsupportedTypeRule, attributeSyntax.GetLocation(), expectedTypeName));
601public ImmutableArray<Diagnostic> GetError(ErrorKind errorFlags, IParameterSymbol parameterSymbol, SyntaxNode attributeSyntax, string typeMinValue, string typeMaxValue)
Microsoft.NetCore.Analyzers\Performance\ConstantExpectedAnalyzer.UnmanagedHelper.cs (3)
59public static bool Validate(IParameterSymbol parameterSymbol, AttributeData attributeData, T typeMin, T typeMax, DiagnosticHelper diagnosticHelper, out ImmutableArray<Diagnostic> diagnostics)
109public bool Validate(IParameterSymbol parameterSymbol, AttributeData attributeData, T typeMin, T typeMax, DiagnosticHelper diagnosticHelper, out ImmutableArray<Diagnostic> diagnostics)
118diagnostics = ImmutableArray<Diagnostic>.Empty;
Microsoft.NetCore.Analyzers\Performance\PreferHashDataOverComputeHash.cs (19)
48public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(StringRule);
167ImmutableArray<Location> codefixerLocations;
175var disposeArray = dataResult.GetDisposeInvocationArray(localSymbol);
271ImmutableArray<Location> fixerLocations,
292private static ImmutableArray<Location> GetFixerLocations(
294ImmutableArray<IInvocationOperation> disposeArray,
297ImmutableArray<Location>.Builder builder = ImmutableArray.CreateBuilder<Location>(1 + disposeArray.Length);
311private static ImmutableArray<IInvocationOperation> GetValueOrEmpty(PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>? dictionary, ILocalSymbol key)
313if (dictionary is not null && dictionary.TryGetValue(key, out var value))
318return ImmutableArray<IInvocationOperation>.Empty;
609private PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>? CompileDisposeMap(CancellationToken cancellationToken)
616var map = PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>.GetInstance(SymbolEqualityComparer.Default);
635var disposeArray = arrayBuilder.ToImmutableAndFree();
645private PooledDictionary<ILocalSymbol, int>? GetComputeHashOnlySymbols(PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>? disposeMap, CancellationToken cancellationToken)
685var disposeArray = GetValueOrEmpty(disposeMap, local);
706private readonly PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>? _disposeMap;
709PooledDictionary<ILocalSymbol, ImmutableArray<IInvocationOperation>>? disposeMap,
725public ImmutableArray<IInvocationOperation> GetDisposeInvocationArray(ILocalSymbol localSymbol) => GetValueOrEmpty(_disposeMap, localSymbol);
Microsoft.NetCore.Analyzers\Performance\PreferHashDataOverComputeHash.Fixer.cs (12)
22public sealed override ImmutableArray<string> FixableDiagnosticIds { get; } = ImmutableArray.Create(PreferHashDataOverComputeHashAnalyzer.CA1850);
82private readonly List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> _diagnosticsToFix;
86public PreferHashDataOverComputeHashFixAllCodeAction(string title, Solution solution, List<KeyValuePair<Project, ImmutableArray<Diagnostic>>> diagnosticsToFix, PreferHashDataOverComputeHashFixHelper helper)
98foreach (KeyValuePair<Project, ImmutableArray<Diagnostic>> pair in _diagnosticsToFix)
101ImmutableArray<Diagnostic> diagnostics = pair.Value;
232var diagnosticsToFix = new List<KeyValuePair<Project, ImmutableArray<Diagnostic>>>();
238ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(fixAllContext.Document!).ConfigureAwait(false);
239diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
244ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(fixAllContext.Project).ConfigureAwait(false);
245diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(fixAllContext.Project, diagnostics));
252ImmutableArray<Diagnostic> diagnostics = await fixAllContext.GetAllDiagnosticsAsync(project).ConfigureAwait(false);
253diagnosticsToFix.Add(new KeyValuePair<Project, ImmutableArray<Diagnostic>>(project, diagnostics));
Microsoft.NetCore.Analyzers\Runtime\SpecifyIFormatProvider.cs (5)
80private static readonly ImmutableArray<string> s_dateInvariantFormats = ImmutableArray.Create("o", "O", "r", "R", "s", "u");
82public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(IFormatProviderAlternateStringRule, IFormatProviderAlternateRule, IFormatProviderOptionalRule, UICultureStringRule, UICultureRule);
154var guidParseMethods = guidType?.GetMembers("Parse") ?? ImmutableArray<ISymbol>.Empty;
363private static bool IsValidParseCall(IInvocationOperation invocationOperation, ImmutableArray<ISymbol> guidParseMethods)
src\11b41c7305441175\PropertySetAnalysis.PropertySetDataFlowOperationVisitor.cs (5)
132protected override void SetAbstractValueForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, IOperation initializer, PropertySetAbstractValue value)
453public override PropertySetAbstractValue VisitInvocation_NonLambdaOrDelegateOrLocalFunction(IMethodSymbol method, IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments, bool invokedAsDelegate, IOperation originalOperation, PropertySetAbstractValue defaultValue)
511ImmutableArray<IArgumentOperation> visitedArguments,
632public override PropertySetAbstractValue VisitInvocation_LocalFunction(IMethodSymbol localFunction, ImmutableArray<IArgumentOperation> visitedArguments, IOperation originalOperation, PropertySetAbstractValue defaultValue)
640public override PropertySetAbstractValue VisitInvocation_Lambda(IFlowAnonymousFunctionOperation lambda, ImmutableArray<IArgumentOperation> visitedArguments, IOperation originalOperation, PropertySetAbstractValue defaultValue)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\PooledObjects\ArrayBuilder.cs (16)
49private readonly ImmutableArray<T>.Builder _builder;
71public ImmutableArray<T> ToImmutable()
235public ImmutableArray<T> ToImmutableOrNull()
248public ImmutableArray<U> ToDowncastedImmutable<U>()
253return ImmutableArray<U>.Empty;
268public ImmutableArray<T> ToImmutableAndFree()
270ImmutableArray<T> result;
387internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
392var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
400return new Dictionary<K, ImmutableArray<T>>(comparer);
419var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
440public void AddRange(ImmutableArray<T> items)
445public void AddRange(ImmutableArray<T> items, int length)
450public void AddRange<S>(ImmutableArray<S> items) where S : class, T
452AddRange(ImmutableArray<T>.CastUp(items));
515public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntity.cs (8)
39ImmutableArray<AbstractIndex> indices,
68private AnalysisEntity(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, PointsToAbstractValue location, ITypeSymbol type, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
75: this(symbol: null, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: instanceReferenceOperation.Syntax,
82: this(symbol: null, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: null,
88: this(symbol: namedType, indices: ImmutableArray<AbstractIndex>.Empty, instanceReferenceOperationSyntax: null,
93public static AnalysisEntity Create(ISymbol? symbol, ImmutableArray<AbstractIndex> indices,
196public ImmutableArray<AbstractIndex> Indices { get; }
215internal AnalysisEntity WithIndices(ImmutableArray<AbstractIndex> indices)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (18)
29private readonly Dictionary<ITupleOperation, ImmutableArray<AnalysisEntity>> _tupleElementEntitiesMap;
66_tupleElementEntitiesMap = new Dictionary<ITupleOperation, ImmutableArray<AnalysisEntity>>();
90private static ImmutableArray<AbstractIndex> CreateAbstractIndices<T>(ImmutableArray<T> indices)
104return ImmutableArray<AbstractIndex>.Empty;
132ImmutableArray<AbstractIndex> indices = ImmutableArray<AbstractIndex>.Empty;
269private static void GetSymbolAndIndicesForMemberReference(IMemberReferenceOperation memberReference, ref ISymbol? symbol, ref ImmutableArray<AbstractIndex> indices)
302ImmutableArray<AbstractIndex>.Empty;
313var indices = ImmutableArray<AbstractIndex>.Empty;
321public bool TryCreateForTupleElements(ITupleOperation tupleOperation, [NotNullWhen(returnValue: true)] out ImmutableArray<AnalysisEntity> elementEntities)
348TryCreateForTupleElements(parentTupleOperationOpt, out var parentTupleElementEntities))
366parentEntity = AnalysisEntity.Create(underlyingValueTupleType, ImmutableArray<AbstractIndex>.Empty,
382builder.Add(AnalysisEntity.Create(mappedValueTupleField, indices: ImmutableArray<AbstractIndex>.Empty,
395public bool TryCreateForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, [NotNullWhen(returnValue: true)] out AnalysisEntity? analysisEntity)
437private bool TryCreate(ISymbol? symbol, ImmutableArray<AbstractIndex> indices,
552private AnalysisEntity Create(ISymbol? symbol, ImmutableArray<AbstractIndex> indices, ITypeSymbol type, PointsToAbstractValue? instanceLocation, AnalysisEntity? parent, AnalysisEntity? entityForInstanceLocation)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (12)
987var requiresMethods = ContractNamedType.GetMembers("Requires");
988var assumeMethods = ContractNamedType.GetMembers("Assume");
989var assertMethods = ContractNamedType.GetMembers("Assert");
1943protected abstract void SetAbstractValueForArrayElementInitializer(IArrayCreationOperation arrayCreation, ImmutableArray<AbstractIndex> indices, ITypeSymbol elementType, IOperation initializer, TAbstractAnalysisValue value);
2202ImmutableArray<IArgumentOperation> arguments,
2779var pendingArguments = _pendingArgumentsToPostProcess.ExtractAll(static (arg, operation) => arg.Parent == operation, operation);
3224void PostVisitInvocation(IMethodSymbol targetMethod, ImmutableArray<IArgumentOperation> arguments)
3249void ProcessInterlockedOperation(IMethodSymbol targetMethod, ImmutableArray<IArgumentOperation> arguments, INamedTypeSymbol interlockedType)
3533ImmutableArray<IArgumentOperation> visitedArguments,
3575ImmutableArray<IArgumentOperation> visitedArguments,
3593ImmutableArray<IArgumentOperation> visitedArguments,
3677if (AnalysisEntityFactory.TryCreateForTupleElements(operation, out var elementEntities))
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
CodeRefactorings\SyncNamespace\VisualBasicChangeNamespaceService.vb (7)
34Public Overrides Function TryGetReplacementReferenceSyntax(reference As SyntaxNode, newNamespaceParts As ImmutableArray(Of String), syntaxFacts As ISyntaxFactsService, ByRef old As SyntaxNode, ByRef [new] As SyntaxNode) As Boolean
70Protected Overrides Function GetValidContainersFromAllLinkedDocumentsAsync(document As Document, container As SyntaxNode, cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of (DocumentId, SyntaxNode)))
71Return SpecializedTasks.Default(Of ImmutableArray(Of (DocumentId, SyntaxNode)))()
75Protected Overrides Function ChangeNamespaceDeclaration(root As CompilationUnitSyntax, declaredNamespaceParts As ImmutableArray(Of String), targetNamespaceParts As ImmutableArray(Of String)) As CompilationUnitSyntax
94Private Shared Function CreateNamespaceAsQualifiedName(namespaceParts As ImmutableArray(Of String), index As Integer) As NameSyntax
105Private Shared Function CreateNamespaceAsMemberAccess(namespaceParts As ImmutableArray(Of String), index As Integer) As ExpressionSyntax
Completion\CompletionProviders\ImplementsClauseCompletionProvider.vb (12)
50cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of SymbolAndSelectionInfo))
57context As VisualBasicSyntaxContext, position As Integer, cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of ISymbol))
89Dim result = ImmutableArray(Of ISymbol).Empty
137Private Shared Function GetDottedMembers(position As Integer, qualifiedName As QualifiedNameSyntax, semanticModel As SemanticModel, memberKindKeyword As SyntaxKind, cancellationToken As CancellationToken) As ImmutableArray(Of ISymbol)
140Return ImmutableArray(Of ISymbol).Empty
173Return ImmutableArray(Of ISymbol).Empty
185Private Function interfaceMemberGetter([interface] As ITypeSymbol, within As ISymbol) As ImmutableArray(Of ISymbol)
190Private Function GetInterfacesAndContainers(position As Integer, node As SyntaxNode, semanticModel As SemanticModel, kind As SyntaxKind, cancellationToken As CancellationToken) As ImmutableArray(Of ISymbol)
193Return ImmutableArray(Of ISymbol).Empty
259Private Shared Function TryAddGlobalTo(symbols As ImmutableArray(Of ISymbol)) As ImmutableArray(Of ISymbol)
304symbols As ImmutableArray(Of SymbolAndSelectionInfo),
src\roslyn\src\Analyzers\VisualBasic\CodeFixes\GenerateConstructor\GenerateConstructorDiagnosticIds.vb (3)
21Friend Shared ReadOnly AllDiagnosticIds As ImmutableArray(Of String) = ImmutableArray.Create(BC30057, BC30272, BC30274, BC30389, BC30455, BC32006, BC30512, BC30387, BC30516)
22Friend Shared ReadOnly TooManyArgumentsDiagnosticIds As ImmutableArray(Of String) = ImmutableArray.Create(BC30057)
23Friend Shared ReadOnly CannotConvertDiagnosticIds As ImmutableArray(Of String) = ImmutableArray.Create(BC30512, BC32006, BC30311, BC36625)
CaseCorrection\AbstractCaseCorrectionService.cs (4)
20protected abstract void AddReplacements(SemanticModel? semanticModel, SyntaxNode root, ImmutableArray<TextSpan> spans, ConcurrentDictionary<SyntaxToken, SyntaxToken> replacements, CancellationToken cancellationToken);
22public async Task<Document> CaseCorrectAsync(Document document, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
41public SyntaxNode CaseCorrect(SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
44private SyntaxNode CaseCorrect(SemanticModel? semanticModel, SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
Classification\AbstractClassificationService.cs (14)
27private Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>>? _getNodeClassifiers;
28private Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>>? _getTokenClassifiers;
34Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
40Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
47ImmutableArray<TextSpan> textSpans,
108ImmutableArray<TextSpan> textSpans,
138ImmutableArray<TextSpan> textSpans,
156var reassignedVariableSpans = await reassignedVariableService.GetLocationsAsync(document, textSpans, cancellationToken).ConfigureAwait(false);
164var obsoleteSymbolSpans = await obsoleteSymbolService.GetLocationsAsync(document, textSpans, cancellationToken).ConfigureAwait(false);
185(Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>>, Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>>) GetExtensionClassifiers(
191var classifiers = classificationService.GetDefaultSyntaxClassifiers();
201public async Task AddSyntacticClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
208SolutionServices services, SyntaxNode? root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
Classification\IClassificationService.cs (4)
34void AddSyntacticClassifications(SolutionServices services, SyntaxNode? root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
46Task AddSyntacticClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
63Task AddSemanticClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
74Task AddEmbeddedLanguageClassificationsAsync(Document document, ImmutableArray<TextSpan> textSpans, ClassificationOptions options, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
Classification\SyntaxClassification\AbstractSyntaxClassificationService.cs (8)
19public abstract void AddSyntacticClassifications(SyntaxNode root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
21public abstract ImmutableArray<ISyntaxClassifier> GetDefaultSyntaxClassifiers();
27ImmutableArray<TextSpan> textSpans,
29Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
30Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
49ImmutableArray<TextSpan> textSpans,
50Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
51Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
Classification\SyntaxClassification\AbstractSyntaxClassificationService.Worker.cs (7)
25private readonly Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> _getNodeClassifiers;
26private readonly Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> _getTokenClassifiers;
38Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
39Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
58ImmutableArray<TextSpan> textSpans,
60Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
61Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
Classification\SyntaxClassification\ISyntaxClassificationService.cs (8)
18ImmutableArray<ISyntaxClassifier> GetDefaultSyntaxClassifiers();
29ImmutableArray<TextSpan> textSpans,
36ImmutableArray<TextSpan> textSpans,
38Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
39Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
46ImmutableArray<TextSpan> textSpans,
47Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
48Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>> getTokenClassifiers,
CodeActions\CodeAction_Cleanup.cs (10)
47private static readonly ImmutableArray<Func<Document, CodeCleanupOptions, CancellationToken, Task<Document>>> s_cleanupSyntaxPasses = [s_cleanupSyntaxPass];
53private static readonly ImmutableArray<Func<Document, CodeCleanupOptions, CancellationToken, Task<Document>>> s_allCleanupPasses =
74internal static ImmutableArray<DocumentId> GetAllChangedOrAddedDocumentIds(
114ImmutableArray<Func<Document, CodeCleanupOptions, CancellationToken, Task<Document>>> passes,
117var documentIds = GetAllChangedOrAddedDocumentIds(originalSolution, changedSolution);
118var documentIdsAndOptionsToClean = await GetDocumentIdsAndOptionsToCleanAsync().ConfigureAwait(false);
126async Task<ImmutableArray<(DocumentId documentId, CodeCleanupOptions codeCleanupOptions)>> GetDocumentIdsAndOptionsToCleanAsync()
165ImmutableArray<(DocumentId documentId, CodeCleanupOptions options)> documentIdsAndOptions,
167ImmutableArray<Func<Document, CodeCleanupOptions, CancellationToken, Task<Document>>> passes,
187var changedRoots = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
CodeActions\CodeAction.cs (25)
59private protected static ImmutableArray<string> RequiresNonDocumentChangeTags = [RequiresNonDocumentChange];
150public virtual ImmutableArray<string> Tags => [];
155/// actions, use <see cref="Create(string, ImmutableArray{CodeAction}, bool)"/>.
157public virtual ImmutableArray<CodeAction> NestedActions
164internal virtual ImmutableArray<CodeAction> AdditionalPreviewFlavors => [];
169internal ImmutableArray<CodeAction> NestedCodeActions
179/// cref="Create(string, ImmutableArray{CodeAction}, bool)"/>.
186internal ImmutableArray<string> CustomTags { get; set; } = [];
232public Task<ImmutableArray<CodeActionOperation>> GetOperationsAsync(CancellationToken cancellationToken)
238public Task<ImmutableArray<CodeActionOperation>> GetOperationsAsync(
244private protected virtual async Task<ImmutableArray<CodeActionOperation>> GetOperationsCoreAsync(
247var operations = await this.ComputeOperationsAsync(progress, cancellationToken).ConfigureAwait(false);
260public Task<ImmutableArray<CodeActionOperation>> GetPreviewOperationsAsync(CancellationToken cancellationToken)
263internal async Task<ImmutableArray<CodeActionOperation>> GetPreviewOperationsAsync(
298protected virtual async Task<ImmutableArray<CodeActionOperation>> ComputeOperationsAsync(
422protected Task<ImmutableArray<CodeActionOperation>> PostProcessAsync(IEnumerable<CodeActionOperation> operations, CancellationToken cancellationToken)
426internal async Task<ImmutableArray<CodeActionOperation>> PostProcessAsync(
559public static CodeAction Create(string title, ImmutableArray<CodeAction> nestedActions, bool isInlinable)
562/// <inheritdoc cref="Create(string, ImmutableArray{CodeAction}, bool)"/>
565public static CodeAction Create(string title, ImmutableArray<CodeAction> nestedActions, bool isInlinable, CodeActionPriority priority = CodeActionPriority.Default)
600ImmutableArray<CodeAction> nestedActions,
613ImmutableArray<CodeAction> nestedActions,
622ImmutableArray<CodeAction> nestedActions,
629public sealed override ImmutableArray<CodeAction> NestedActions { get; }
631private static string? ComputeEquivalenceKey(ImmutableArray<CodeAction> nestedActions)
CodeCleanup\AbstractCodeCleanerService.cs (26)
26public abstract ImmutableArray<ICodeCleanupProvider> GetDefaultProviders();
27protected abstract ImmutableArray<TextSpan> GetSpansToAvoid(SyntaxNode root);
29public async Task<Document> CleanupAsync(Document document, ImmutableArray<TextSpan> spans, CodeCleanupOptions options, ImmutableArray<ICodeCleanupProvider> providers, CancellationToken cancellationToken)
40var codeCleaners = providers.IsDefault ? GetDefaultProviders() : providers;
44var normalizedSpan = spans.ToNormalizedSpans();
73public async Task<SyntaxNode> CleanupAsync(SyntaxNode root, ImmutableArray<TextSpan> spans, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers, CancellationToken cancellationToken)
84var codeCleaners = providers.IsDefault ? GetDefaultProviders() : providers;
86var normalizedSpan = spans.ToNormalizedSpans();
114private static ImmutableArray<TextSpan> GetTextSpansFromAnnotation(
270SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
273var nonOverlappingSpans = GetNonOverlappingSpans(root, spans, cancellationToken);
320private static ImmutableArray<TextSpan> GetNonOverlappingSpans(
321SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
444private static bool CleanupWholeNode(TextSpan nodeSpan, ImmutableArray<TextSpan> spans)
458Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter,
459ImmutableArray<ICodeCleanupProvider> codeCleaners,
466var spans = ImmutableArray<TextSpan>.Empty;
520private ImmutableArray<TextSpan> GetSpans(
521SyntaxNode root, Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter)
539Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter,
541ImmutableArray<ICodeCleanupProvider> codeCleaners,
548var spans = ImmutableArray<TextSpan>.Empty;
CodeCleanup\CodeCleaner.cs (9)
28public static ImmutableArray<ICodeCleanupProvider> GetDefaultProviders(Document document)
50public static async Task<Document> CleanupAsync(Document document, CodeCleanupOptions options, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
60public static async Task<Document> CleanupAsync(Document document, SyntaxAnnotation annotation, CodeCleanupOptions options, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
70public static Task<Document> CleanupAsync(Document document, TextSpan span, CodeCleanupOptions options, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
77public static async Task<Document> CleanupAsync(Document document, ImmutableArray<TextSpan> spans, CodeCleanupOptions options, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
87public static Task<SyntaxNode> CleanupAsync(SyntaxNode root, TextSpan span, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
94public static Task<SyntaxNode> CleanupAsync(SyntaxNode root, ImmutableArray<TextSpan> spans, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
CodeFixes\CodeFixContext.cs (10)
21private readonly Action<CodeAction, ImmutableArray<Diagnostic>> _registerCodeFix;
60public ImmutableArray<Diagnostic> Diagnostics { get; }
88ImmutableArray<Diagnostic> diagnostics,
89Action<CodeAction, ImmutableArray<Diagnostic>> registerCodeFix,
119ImmutableArray<Diagnostic> diagnostics,
120Action<CodeAction, ImmutableArray<Diagnostic>> registerCodeFix,
147Action<CodeAction, ImmutableArray<Diagnostic>> registerCodeFix,
171Action<CodeAction, ImmutableArray<Diagnostic>> registerCodeFix,
221public void RegisterCodeFix(CodeAction action, ImmutableArray<Diagnostic> diagnostics)
238private static void VerifyDiagnosticsArgument(ImmutableArray<Diagnostic> diagnostics, TextSpan span)
CodeFixes\FixAllOccurrences\FixAllProvider.cs (9)
21private protected static ImmutableArray<FixAllScope> DefaultSupportedFixAllScopes
55public static FixAllProvider Create(Func<FixAllContext, Document, ImmutableArray<Diagnostic>, Task<Document?>> fixAllAsync)
75Func<FixAllContext, Document, ImmutableArray<Diagnostic>, Task<Document?>> fixAllAsync,
76ImmutableArray<FixAllScope> supportedFixAllScopes)
82Func<FixAllContext, Document, ImmutableArray<Diagnostic>, Task<Document?>> fixAllAsync,
83ImmutableArray<FixAllScope> supportedFixAllScopes,
104Func<FixAllContext, Document, ImmutableArray<Diagnostic>, Task<Document?>> fixAllAsync,
105ImmutableArray<FixAllScope> supportedFixAllScopes,
110protected override Task<Document?> FixAllAsync(FixAllContext context, Document document, ImmutableArray<Diagnostic> diagnostics)
CodeRefactorings\FixAllOccurences\RefactorAllProvider.cs (9)
25private protected static ImmutableArray<RefactorAllScope> DefaultSupportedRefactorAllScopes
55public static RefactorAllProvider Create(Func<RefactorAllContext, Document, Optional<ImmutableArray<TextSpan>>, Task<Document?>> refactorAllAsync)
74Func<RefactorAllContext, Document, Optional<ImmutableArray<TextSpan>>, Task<Document?>> refactorAllAsync,
75ImmutableArray<RefactorAllScope> supportedRefactorAllScopes)
81Func<RefactorAllContext, Document, Optional<ImmutableArray<TextSpan>>, Task<Document?>> refactorAllAsync,
82ImmutableArray<RefactorAllScope> supportedRefactorAllScopes,
98Func<RefactorAllContext, Document, Optional<ImmutableArray<TextSpan>>, Task<Document?>> refactorAllAsync,
99ImmutableArray<RefactorAllScope> supportedRefactorAllScopes,
104protected override Task<Document?> RefactorAllAsync(RefactorAllContext context, Document document, Optional<ImmutableArray<TextSpan>> refactorAllSpans)
Diagnostics\DiagnosticAnalysisResult.cs (23)
29private readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> _syntaxLocals;
34private readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> _semanticLocals;
39private readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> _nonLocals;
44private readonly ImmutableArray<DiagnosticData> _others;
48ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> syntaxLocals,
49ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> semanticLocals,
50ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> nonLocals,
51ImmutableArray<DiagnosticData> others)
70syntaxLocals: ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty,
71semanticLocals: ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty,
72nonLocals: ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty,
78ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> syntaxLocalMap,
79ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> semanticLocalMap,
80ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> nonLocalMap,
81ImmutableArray<DiagnosticData> others)
105private ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>? GetMap(AnalysisKind kind)
114public ImmutableArray<DiagnosticData> GetAllDiagnostics()
132public ImmutableArray<DiagnosticData> GetDocumentDiagnostics(DocumentId documentId, AnalysisKind kind)
137return map.TryGetValue(documentId, out var diagnostics) ? diagnostics : [];
140public ImmutableArray<DiagnosticData> GetOtherDiagnostics()
151semanticLocals: ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty,
152nonLocals: ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty,
156private static void VerifyDocumentMap(Project project, ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> map)
Diagnostics\DiagnosticAnalysisResultBuilder.cs (13)
29public readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> SyntaxLocals => Convert(_lazySyntaxLocals);
30public readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> SemanticLocals => Convert(_lazySemanticLocals);
31public readonly ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> NonLocals => Convert(_lazyNonLocals);
32public readonly ImmutableArray<DiagnosticData> Others => _lazyOthers == null ? [] : [.. _lazyOthers];
34public void AddExternalSyntaxDiagnostics(DocumentId documentId, ImmutableArray<Diagnostic> diagnostics)
39public void AddExternalSemanticDiagnostics(DocumentId documentId, ImmutableArray<Diagnostic> diagnostics)
48ref Dictionary<DocumentId, List<DiagnosticData>>? lazyLocals, DocumentId documentId, ImmutableArray<Diagnostic> diagnostics)
108public void AddSyntaxDiagnostics(SyntaxTree tree, ImmutableArray<Diagnostic> diagnostics)
114public void AddSemanticDiagnostics(SyntaxTree tree, ImmutableArray<Diagnostic> diagnostics)
117public void AddCompilationDiagnostics(ImmutableArray<Diagnostic> diagnostics)
180ref Dictionary<DocumentId, List<DiagnosticData>>? lazyLocals, SyntaxTree? tree, ImmutableArray<Diagnostic> diagnostics)
186private static ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>> Convert(Dictionary<DocumentId, List<DiagnosticData>>? map)
189? ImmutableDictionary<DocumentId, ImmutableArray<DiagnosticData>>.Empty
Diagnostics\Extensions.cs (20)
28public static async Task<ImmutableArray<Diagnostic>> ToDiagnosticsAsync(this IEnumerable<DiagnosticData> diagnostics, Project project, CancellationToken cancellationToken)
39public static ValueTask<ImmutableArray<Location>> ConvertLocationsAsync(this IReadOnlyCollection<DiagnosticDataLocation> locations, Project project, CancellationToken cancellationToken)
107ImmutableArray<Diagnostic> additionalPragmaSuppressionDiagnostics,
110ImmutableArray<DiagnosticAnalyzer> analyzers,
146var diagnosticIdsToFilter = skippedAnalyzersInfo.FilteredDiagnosticIdsForAnalyzers.GetValueOrDefault(
156ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<Diagnostic>>? diagnosticsByAnalyzerMap;
223var diagnostics = additionalPragmaSuppressionDiagnostics.WhereAsArray(d => d.Location.SourceTree == treeToAnalyze);
247ImmutableDictionary<DiagnosticAnalyzer, ImmutableArray<Diagnostic>> diagnosticsByAnalyzer,
253ImmutableArray<string> diagnosticIdsToFilter)
255if (diagnosticsByAnalyzer.TryGetValue(analyzer, out var diagnostics))
263ImmutableArray<Diagnostic> diagnostics,
269ImmutableArray<string> diagnosticIdsToFilter)
310public static ImmutableArray<Diagnostic> Filter(
311this ImmutableArray<Diagnostic> diagnostics,
312ImmutableArray<string> diagnosticIdsToFilter,
412public static async Task<ImmutableArray<Diagnostic>> GetSourceGeneratorDiagnosticsAsync(Project project, CancellationToken cancellationToken)
418var result = await remoteHostClient.TryInvokeAsync<IRemoteDiagnosticAnalyzerService, ImmutableArray<DiagnosticData>>(
432public static ImmutableArray<DiagnosticData> ConvertToLocalDiagnostics(ImmutableArray<Diagnostic> diagnostics, TextDocument targetTextDocument, TextSpan? span = null)
459var documentIds = targetTextDocument.Project.Solution.GetDocumentIdsWithFilePath(lineSpan.Path);
Diagnostics\HostDiagnosticAnalyzers.cs (28)
31private readonly ConcurrentDictionary<string, ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>>> _hostDiagnosticAnalyzersPerLanguageMap;
40private readonly Lazy<ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>>> _lazyHostDiagnosticAnalyzersPerReferenceMap;
61_hostDiagnosticAnalyzersPerLanguageMap = new ConcurrentDictionary<string, ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>>>(concurrencyLevel: 2, capacity: 2);
62_lazyHostDiagnosticAnalyzersPerReferenceMap = new Lazy<ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>>>(() => CreateDiagnosticAnalyzersPerReferenceMap(_hostAnalyzerReferencesMap), isThreadSafe: true);
75public ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> GetOrCreateHostDiagnosticAnalyzersPerReference(string language)
83ImmutableArray<Project> projects)
100foreach (var descriptors in descriptorsPerReference.Values)
112public ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>> GetDiagnosticDescriptorsPerReference(
127private static ImmutableDictionary<string, ImmutableArray<DiagnosticDescriptor>> ConvertReferenceIdentityToName(
128ImmutableDictionary<object, ImmutableArray<DiagnosticDescriptor>> descriptorsPerReference,
131var builder = ImmutableDictionary.CreateBuilder<string, ImmutableArray<DiagnosticDescriptor>>();
143if (builder.TryGetValue(displayName, out var existing))
159public ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> CreateDiagnosticAnalyzersPerReference(Project project)
171public ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> CreateProjectDiagnosticAnalyzersPerReference(ProjectState project)
174public ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> CreateProjectDiagnosticAnalyzersPerReference(IReadOnlyList<AnalyzerReference> projectAnalyzerReferences, string language)
194private static ImmutableDictionary<object, ImmutableArray<DiagnosticDescriptor>> CreateDiagnosticDescriptorsPerReference(
196ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> analyzersMap)
198var builder = ImmutableDictionary.CreateBuilder<object, ImmutableArray<DiagnosticDescriptor>>();
215private ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> CreateHostDiagnosticAnalyzersAndBuildMap(string language)
219var builder = ImmutableDictionary.CreateBuilder<object, ImmutableArray<DiagnosticAnalyzer>>();
222var analyzers = reference.GetAnalyzers(language);
237private void UpdateCompilerAnalyzerMapIfNeeded(string language, ImmutableArray<DiagnosticAnalyzer> analyzers)
254private static ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> CreateDiagnosticAnalyzersPerReferenceMap(
257var builder = ImmutableDictionary.CreateBuilder<object, ImmutableArray<DiagnosticAnalyzer>>();
262var analyzers = language == null ? reference.Value.GetAnalyzersForAllLanguages() : reference.Value.GetAnalyzers(language);
314private static ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> MergeDiagnosticAnalyzerMap(
315ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> map1,
316ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> map2)
ExtensionManager\IExtensionManagerExtensions.cs (12)
90public static Func<SyntaxNode, ImmutableArray<TExtension>> CreateNodeExtensionGetter<TExtension>(
91this IExtensionManager extensionManager, IEnumerable<TExtension> extensions, Func<TExtension, ImmutableArray<Type>> nodeTypeGetter)
93var map = new Dictionary<Type, ImmutableArray<TExtension>>();
100var types = extensionManager.PerformFunction(
104map[type] = map.TryGetValue(type, out var existing)
110return n => map.TryGetValue(n.GetType(), out var extensions) ? extensions : [];
114public static Func<SyntaxToken, ImmutableArray<TExtension>> CreateTokenExtensionGetter<TExtension>(
115this IExtensionManager extensionManager, IEnumerable<TExtension> extensions, Func<TExtension, ImmutableArray<int>> tokenKindGetter)
117var map = new Dictionary<int, ImmutableArray<TExtension>>();
124var kinds = extensionManager.PerformFunction(
128map[kind] = map.TryGetValue(kind, out var existing)
134return t => map.TryGetValue(t.RawKind, out var extensions) ? extensions : [];
FindSymbols\FindReferences\DependentProjectsFinder.cs (12)
37ImmutableArray<(Project project, bool hasInternalsAccess)>>> s_solutionToDependentProjectMap = new();
40public static async Task<ImmutableArray<Project>> GetDependentProjectsAsync(
41Solution solution, ImmutableArray<ISymbol> symbols, IImmutableSet<Project> projects, CancellationToken cancellationToken)
49var dependentProjects = await GetDependentProjectsWorkerAsync(solution, symbols, cancellationToken).ConfigureAwait(false);
73private static async Task<ImmutableArray<Project>> GetDependentProjectsWorkerAsync(
74Solution solution, ImmutableArray<ISymbol> symbols, CancellationToken cancellationToken)
85var dependentProjects = await ComputeDependentProjectsAsync(
89var filteredProjects = maxVisibility == SymbolVisibility.Internal
115Solution solution, ImmutableArray<ISymbol> symbols, CancellationToken cancellationToken)
144private static async Task<ImmutableArray<(Project project, bool hasInternalsAccess)>> ComputeDependentProjectsAsync(
153ImmutableArray<(Project project, bool hasInternalsAccess)> dependentProjects;
172static async Task<ImmutableArray<(Project project, bool hasInternalsAccess)>> ComputeDependentProjectsWorkerAsync(
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (19)
27public abstract Task<ImmutableArray<string>> DetermineGlobalAliasesAsync(
30public abstract ValueTask<ImmutableArray<ISymbol>> DetermineCascadedSymbolsAsync(
122params ImmutableArray<string> values)
172var tokens = FindMatchingIdentifierTokens(state, identifier, cancellationToken);
176public static ImmutableArray<SyntaxToken> FindMatchingIdentifierTokens(FindReferencesDocumentState state, string identifier, CancellationToken cancellationToken)
182ImmutableArray<SyntaxToken> tokens,
250var aliasSymbols = GetLocalAliasSymbols(state, initialReferences, cancellationToken);
262var aliasSymbols = GetLocalAliasSymbols(state, initialReferences, cancellationToken);
267private static ImmutableArray<IAliasSymbol> GetLocalAliasSymbols(
286ImmutableArray<IAliasSymbol> localAliasSymbols,
308ImmutableArray<IAliasSymbol> localAliasSymbols,
528var deconstructMethods = semanticFacts.GetDeconstructionAssignmentMethods(semanticModel, node);
645internal static ImmutableArray<(string key, string value)> GetAdditionalFindUsagesProperties(
674internal static ImmutableArray<(string key, string value)> GetAdditionalFindUsagesProperties(ISymbol definition)
707protected virtual async Task<ImmutableArray<string>> DetermineGlobalAliasesAsync(
713public sealed override Task<ImmutableArray<string>> DetermineGlobalAliasesAsync(
737public sealed override async ValueTask<ImmutableArray<ISymbol>> DetermineCascadedSymbolsAsync(
750protected virtual async ValueTask<ImmutableArray<ISymbol>> DetermineCascadedSymbolsAsync(
763protected static async Task<ImmutableArray<string>> GetAllMatchingGlobalAliasNamesAsync(
FindSymbols\FindReferences\FindReferencesSearchEngine_FindReferencesInDocuments.cs (6)
54var allSymbolsAndGroups = await ReportGroupsSeriallyAsync(
75async ValueTask PerformSearchInProjectSeriallyAsync(ImmutableArray<(ISymbol symbol, SymbolGroup group)> symbols, Project project)
100ImmutableArray<(ISymbol symbol, SymbolGroup group)> symbols,
155var converted = await ConvertLocationsAsync(@this, values, symbol, group, cancellationToken).ConfigureAwait(false);
162static async Task<ImmutableArray<(SymbolGroup group, ISymbol symbol, ReferenceLocation location)>> ConvertLocationsAsync(
178var tokens = AbstractReferenceFinder.FindMatchingIdentifierTokens(state, symbol.Name, cancellationToken);
FindSymbols\FindReferences\FindReferencesSearchEngine.cs (17)
27ImmutableArray<IReferenceFinder> finders,
40private readonly ImmutableArray<IReferenceFinder> _finders = finders;
64ImmutableArray<ISymbol> symbols, CancellationToken cancellationToken)
83ImmutableArray<ISymbol> symbols, Action<Reference> onReferenceFound, CancellationToken cancellationToken)
105var allSymbols = symbolSet.GetAllSymbols();
112var projectsToSearch = await GetProjectsToSearchAsync(allSymbols, cancellationToken).ConfigureAwait(false);
126private async IAsyncEnumerable<(Project project, ImmutableArray<(ISymbol symbol, SymbolGroup group)> allSymbols)> GetProjectsAndSymbolsToSearchSeriallyAsync(
128ImmutableArray<Project> projectsToSearch,
152var allSymbolsAndGroups = await ReportGroupsSeriallyAsync(
164private async Task<ImmutableArray<(ISymbol symbol, SymbolGroup group)>> ReportGroupsSeriallyAsync(
165ImmutableArray<ISymbol> symbols, Dictionary<ISymbol, SymbolGroup> symbolToGroup, CancellationToken cancellationToken)
187var linkedSymbols = await SymbolFinder.FindLinkedSymbolsAsync(symbol, _solution, cancellationToken).ConfigureAwait(false);
206private Task<ImmutableArray<Project>> GetProjectsToSearchAsync(
207ImmutableArray<ISymbol> symbols, CancellationToken cancellationToken)
217Project project, ImmutableArray<(ISymbol symbol, SymbolGroup group)> allSymbols, Action<Reference> onReferenceFound, CancellationToken cancellationToken)
343ImmutableArray<(ISymbol symbol, SymbolGroup group)> allSymbols,
351var aliases = await finder.DetermineGlobalAliasesAsync(
FindSymbols\ReferenceLocation.cs (3)
55internal ImmutableArray<(string key, string value)> AdditionalProperties { get; }
72ImmutableArray<(string key, string value)> additionalProperties,
89internal ReferenceLocation(Document document, IAliasSymbol? alias, Location location, bool isImplicit, SymbolUsageInfo symbolUsageInfo, ImmutableArray<(string key, string value)> additionalProperties, CandidateReason candidateReason)
FindSymbols\SymbolTree\SymbolTreeInfo.cs (27)
41private readonly ImmutableArray<Node> _nodes;
75ImmutableArray<Node> sortedNodes,
87ImmutableArray<Node> sortedNodes,
101var unsortedNodes = ImmutableArray.Create(BuilderNode.RootNode);
102var sortedNodes = SortNodes(unsortedNodes);
118public Task<ImmutableArray<ISymbol>> FindAsync(
129public async Task<ImmutableArray<ISymbol>> FindAsync(
137var symbols = await FindCoreAsync(query, lazyAssembly, cancellationToken).ConfigureAwait(false);
142private Task<ImmutableArray<ISymbol>> FindCoreAsync(
167private async Task<ImmutableArray<ISymbol>> FuzzyFindAsync(
182var symbols = await FindAsync(lazyAssembly, similarName, ignoreCase: true, cancellationToken).ConfigureAwait(false);
213private async Task<ImmutableArray<ISymbol>> FindAsync(
245ImmutableArray<Node> nodes, string name)
270private static int BinarySearch(ImmutableArray<Node> nodes, string name)
299private static SpellChecker CreateSpellChecker(ImmutableArray<Node> sortedNodes)
302private static ImmutableArray<Node> SortNodes(ImmutableArray<BuilderNode> unsortedNodes)
350BuilderNode x, BuilderNode y, ImmutableArray<BuilderNode> nodeList)
409var members = rootContainer.GetMembers(node.Name);
422var members = nsOrType.GetMembers(node.Name);
446var values1 = _inheritanceMap[i];
447var values2 = other._inheritanceMap[i];
459ImmutableArray<BuilderNode> unsortedNodes,
463var sortedNodes = SortNodes(unsortedNodes);
470ImmutableArray<Node> nodes,
497public ImmutableArray<INamedTypeSymbol> GetDerivedMetadataTypes(
501var derivedTypeIndices = _inheritanceMap[baseTypeNameIndex];
Formatting\Formatter.cs (13)
34internal static ImmutableArray<AbstractFormattingRule> GetDefaultFormattingRules(Document document)
37internal static ImmutableArray<AbstractFormattingRule> GetDefaultFormattingRules(LanguageServices languageServices)
91internal static async Task<Document> FormatAsync(Document document, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
119internal static Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
122internal static async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, OptionSet? optionSet, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
159private static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
179internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
223private static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
229internal static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
232private static IFormattingResult? GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
256internal static IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
303private static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
311internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken = default)
PatternMatching\PatternMatcher.cs (5)
467candidate, candidateHumps, patternChunk, out var matchedSpans);
484var camelCaseKindIgnoreCase = TryUpperCaseCamelCaseMatch(candidate, candidateHumps, patternChunk, CompareOptions.IgnoreCase, out var matchedSpansIgnoreCase);
487var camelCaseKind = TryUpperCaseCamelCaseMatch(candidate, candidateHumps, patternChunk, CompareOptions.None, out var matchedSpans);
509out ImmutableArray<TextSpan> matchedSpans)
520out ImmutableArray<TextSpan> matchedSpans)
Recommendations\AbstractRecommendationServiceRunner.cs (27)
49private ImmutableArray<ISymbol> GetMemberSymbolsForParameter(IParameterSymbol parameter, int position, bool useBaseReferenceAccessibility, bool unwrapNullable, bool isForDereference)
51var symbols = TryGetMemberSymbolsForLambdaParameter(parameter, position, unwrapNullable, isForDereference);
57private ImmutableArray<ISymbol> TryGetMemberSymbolsForLambdaParameter(
96var parameterTypeSymbols = ImmutableArray<ITypeSymbol>.Empty;
106var candidateSymbols = _context.SemanticModel.GetMemberGroup(expressionOfInvocationExpression, _cancellationToken);
134private ImmutableArray<ITypeSymbol> SubstituteTypeParameters(ImmutableArray<ITypeSymbol> parameterTypeSymbols, SyntaxNode invocationExpression)
141var invocationSymbols = _context.SemanticModel.GetSymbolInfo(invocationExpression).GetAllSymbols();
150var typeParameters = invocationSymbol.GetTypeParameters();
151var typeArguments = invocationSymbol.GetTypeArguments();
184private ImmutableArray<ITypeSymbol> GetTypeSymbols(
185ImmutableArray<ISymbol> candidateSymbols,
208var allTypeArguments = type.GetAllTypeArguments();
217var methods = type.GetMembers(WellKnownMemberNames.DelegateInvokeName);
221var parameters = methods[0].GetParameters();
270protected ImmutableArray<ISymbol> GetSymbolsForNamespaceDeclarationNameContext<TNamespaceDeclarationSyntax>()
281var symbols = semanticModel.LookupNamespacesAndTypes(declarationSyntax.SpanStart, containingNamespaceSymbol)
287protected ImmutableArray<ISymbol> GetSymbolsForEnumBaseList(INamespaceOrTypeSymbol container)
356protected ImmutableArray<ISymbol> GetMemberSymbols(
387protected ImmutableArray<ISymbol> LookupSymbolsInContainer(
392var staticMembers = _context.SemanticModel.LookupStaticMembers(position, container);
396var staticExtensionsMembers = _context.SemanticModel
403var containerMembers = SuppressDefaultTupleElements(
436static bool MatchesConstraints(ITypeSymbol originalContainerType, ImmutableArray<ITypeSymbol> constraintTypes)
537protected static ImmutableArray<ISymbol> SuppressDefaultTupleElements(INamespaceOrTypeSymbol container, ImmutableArray<ISymbol> symbols)
Rename\ConflictEngine\ConflictResolver.Session.cs (13)
241var definitionLocations = _renameLocationSet.Symbol.Locations;
376ImmutableArray<ISymbol> newReferencedSymbols = default;
459var referencedSymbols = _renameLocationSet.ReferencedSymbols;
492ImmutableArray<ISymbol> newReferencedSymbols)
631private ImmutableArray<ISymbol> GetSymbolsInNewSolution(Document newDocument, SemanticModel newDocumentSemanticModel, RenameActionAnnotation conflictAnnotation, SyntaxNodeOrToken tokenOrNode)
633var newReferencedSymbols = RenameUtilities.GetSymbolsTouchingPosition(tokenOrNode.Span.Start, newDocumentSemanticModel, newDocument.Project.Solution.Services, _cancellationToken);
639var invocationReferencedSymbols = SymbolsForEnclosingInvocationExpressionWorker((SyntaxNode)tokenOrNode!, newDocumentSemanticModel, _cancellationToken);
681private async Task<(ImmutableHashSet<DocumentId> documentIds, ImmutableArray<string> possibleNameConflicts)> FindDocumentsAndPossibleNameConflictsAsync()
701var possibleNameConflicts = possibleNameConflictsList.ToImmutableArray();
714ImmutableArray<string> possibleNameConflicts)
760ImmutableArray<RenameLocation> renameLocations,
764ImmutableArray<string> possibleNameConflicts)
846private static bool ShouldIncludeLocation(ImmutableArray<RenameLocation> renameLocations, RenameLocation location)
Rename\ConflictEngine\DeclarationConflictHelpers.cs (16)
15public static ImmutableArray<Location> GetMembersWithConflictingSignatures(IMethodSymbol renamedMethod, bool trimOptionalParameters, bool distinguishRefKind)
26public static ImmutableArray<Location> GetMembersWithConflictingSignatures(IPropertySymbol renamedProperty, bool trimOptionalParameters, bool distinguishRefKind)
39private static ImmutableArray<Location> GetConflictLocations(ISymbol renamedMember,
42Func<ISymbol, ImmutableArray<ImmutableArray<ParameterSignature>>> getAllSignatures)
44var signatureToConflictingMember = new Dictionary<ImmutableArray<ParameterSignature>, ISymbol>(ConflictingSignatureComparer.Instance);
48foreach (var signature in getAllSignatures(member))
56foreach (var signature in getAllSignatures(renamedMember))
79private sealed class ConflictingSignatureComparer : IEqualityComparer<ImmutableArray<ParameterSignature>>
85public bool Equals(ImmutableArray<ParameterSignature> x, ImmutableArray<ParameterSignature> y)
88public int GetHashCode(ImmutableArray<ParameterSignature> obj)
97private static ImmutableArray<ImmutableArray<ParameterSignature>> GetAllSignatures(ImmutableArray<IParameterSymbol> parameters, bool trimOptionalParameters, bool distinguishRefKind)
99var resultBuilder = ArrayBuilder<ImmutableArray<ParameterSignature>>.GetInstance();
Rename\ConflictResolution.cs (21)
45public readonly ImmutableArray<DocumentId> DocumentIds;
47public readonly ImmutableArray<RelatedLocation> RelatedLocations;
49private readonly ImmutableDictionary<DocumentId, ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)>> _documentToModifiedSpansMap;
50private readonly ImmutableDictionary<DocumentId, ImmutableArray<ComplexifiedSpan>> _documentToComplexifiedSpansMap;
51private readonly ImmutableDictionary<DocumentId, ImmutableArray<RelatedLocation>> _documentToRelatedLocationsMap;
65_documentToModifiedSpansMap = ImmutableDictionary<DocumentId, ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)>>.Empty;
66_documentToComplexifiedSpansMap = ImmutableDictionary<DocumentId, ImmutableArray<ComplexifiedSpan>>.Empty;
67_documentToRelatedLocationsMap = ImmutableDictionary<DocumentId, ImmutableArray<RelatedLocation>>.Empty;
75ImmutableArray<DocumentId> documentIds, ImmutableArray<RelatedLocation> relatedLocations,
76ImmutableDictionary<DocumentId, ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)>> documentToModifiedSpansMap,
77ImmutableDictionary<DocumentId, ImmutableArray<ComplexifiedSpan>> documentToComplexifiedSpansMap,
78ImmutableDictionary<DocumentId, ImmutableArray<RelatedLocation>> documentToRelatedLocationsMap)
98public ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)> GetComplexifiedSpans(DocumentId documentId)
99=> _documentToComplexifiedSpansMap.TryGetValue(documentId, out var complexifiedSpans)
106if (_documentToModifiedSpansMap.TryGetValue(documentId, out var modifiedSpans))
112if (_documentToComplexifiedSpansMap.TryGetValue(documentId, out var complexifiedSpans))
124public ImmutableArray<RelatedLocation> GetRelatedLocationsForDocument(DocumentId documentId)
125=> _documentToRelatedLocationsMap.TryGetValue(documentId, out var result)
131if (_documentToModifiedSpansMap.TryGetValue(documentId, out var modifiedSpans))
138if (_documentToComplexifiedSpansMap.TryGetValue(documentId, out var complexifiedSpans))
Rename\IRemoteRenamerService.cs (25)
123var locations = await serializableLocations.Locations.SelectAsArrayAsync(
126var implicitLocations = await serializableLocations.ImplicitLocations.SelectAsArrayAsync(
129var referencedSymbols = await serializableLocations.ReferencedSymbols.SelectAsArrayAsync(
147ImmutableArray<SerializableRenameLocation> locations,
148ImmutableArray<SerializableReferenceLocation> implicitLocations,
149ImmutableArray<SerializableSymbolAndProjectId> referencedSymbols)
155public readonly ImmutableArray<SerializableRenameLocation> Locations = locations;
158public readonly ImmutableArray<SerializableReferenceLocation> ImplicitLocations = implicitLocations;
161public readonly ImmutableArray<SerializableSymbolAndProjectId> ReferencedSymbols = referencedSymbols;
163public async ValueTask<ImmutableArray<RenameLocation>> RehydrateLocationsAsync(
210ImmutableArray<DocumentId> documentIds,
211ImmutableArray<RelatedLocation> relatedLocations,
212ImmutableArray<(DocumentId, ImmutableArray<TextChange>)> documentTextChanges,
213ImmutableDictionary<DocumentId, ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)>> documentToModifiedSpansMap,
214ImmutableDictionary<DocumentId, ImmutableArray<ComplexifiedSpan>> documentToComplexifiedSpansMap,
215ImmutableDictionary<DocumentId, ImmutableArray<RelatedLocation>> documentToRelatedLocationsMap)
224public readonly ImmutableArray<DocumentId> DocumentIds = documentIds;
227public readonly ImmutableArray<RelatedLocation> RelatedLocations = relatedLocations;
230public readonly ImmutableArray<(DocumentId, ImmutableArray<TextChange>)> DocumentTextChanges = documentTextChanges;
233public readonly ImmutableDictionary<DocumentId, ImmutableArray<(TextSpan oldSpan, TextSpan newSpan)>> DocumentToModifiedSpansMap = documentToModifiedSpansMap;
236public readonly ImmutableDictionary<DocumentId, ImmutableArray<ComplexifiedSpan>> DocumentToComplexifiedSpansMap = documentToComplexifiedSpansMap;
239public readonly ImmutableDictionary<DocumentId, ImmutableArray<RelatedLocation>> DocumentToRelatedLocationsMap = documentToRelatedLocationsMap;
249var documentTextChanges = await RemoteUtilities.GetDocumentTextChangesAsync(OldSolution, _newSolutionWithoutRenamedDocument, cancellationToken).ConfigureAwait(false);
Rename\IRenameRewriterLanguageService.cs (6)
52Task<ImmutableArray<Location>> ComputeDeclarationConflictsAsync(
70Task<ImmutableArray<Location>> ComputeImplicitReferenceConflictsAsync(
85ImmutableArray<Location> ComputePossibleImplicitUsageConflicts(
124public abstract Task<ImmutableArray<Location>> ComputeDeclarationConflictsAsync(string replacementText, ISymbol renamedSymbol, ISymbol renameSymbol, IEnumerable<ISymbol> referencedSymbols, Solution baseSolution, Solution newSolution, IDictionary<Location, Location> reverseMappedLocations, CancellationToken cancellationToken);
125public abstract Task<ImmutableArray<Location>> ComputeImplicitReferenceConflictsAsync(ISymbol renameSymbol, ISymbol renamedSymbol, IEnumerable<ReferenceLocation> implicitReferenceLocations, CancellationToken cancellationToken);
126public abstract ImmutableArray<Location> ComputePossibleImplicitUsageConflicts(ISymbol renamedSymbol, SemanticModel semanticModel, Location originalDeclarationLocation, int newDeclarationLocationStartingPosition, CancellationToken cancellationToken);
Rename\Renamer.RenameDocumentActionSet.cs (10)
19/// document metadata will still be updated by calling <see cref="UpdateSolutionAsync(Solution, ImmutableArray{RenameDocumentAction}, CancellationToken)"/>
22/// of the actions by calling <see cref="UpdateSolutionAsync(Solution, ImmutableArray{RenameDocumentAction}, CancellationToken)"/>.
30private readonly ImmutableArray<string> _documentFolders;
34ImmutableArray<RenameDocumentAction> actions,
37ImmutableArray<string> documentFolders,
49/// contents rather than metadata. Document metadata will still not be updated unless <see cref="UpdateSolutionAsync(Solution, ImmutableArray{RenameDocumentAction}, CancellationToken)" />
52public ImmutableArray<RenameDocumentAction> ApplicableActions { get; }
55/// Same as calling <see cref="UpdateSolutionAsync(Solution, ImmutableArray{RenameDocumentAction}, CancellationToken)"/> with
70/// immediately call <see cref="UpdateSolutionAsync(Solution, ImmutableArray{RenameDocumentAction}, CancellationToken)"/> without
73public async Task<Solution> UpdateSolutionAsync(Solution solution, ImmutableArray<RenameDocumentAction> actions, CancellationToken cancellationToken)
Shared\Extensions\ILanguageMetadataExtensions.cs (3)
23public static ImmutableArray<TInterface> FilterToSpecificLanguage<TInterface, TMetadata>(this IEnumerable<Lazy<TInterface, TMetadata>> services, string languageName)
29public static ImmutableDictionary<string, ImmutableArray<Lazy<TInterface, TMetadata>>> ToPerLanguageMap<TInterface, TMetadata>(this IEnumerable<Lazy<TInterface, TMetadata>> services)
44public static ImmutableDictionary<string, ImmutableArray<Lazy<TInterface, TMetadata>>> ToPerLanguageMapWithMultipleLanguages<TInterface, TMetadata>(this IEnumerable<Lazy<TInterface, TMetadata>> services)
Shared\Extensions\ISymbolExtensions.cs (18)
91var attributes = symbol.GetAttributes();
107ISymbol symbol, INamedTypeSymbol? hideModuleNameAttribute, ImmutableArray<AttributeData> attributes = default)
128ImmutableArray<AttributeData> attributes, bool hideAdvancedMembers, IMethodSymbol? constructor)
151ImmutableArray<AttributeData> attributes, ImmutableArray<IMethodSymbol> constructors)
160ImmutableArray<AttributeData> attributes, ImmutableArray<IMethodSymbol> constructors)
169ImmutableArray<AttributeData> attributes, ImmutableArray<IMethodSymbol> constructors)
182ImmutableArray<AttributeData> attributes, ImmutableArray<IMethodSymbol> attributeConstructors, int hiddenFlag)
425var typeParameterRefs = document.Descendants(DocumentationCommentXmlNames.TypeParameterReferenceElementName).ToImmutableArray();
433var typeArgs = symbol.GetAllTypeArguments();
645public static ImmutableArray<T> FilterToVisibleAndBrowsableSymbols<T>(
646this ImmutableArray<T> symbols, bool hideAdvancedMembers, Compilation compilation, Func<T, bool> inclusionFilter) where T : ISymbol
666var filteredSymbols = symbols.WhereAsArray(static (s, arg) =>
682public static ImmutableArray<T> FilterToVisibleAndBrowsableSymbolsAndNotUnsafeSymbols<T>(
683this ImmutableArray<T> symbols, bool hideAdvancedMembers, Compilation compilation) where T : ISymbol
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeFixes\FixAllContextHelper.cs (15)
22public static async Task<ImmutableDictionary<Document, ImmutableArray<Diagnostic>>> GetDocumentDiagnosticsToFixAsync(
27var allDiagnostics = ImmutableArray<Diagnostic>.Empty;
40var documentDiagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
41return ImmutableDictionary<Document, ImmutableArray<Diagnostic>>.Empty.SetItem(document, documentDiagnostics);
72var projectsToFix = project.Solution.Projects
80allDiagnostics = await ProducerConsumer<ImmutableArray<Diagnostic>>.RunParallelAsync(
92await foreach (var diagnostics in results.ConfigureAwait(false))
106return ImmutableDictionary<Document, ImmutableArray<Diagnostic>>.Empty;
113static async Task<ImmutableDictionary<Document, ImmutableArray<Diagnostic>>> GetSpanDiagnosticsAsync(
115IEnumerable<KeyValuePair<Document, ImmutableArray<TextSpan>>> documentsAndSpans)
122var documentDiagnostics = await fixAllContext.GetDocumentSpanDiagnosticsAsync(document, span).ConfigureAwait(false);
132private static async Task<ImmutableDictionary<Document, ImmutableArray<Diagnostic>>> GetDocumentDiagnosticsToFixAsync(
134ImmutableArray<Diagnostic> diagnostics,
137var builder = ImmutableDictionary.CreateBuilder<Document, ImmutableArray<Diagnostic>>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (72)
29ImmutableArray<AttributeData> attributes, Accessibility accessibility,
31ImmutableArray<IEventSymbol> explicitInterfaceImplementations,
44ImmutableArray<AttributeData> attributes,
49ImmutableArray<IPropertySymbol> explicitInterfaceImplementations,
51ImmutableArray<IParameterSymbol> parameters,
78ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
79ITypeSymbol type, RefKind refKind, ImmutableArray<IPropertySymbol> explicitInterfaceImplementations, string name,
80ImmutableArray<IParameterSymbol> parameters, IMethodSymbol? getMethod, IMethodSymbol? setMethod,
103ImmutableArray<AttributeData> attributes,
120ImmutableArray<AttributeData> attributes,
124ImmutableArray<IParameterSymbol> parameters,
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
139ImmutableArray<AttributeData> attributes, string typeName,
140ImmutableArray<SyntaxNode> statements = default)
149ImmutableArray<AttributeData> attributes,
154ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
156ImmutableArray<ITypeParameterSymbol> typeParameters,
157ImmutableArray<IParameterSymbol> parameters,
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
160ImmutableArray<AttributeData> returnTypeAttributes = default,
173ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
176ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
177string? name, ImmutableArray<ITypeParameterSymbol> typeParameters,
178ImmutableArray<IParameterSymbol> parameters,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
181ImmutableArray<AttributeData> returnTypeAttributes = default,
192ImmutableArray<AttributeData> attributes,
197ImmutableArray<IParameterSymbol> parameters,
198ImmutableArray<SyntaxNode> statements = default,
199ImmutableArray<AttributeData> returnTypeAttributes = default,
224ImmutableArray<SyntaxNode> statements = default,
225ImmutableArray<AttributeData> toTypeAttributes = default,
245ImmutableArray<AttributeData> attributes,
252ImmutableArray<SyntaxNode> statements = default,
253ImmutableArray<AttributeData> toTypeAttributes = default,
277ImmutableArray<AttributeData> attributes, RefKind refKind, bool isParams, ITypeSymbol type, string name, bool isOptional = false, bool hasDefaultValue = false, object? defaultValue = null)
287ImmutableArray<AttributeData>? attributes = null,
329ImmutableArray<AttributeData> attributes,
331ImmutableArray<ITypeSymbol> constraintTypes,
358ImmutableArray<AttributeData> attributes = default,
360ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
361ImmutableArray<SyntaxNode> statements = default)
383ImmutableArray<AttributeData> attributes,
385ImmutableArray<SyntaxNode> statements)
405ImmutableArray<TypedConstant> constructorArguments = default,
406ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments = default)
415ImmutableArray<AttributeData> attributes,
419ImmutableArray<ITypeParameterSymbol> typeParameters = default,
421ImmutableArray<INamedTypeSymbol> interfaces = default,
423ImmutableArray<ISymbol> members = default,
434ImmutableArray<AttributeData> attributes,
438ImmutableArray<ITypeParameterSymbol> typeParameters = default,
440ImmutableArray<INamedTypeSymbol> interfaces = default,
442ImmutableArray<ISymbol> members = default,
460ImmutableArray<AttributeData> attributes,
466ImmutableArray<ITypeParameterSymbol> typeParameters = default,
467ImmutableArray<IParameterSymbol> parameters = default,
512ImmutableArray<AttributeData> attributes = default,
515ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
517ImmutableArray<IParameterSymbol>? parameters = null,
518ImmutableArray<SyntaxNode> statements = default,
521Optional<ImmutableArray<AttributeData>> returnTypeAttributes = default)
542ImmutableArray<AttributeData> attributes = default,
543ImmutableArray<IParameterSymbol>? parameters = null,
546ImmutableArray<IPropertySymbol> explicitInterfaceImplementations = default,
570ImmutableArray<AttributeData> attributes = default,
573ImmutableArray<IEventSymbol> explicitInterfaceImplementations = default,
591ImmutableArray<AttributeData> attributes = default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\ITypeInferenceServiceExtensions.cs (9)
15public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
18public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
21public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
24public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
33var types = typeInferenceService.InferTypes(semanticModel, expression, cancellationToken);
43var types = typeInferenceService.InferTypes(semanticModel, position, cancellationToken);
47private static INamedTypeSymbol? GetFirstDelegateType(SemanticModel semanticModel, ImmutableArray<ITypeSymbol> types)
73var types = typeInferenceService.InferTypes(semanticModel, expression, name, cancellationToken);
103var types = typeInferenceService.InferTypes(semanticModel, position, name, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (4)
24public async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (9)
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
57var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
58var containers = GetAllContainers(root, contextLocation);
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
137var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
138var containers = GetAllContainers(root, contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\TypeInferenceService\ITypeInferenceService.cs (4)
27ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
28ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
30ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
31ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
Tags\WellKnownTags.cs (77)
66internal static readonly ImmutableArray<string> Assembly = [WellKnownTags.Assembly];
67internal static readonly ImmutableArray<string> ClassPublic = [WellKnownTags.Class, WellKnownTags.Public];
68internal static readonly ImmutableArray<string> ClassProtected = [WellKnownTags.Class, WellKnownTags.Protected];
69internal static readonly ImmutableArray<string> ClassPrivate = [WellKnownTags.Class, WellKnownTags.Private];
70internal static readonly ImmutableArray<string> ClassInternal = [WellKnownTags.Class, WellKnownTags.Internal];
71internal static readonly ImmutableArray<string> ConstantPublic = [WellKnownTags.Constant, WellKnownTags.Public];
72internal static readonly ImmutableArray<string> ConstantProtected = [WellKnownTags.Constant, WellKnownTags.Protected];
73internal static readonly ImmutableArray<string> ConstantPrivate = [WellKnownTags.Constant, WellKnownTags.Private];
74internal static readonly ImmutableArray<string> ConstantInternal = [WellKnownTags.Constant, WellKnownTags.Internal];
75internal static readonly ImmutableArray<string> DelegatePublic = [WellKnownTags.Delegate, WellKnownTags.Public];
76internal static readonly ImmutableArray<string> DelegateProtected = [WellKnownTags.Delegate, WellKnownTags.Protected];
77internal static readonly ImmutableArray<string> DelegatePrivate = [WellKnownTags.Delegate, WellKnownTags.Private];
78internal static readonly ImmutableArray<string> DelegateInternal = [WellKnownTags.Delegate, WellKnownTags.Internal];
79internal static readonly ImmutableArray<string> EnumPublic = [WellKnownTags.Enum, WellKnownTags.Public];
80internal static readonly ImmutableArray<string> EnumProtected = [WellKnownTags.Enum, WellKnownTags.Protected];
81internal static readonly ImmutableArray<string> EnumPrivate = [WellKnownTags.Enum, WellKnownTags.Private];
82internal static readonly ImmutableArray<string> EnumInternal = [WellKnownTags.Enum, WellKnownTags.Internal];
83internal static readonly ImmutableArray<string> EnumMemberPublic = [WellKnownTags.EnumMember, WellKnownTags.Public];
84internal static readonly ImmutableArray<string> EnumMemberProtected = [WellKnownTags.EnumMember, WellKnownTags.Protected];
85internal static readonly ImmutableArray<string> EnumMemberPrivate = [WellKnownTags.EnumMember, WellKnownTags.Private];
86internal static readonly ImmutableArray<string> EnumMemberInternal = [WellKnownTags.EnumMember, WellKnownTags.Internal];
87internal static readonly ImmutableArray<string> EventPublic = [WellKnownTags.Event, WellKnownTags.Public];
88internal static readonly ImmutableArray<string> EventProtected = [WellKnownTags.Event, WellKnownTags.Protected];
89internal static readonly ImmutableArray<string> EventPrivate = [WellKnownTags.Event, WellKnownTags.Private];
90internal static readonly ImmutableArray<string> EventInternal = [WellKnownTags.Event, WellKnownTags.Internal];
91internal static readonly ImmutableArray<string> ExtensionMethodPublic = [WellKnownTags.ExtensionMethod, WellKnownTags.Public];
92internal static readonly ImmutableArray<string> ExtensionMethodProtected = [WellKnownTags.ExtensionMethod, WellKnownTags.Protected];
93internal static readonly ImmutableArray<string> ExtensionMethodPrivate = [WellKnownTags.ExtensionMethod, WellKnownTags.Private];
94internal static readonly ImmutableArray<string> ExtensionMethodInternal = [WellKnownTags.ExtensionMethod, WellKnownTags.Internal];
95internal static readonly ImmutableArray<string> FieldPublic = [WellKnownTags.Field, WellKnownTags.Public];
96internal static readonly ImmutableArray<string> FieldProtected = [WellKnownTags.Field, WellKnownTags.Protected];
97internal static readonly ImmutableArray<string> FieldPrivate = [WellKnownTags.Field, WellKnownTags.Private];
98internal static readonly ImmutableArray<string> FieldInternal = [WellKnownTags.Field, WellKnownTags.Internal];
99internal static readonly ImmutableArray<string> InterfacePublic = [WellKnownTags.Interface, WellKnownTags.Public];
100internal static readonly ImmutableArray<string> InterfaceProtected = [WellKnownTags.Interface, WellKnownTags.Protected];
101internal static readonly ImmutableArray<string> InterfacePrivate = [WellKnownTags.Interface, WellKnownTags.Private];
102internal static readonly ImmutableArray<string> InterfaceInternal = [WellKnownTags.Interface, WellKnownTags.Internal];
103internal static readonly ImmutableArray<string> Intrinsic = [WellKnownTags.Intrinsic];
104internal static readonly ImmutableArray<string> Keyword = [WellKnownTags.Keyword];
105internal static readonly ImmutableArray<string> Label = [WellKnownTags.Label];
106internal static readonly ImmutableArray<string> Local = [WellKnownTags.Local];
107internal static readonly ImmutableArray<string> Namespace = [WellKnownTags.Namespace];
108internal static readonly ImmutableArray<string> MethodPublic = [WellKnownTags.Method, WellKnownTags.Public];
109internal static readonly ImmutableArray<string> MethodProtected = [WellKnownTags.Method, WellKnownTags.Protected];
110internal static readonly ImmutableArray<string> MethodPrivate = [WellKnownTags.Method, WellKnownTags.Private];
111internal static readonly ImmutableArray<string> MethodInternal = [WellKnownTags.Method, WellKnownTags.Internal];
112internal static readonly ImmutableArray<string> ModulePublic = [WellKnownTags.Module, WellKnownTags.Public];
113internal static readonly ImmutableArray<string> ModuleProtected = [WellKnownTags.Module, WellKnownTags.Protected];
114internal static readonly ImmutableArray<string> ModulePrivate = [WellKnownTags.Module, WellKnownTags.Private];
115internal static readonly ImmutableArray<string> ModuleInternal = [WellKnownTags.Module, WellKnownTags.Internal];
116internal static readonly ImmutableArray<string> Folder = [WellKnownTags.Folder];
117internal static readonly ImmutableArray<string> OperatorPublic = [WellKnownTags.Operator, WellKnownTags.Public];
118internal static readonly ImmutableArray<string> OperatorProtected = [WellKnownTags.Operator, WellKnownTags.Protected];
119internal static readonly ImmutableArray<string> OperatorPrivate = [WellKnownTags.Operator, WellKnownTags.Private];
120internal static readonly ImmutableArray<string> OperatorInternal = [WellKnownTags.Operator, WellKnownTags.Internal];
121internal static readonly ImmutableArray<string> Parameter = [WellKnownTags.Parameter];
122internal static readonly ImmutableArray<string> PropertyPublic = [WellKnownTags.Property, WellKnownTags.Public];
123internal static readonly ImmutableArray<string> PropertyProtected = [WellKnownTags.Property, WellKnownTags.Protected];
124internal static readonly ImmutableArray<string> PropertyPrivate = [WellKnownTags.Property, WellKnownTags.Private];
125internal static readonly ImmutableArray<string> PropertyInternal = [WellKnownTags.Property, WellKnownTags.Internal];
126internal static readonly ImmutableArray<string> RangeVariable = [WellKnownTags.RangeVariable];
127internal static readonly ImmutableArray<string> Reference = [WellKnownTags.Reference];
128internal static readonly ImmutableArray<string> StructurePublic = [WellKnownTags.Structure, WellKnownTags.Public];
129internal static readonly ImmutableArray<string> StructureProtected = [WellKnownTags.Structure, WellKnownTags.Protected];
130internal static readonly ImmutableArray<string> StructurePrivate = [WellKnownTags.Structure, WellKnownTags.Private];
131internal static readonly ImmutableArray<string> StructureInternal = [WellKnownTags.Structure, WellKnownTags.Internal];
132internal static readonly ImmutableArray<string> TypeParameter = [WellKnownTags.TypeParameter];
133internal static readonly ImmutableArray<string> Snippet = [WellKnownTags.Snippet];
135internal static readonly ImmutableArray<string> Error = [WellKnownTags.Error];
136internal static readonly ImmutableArray<string> Warning = [WellKnownTags.Warning];
137internal static readonly ImmutableArray<string> StatusInformation = [WellKnownTags.StatusInformation];
139internal static readonly ImmutableArray<string> AddReference = [WellKnownTags.AddReference];
140internal static readonly ImmutableArray<string> TargetTypeMatch = [WellKnownTags.TargetTypeMatch];
142internal static readonly ImmutableArray<string> CSharpFile = [WellKnownTags.File, LanguageNames.CSharp];
143internal static readonly ImmutableArray<string> VisualBasicFile = [WellKnownTags.File, LanguageNames.VisualBasic];
145internal static readonly ImmutableArray<string> CSharpProject = [WellKnownTags.Project, LanguageNames.CSharp];
146internal static readonly ImmutableArray<string> VisualBasicProject = [WellKnownTags.Project, LanguageNames.VisualBasic];
Workspace\IsolatedAnalyzerFileReference.cs (12)
62public override ImmutableArray<DiagnosticAnalyzer> GetAnalyzers(string language)
65public override ImmutableArray<DiagnosticAnalyzer> GetAnalyzersForAllLanguages()
69public override ImmutableArray<ISourceGenerator> GetGenerators()
72public override ImmutableArray<ISourceGenerator> GetGenerators(string language)
75public override ImmutableArray<ISourceGenerator> GetGeneratorsForAllLanguages()
78private ImmutableArray<DiagnosticAnalyzer> PinAnalyzers<TArg>(Func<AnalyzerReference, TArg, ImmutableArray<DiagnosticAnalyzer>> getItems, TArg arg)
81private ImmutableArray<ISourceGenerator> PinGenerators<TArg>(Func<AnalyzerReference, TArg, ImmutableArray<ISourceGenerator>> getItems, TArg arg)
84private ImmutableArray<TItem> PinItems<TItem, TArg>(
86Func<AnalyzerReference, TArg, ImmutableArray<TItem>> getItems,
92var items = getItems(this.UnderlyingAnalyzerFileReference, arg);
Workspace\ProjectSystem\ProjectSystemProject.BatchingDocumentCollection.cs (14)
49private readonly ImmutableArray<DocumentInfo>.Builder _documentsAddedInBatch = ImmutableArray.CreateBuilder<DocumentInfo>();
82public DocumentId AddFile(string fullPath, SourceCodeKind sourceCodeKind, ImmutableArray<string> folders)
130ImmutableArray<string> folders,
372public void ReorderFiles(ImmutableArray<string> filePaths)
416internal ImmutableArray<(DocumentId documentId, SourceTextContainer textContainer)> UpdateSolutionForBatch(
418ImmutableArray<string>.Builder documentFileNamesAdded,
419Func<Solution, ImmutableArray<DocumentInfo>, Solution> addDocuments,
421Func<Solution, ImmutableArray<DocumentId>, Solution> removeDocuments,
431static ImmutableArray<(DocumentId documentId, SourceTextContainer textContainer)> UpdateSolutionForBatch(
433ImmutableArray<string>.Builder documentFileNamesAdded,
434Func<Solution, ImmutableArray<DocumentInfo>, Solution> addDocuments,
436Func<Solution, ImmutableArray<DocumentId>, Solution> removeDocuments,
439ImmutableArray<DocumentInfo> documentsAddedInBatch,
440ImmutableArray<DocumentId> documentsRemovedInBatch,
Workspace\ProjectSystem\ProjectSystemProject.cs (18)
34private static readonly ImmutableArray<MetadataReferenceProperties> s_defaultMetadataReferenceProperties = [default(MetadataReferenceProperties)];
99private readonly Dictionary<string, ImmutableArray<MetadataReferenceProperties>> _allMetadataReferences = [];
173var watchedDirectories = GetWatchedDirectories(language, filePath);
177static ImmutableArray<WatchedDirectory> GetWatchedDirectories(string? language, string? filePath)
555ImmutableArray<string> documentFileNamesAdded = [];
556ImmutableArray<(DocumentId documentId, SourceTextContainer textContainer)> documentsToOpen = [];
557ImmutableArray<(DocumentId documentId, SourceTextContainer textContainer)> additionalDocumentsToOpen = [];
558ImmutableArray<(DocumentId documentId, SourceTextContainer textContainer)> analyzerConfigDocumentsToOpen = [];
807var isolatedReferences = IsolatedAnalyzerReferenceSet.CreateIsolatedAnalyzerReferencesAsync(
809ImmutableArray<AnalyzerReference>.CastUp(initialReferenceList.ToImmutableAndClear()),
823public void AddSourceFile(string fullPath, SourceCodeKind sourceCodeKind = SourceCodeKind.Regular, ImmutableArray<string> folders = default)
839ImmutableArray<string> folders = default,
860public void AddAdditionalFile(string fullPath, SourceCodeKind sourceCodeKind = SourceCodeKind.Regular, ImmutableArray<string> folders = default)
1090return _allMetadataReferences.TryGetValue(fullPath, out var propertiesList) && propertiesList.Contains(properties);
1097public ImmutableArray<MetadataReferenceProperties> GetPropertiesForMetadataReference(string fullPath)
1101return _allMetadataReferences.TryGetValue(fullPath, out var list) ? list : [];
1271public void ReorderSourceFiles(ImmutableArray<string> filePaths)
1288private static void ClearAndZeroCapacity<T>(ImmutableArray<T>.Builder list)
Workspace\ProjectSystem\ProjectSystemProjectFactory.ProjectUpdateState.cs (14)
53ImmutableDictionary<string, ImmutableArray<ProjectId>> ProjectsByOutputPath,
55ImmutableArray<PortableExecutableReference> RemovedMetadataReferences,
56ImmutableArray<PortableExecutableReference> AddedMetadataReferences,
57ImmutableArray<string> RemovedAnalyzerReferences,
58ImmutableArray<string> AddedAnalyzerReferences)
61ImmutableDictionary<string, ImmutableArray<ProjectId>>.Empty.WithComparers(StringComparer.OrdinalIgnoreCase),
79static ImmutableDictionary<string, ImmutableArray<ProjectId>> AddProject(string path, ProjectId projectId, ImmutableDictionary<string, ImmutableArray<ProjectId>> map)
81if (!map.TryGetValue(path, out var projects))
99static ImmutableDictionary<string, ImmutableArray<ProjectId>> RemoveProject(string path, ProjectId projectId, ImmutableDictionary<string, ImmutableArray<ProjectId>> map)
101if (map.TryGetValue(path, out var projects))
155public record struct ProjectReferenceInformation(ImmutableArray<string> OutputPaths, ImmutableArray<(string path, ProjectReference ProjectReference)> ConvertedProjectReferences)
Workspace\Solution\ProjectState.cs (22)
126private async Task<Dictionary<ImmutableArray<byte>, DocumentId>> ComputeContentHashToDocumentIdAsync(CancellationToken cancellationToken)
128var result = new Dictionary<ImmutableArray<byte>, DocumentId>(ImmutableArrayComparer<byte>.Instance);
132var contentHash = text.GetContentHash();
160private AsyncLazy<Dictionary<ImmutableArray<byte>, DocumentId>> LazyContentHashToDocumentId
184public async ValueTask<DocumentId?> GetDocumentIdAsync(ImmutableArray<byte> contentHash, CancellationToken cancellationToken)
240ImmutableArray<TextDocumentState> newDocuments,
259VersionStamp oldVersion, ImmutableArray<TextDocumentState> newDocuments, CancellationToken cancellationToken)
314private ImmutableArray<AdditionalText> AdditionalFiles
866public ProjectState AddDocuments(ImmutableArray<DocumentState> documents)
878public ProjectState AddAdditionalDocuments(ImmutableArray<AdditionalDocumentState> documents)
890public ProjectState AddAnalyzerConfigDocuments(ImmutableArray<AnalyzerConfigDocumentState> documents)
921public ProjectState RemoveDocuments(ImmutableArray<DocumentId> documentIds)
934public ProjectState RemoveAdditionalDocuments(ImmutableArray<DocumentId> documentIds)
944public ProjectState RemoveAnalyzerConfigDocuments(ImmutableArray<DocumentId> documentIds)
970public ProjectState UpdateDocuments(ImmutableArray<DocumentState> oldDocuments, ImmutableArray<DocumentState> newDocuments)
996public ProjectState UpdateAdditionalDocuments(ImmutableArray<AdditionalDocumentState> oldDocuments, ImmutableArray<AdditionalDocumentState> newDocuments)
1021public ProjectState UpdateAnalyzerConfigDocuments(ImmutableArray<AnalyzerConfigDocumentState> oldDocuments, ImmutableArray<AnalyzerConfigDocumentState> newDocuments)
1043ImmutableArray<TextDocumentState> oldDocuments,
1044ImmutableArray<TextDocumentState> newDocuments,
Workspace\Solution\SolutionCompilationState.cs (47)
241ImmutableArray<ProjectId> changedProjectIds,
250static bool CanReuse(ProjectId id, (ImmutableArray<ProjectId> changedProjectIds, ProjectDependencyGraph dependencyGraph) arg)
781var addedReferences = stateChange.NewProjectState.AnalyzerReferences.Except<AnalyzerReference>(stateChange.OldProjectState.AnalyzerReferences, ReferenceEqualityComparer.Instance).ToImmutableArray();
782var removedReferences = stateChange.OldProjectState.AnalyzerReferences.Except<AnalyzerReference>(stateChange.NewProjectState.AnalyzerReferences, ReferenceEqualityComparer.Instance).ToImmutableArray();
806internal SolutionCompilationState WithDocumentTexts(ImmutableArray<(DocumentId documentId, SourceText text)> texts, PreservationMode mode)
817(ImmutableArray<(DocumentId, SourceText)>,
818ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
849ImmutableArray<(DocumentId documentId, TDocumentData documentData)> documentsToUpdate,
850ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> sourceGeneratedDocuments,
887IEnumerable<(ProjectId projectId, ImmutableArray<TDocumentState> updatedDocumentState)> updatedDocumentStatesPerProject,
888Func<ProjectState, ImmutableArray<TDocumentState>, TranslationAction> getTranslationAction)
922private static TranslationAction GetUpdateDocumentsTranslationAction<TDocumentState>(ProjectState oldProjectState, ImmutableArray<TDocumentState> newDocumentStates)
927ImmutableArray<DocumentState> ordinaryNewDocumentStates => GetUpdateOrdinaryDocumentsTranslationAction(oldProjectState, ordinaryNewDocumentStates),
928ImmutableArray<AdditionalDocumentState> additionalNewDocumentStates => GetUpdateAdditionalDocumentsTranslationAction(oldProjectState, additionalNewDocumentStates),
929ImmutableArray<AnalyzerConfigDocumentState> analyzerConfigNewDocumentStates => GetUpdateAnalyzerConfigDocumentsTranslationAction(oldProjectState, analyzerConfigNewDocumentStates),
933TranslationAction GetUpdateOrdinaryDocumentsTranslationAction(ProjectState oldProjectState, ImmutableArray<DocumentState> newDocumentStates)
935var oldDocumentStates = newDocumentStates.SelectAsArray(static (s, oldProjectState) => oldProjectState.DocumentStates.GetRequiredState(s.Id), oldProjectState);
940TranslationAction GetUpdateAdditionalDocumentsTranslationAction(ProjectState oldProjectState, ImmutableArray<AdditionalDocumentState> newDocumentStates)
942var oldDocumentStates = newDocumentStates.SelectAsArray(static (s, oldProjectState) => oldProjectState.AdditionalDocumentStates.GetRequiredState(s.Id), oldProjectState);
947TranslationAction GetUpdateAnalyzerConfigDocumentsTranslationAction(ProjectState oldProjectState, ImmutableArray<AnalyzerConfigDocumentState> newDocumentStates)
949var oldDocumentStates = newDocumentStates.SelectAsArray(static (s, oldProjectState) => oldProjectState.AnalyzerConfigDocumentStates.GetRequiredState(s.Id), oldProjectState);
1005/// <inheritdoc cref="Solution.WithDocumentSyntaxRoots(ImmutableArray{ValueTuple{DocumentId, SyntaxNode}}, PreservationMode)"/>
1009public SolutionCompilationState WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode)
1022(ImmutableArray<(DocumentId, SyntaxNode)>,
1023ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
1047ImmutableArray<(DocumentId documentId, DocumentState documentState)> documentIdsAndStates, bool forceEvenIfTreesWouldDiffer)
1261public ValueTask<ImmutableArray<Diagnostic>> GetSourceGeneratorDiagnosticsAsync(
1368var projectIdsToUnfreeze = FrozenSourceGeneratedDocumentStates.States.Values
1405ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> documents)
1586private (ImmutableArray<ProjectState> sortedProjectStates, ImmutableSegmentedDictionary<ProjectId, ICompilationTracker>) ComputeFrozenSnapshotMaps(CancellationToken cancellationToken)
1639var newProjectStates = projectStateChanged ? newSortedProjectStatesBuilder.ToImmutableAndClear() : this.SolutionState.SortedProjectStates;
1701var allDocumentIds = this.SolutionState.GetRelatedDocumentIds(documentId, includeDifferentLanguages);
1702var allDocumentIdsWithCurrentDocumentState = allDocumentIds.SelectAsArray(static (docId, currentDocumentState) => (docId, currentDocumentState), currentDocumentState);
1713var allDocumentIds = @this.SolutionState.GetRelatedDocumentIds(documentId, includeDifferentLanguages);
1779ImmutableArray<DocumentInfo> documentInfos)
1801public SolutionCompilationState RemoveDocumentsFromMultipleProjects<T>(ImmutableArray<DocumentId> documentIds)
1823private SolutionCompilationState RemoveDocumentsFromSingleProject<T>(ProjectId projectId, ImmutableArray<DocumentId> documentIds)
1836var removedDocumentStatesForProject = removedDocumentStates.ToImmutable();
1852private static TranslationAction GetRemoveDocumentsTranslationAction<TDocumentState>(ProjectState oldProject, ImmutableArray<DocumentId> documentIds, ImmutableArray<TDocumentState> states)
1855ImmutableArray<DocumentState> documentStates => new TranslationAction.RemoveDocumentsAction(oldProject, oldProject.RemoveDocuments(documentIds), documentStates),
1856ImmutableArray<AdditionalDocumentState> additionalDocumentStates => new TranslationAction.RemoveAdditionalDocumentsAction(oldProject, oldProject.RemoveAdditionalDocuments(documentIds), additionalDocumentStates),
1857ImmutableArray<AnalyzerConfigDocumentState> _ => new TranslationAction.TouchAnalyzerConfigDocumentsAction(oldProject, oldProject.RemoveAnalyzerConfigDocuments(documentIds)),
1861private static TranslationAction GetAddDocumentsTranslationAction<TDocumentState>(ProjectState oldProject, ImmutableArray<TDocumentState> states)
1864ImmutableArray<DocumentState> documentStates => new TranslationAction.AddDocumentsAction(oldProject, oldProject.AddDocuments(documentStates), documentStates),
1865ImmutableArray<AdditionalDocumentState> additionalDocumentStates => new TranslationAction.AddAdditionalDocumentsAction(oldProject, oldProject.AddAdditionalDocuments(additionalDocumentStates), additionalDocumentStates),
1866ImmutableArray<AnalyzerConfigDocumentState> analyzerConfigDocumentStates => new TranslationAction.TouchAnalyzerConfigDocumentsAction(oldProject, oldProject.AddAnalyzerConfigDocuments(analyzerConfigDocumentStates)),
Workspace\Solution\SolutionState.cs (27)
73private readonly ConcurrentDictionary<string, ImmutableArray<DocumentId>> _lazyFilePathToRelatedDocumentIds = new(FilePathComparer);
85ImmutableArray<ProjectState> projectStates,
145public ImmutableArray<ProjectState> SortedProjectStates { get; }
192ImmutableArray<ProjectState>? projectStates = null,
343private static ProjectState? GetProjectState(ImmutableArray<ProjectState> sortedProjectStates, ProjectId projectId)
355private static int GetProjectStateIndex(ImmutableArray<ProjectState> sortedProjectStates, ProjectId projectId)
439var newProjectStates = newSortedProjectStatesBuilder.ToImmutableAndClear();
491var newProjectStates = SortedProjectStates.WhereAsArray(static (p, projectIdsSet) => !projectIdsSet.Contains(p.Id), projectIdsSet);
774var oldReferences = oldProject.ProjectReferences.ToImmutableArray();
775var newReferences = oldReferences.AddRange(projectReferences);
790var oldReferences = oldProject.ProjectReferences.ToImmutableArray();
793var newReferences = oldReferences.Remove(projectReference);
883var oldReferences = oldProject.MetadataReferences.ToImmutableArray();
884var newReferences = oldReferences.AddRange(metadataReferences);
896var oldReferences = oldProject.MetadataReferences.ToImmutableArray();
897var newReferences = oldReferences.Remove(metadataReference);
1196var newProjectStates = SortedProjectStates.SetItem(projectStateIndex, newProjectState);
1208public ImmutableArray<DocumentId> GetDocumentIdsWithFilePath(string? filePath)
1215static ImmutableArray<DocumentId> ComputeDocumentIdsWithFilePath(string filePath, SolutionState @this)
1227ImmutableArray<ProjectState> sortedNewProjectStates)
1247var oldReferences = AnalyzerReferences.ToImmutableArray();
1248var newReferences = oldReferences.AddRange(analyzerReferences);
1254var oldReferences = AnalyzerReferences.ToImmutableArray();
1255var newReferences = oldReferences.Remove(analyzerReference);
1296if (fileMap != null && fileMap.TryGetValue(filePath, out var relatedDocumentIds))
1332public ImmutableArray<DocumentId> GetRelatedDocumentIds(DocumentId documentId, bool includeDifferentLanguages)
1355var documentIds = GetDocumentIdsWithFilePath(filePath);
src\a1065d420d446521\NamingStylePreferencesEditorConfigSerializer.cs (9)
30ImmutableArray<SymbolSpecification> symbolSpecifications,
31ImmutableArray<NamingStyle> namingStyles,
32ImmutableArray<NamingRule> namingRules,
47ImmutableArray<SymbolSpecification> symbolSpecifications,
48ImmutableArray<NamingStyle> namingStyles,
49ImmutableArray<NamingRule> rules,
120ImmutableArray<SymbolSpecification> symbolSpecifications,
121ImmutableArray<NamingStyle> namingStyles)
170private static ImmutableDictionary<NamingRule, string> AssignNamesToNamingStyleRules(ImmutableArray<NamingRule> namingRules, ImmutableDictionary<Guid, string> serializedNameMap)
src\roslyn\src\Compilers\Core\Portable\InternalUtilities\InterlockedOperations.cs (14)
154public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, ImmutableArray<T> initializedValue)
157var oldValue = ImmutableInterlocked.InterlockedCompareExchange(ref target, initializedValue, default(ImmutableArray<T>));
170public static ImmutableArray<T> Initialize<T>(ref ImmutableArray<T> target, Func<ImmutableArray<T>> createArray)
183public static ImmutableArray<T> Initialize<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
193private static ImmutableArray<T> Initialize_Slow<T, TArg>(ref ImmutableArray<T> target, Func<TArg, ImmutableArray<T>> createArray, TArg arg)
src\roslyn\src\Dependencies\Collections\Extensions\IEnumerableExtensions.cs (26)
60public static ImmutableArray<T> ToImmutableArrayOrEmpty<T>(this IEnumerable<T>? items)
67if (items is ImmutableArray<T> array)
82if (items is ImmutableArray<T> array)
271/// <seealso cref="Microsoft.CodeAnalysis.ImmutableArrayExtensions.HasDuplicates{TItem, TValue}(ImmutableArray{TItem}, Func{TItem, TValue}, IEqualityComparer{TValue})"/>
376public static ImmutableArray<T> WhereAsArray<T>(this IEnumerable<T> values, Func<T, bool> predicate)
390public static ImmutableArray<T> WhereAsArray<T, TArg>(this IEnumerable<T> values, Func<T, TArg, bool> predicate, TArg arg)
407public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, TResult> selector)
417public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this IEnumerable<TItem>? source, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
431public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, int, TResult> selector)
446public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IEnumerable<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
449return ImmutableArray<TResult>.Empty;
461public static ImmutableArray<TResult> SelectAsArray<TSource, TResult>(this IReadOnlyCollection<TSource>? source, Func<TSource, TResult> selector)
473public static ImmutableArray<TResult> SelectAsArray<TSource, TResult, TArg>(this IReadOnlyCollection<TSource>? source, Func<TSource, TArg, TResult> selector, TArg arg)
485public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, IEnumerable<TResult>> selector)
496public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IEnumerable<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
507public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, IEnumerable<TResult>> selector)
520public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this IReadOnlyCollection<TItem>? source, Func<TItem, TArg, IEnumerable<TResult>> selector, TArg arg)
533public static ImmutableArray<TResult> SelectManyAsArray<TSource, TResult>(this IEnumerable<TSource>? source, Func<TSource, OneOrMany<TResult>> selector)
547public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, ValueTask<TResult>> selector)
561public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this IEnumerable<TItem> source, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
575public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
586public static async ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this IEnumerable<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<IEnumerable<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
764internal static Dictionary<K, ImmutableArray<T>> ToMultiDictionary<K, T>(this IEnumerable<T> data, Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
767var dictionary = new Dictionary<K, ImmutableArray<T>>(comparer);
834/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> are defined in System.Linq namespace
835/// to avoid accidental boxing of <see cref="ImmutableArray{T}"/>. The boxing would occur if the file calling these methods didn't have <c>using System.Linq</c>.
src\roslyn\src\Dependencies\Collections\Extensions\ImmutableArrayExtensions.cs (156)
24/// The collection of extension methods for the <see cref="ImmutableArray{T}"/> type
36public static ImmutableArray<T> AsImmutable<T>(this IEnumerable<T> items)
48public static ImmutableArray<T> AsImmutableOrEmpty<T>(this IEnumerable<T>? items)
52return ImmutableArray<T>.Empty;
65public static ImmutableArray<T> AsImmutableOrNull<T>(this IEnumerable<T>? items)
81public static ImmutableArray<T> AsImmutable<T>(this T[] items)
94public static ImmutableArray<T> AsImmutableOrNull<T>(this T[]? items)
110public static ImmutableArray<T> AsImmutableOrEmpty<T>(this T[]? items)
114return ImmutableArray<T>.Empty;
125public static ImmutableArray<byte> ToImmutable(this MemoryStream stream)
138public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> items, Func<TItem, TResult> map)
153public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, TArg, TResult> map, TArg arg)
168public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> items, Func<TItem, int, TArg, TResult> map, TArg arg)
198public static ImmutableArray<TResult> SelectAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, TResult> selector)
224public static ImmutableArray<TResult> SelectAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, TResult> selector, TArg arg)
247public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, IEnumerable<TResult>> selector)
267public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, ImmutableArray<TResult>> selector)
287public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, OneOrMany<TResult>> selector)
308public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, IEnumerable<TResult>> selector)
332public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, ImmutableArray<TResult>> selector)
356public static ImmutableArray<TResult> SelectManyAsArray<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, bool> predicate, Func<TItem, OneOrMany<TResult>> selector)
381public static ImmutableArray<TResult> SelectManyAsArray<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, bool> predicate, Func<TItem, TArg, OneOrMany<TResult>> selector, TArg arg)
399public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TResult>(this ImmutableArray<TItem> array, Func<TItem, CancellationToken, ValueTask<TResult>> selector, CancellationToken cancellationToken)
414public static async ValueTask<ImmutableArray<TResult>> SelectAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> array, Func<TItem, TArg, CancellationToken, ValueTask<TResult>> selector, TArg arg, CancellationToken cancellationToken)
426public static ValueTask<ImmutableArray<TResult>> SelectManyAsArrayAsync<TItem, TArg, TResult>(this ImmutableArray<TItem> source, Func<TItem, TArg, CancellationToken, ValueTask<ImmutableArray<TResult>>> selector, TArg arg, CancellationToken cancellationToken)
429return new ValueTask<ImmutableArray<TResult>>([]);
436async ValueTask<ImmutableArray<TResult>> CreateTaskAsync()
453public static ImmutableArray<TResult> ZipAsArray<T1, T2, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, Func<T1, T2, TResult> map)
473public static ImmutableArray<TResult> ZipAsArray<T1, T2, TArg, TResult>(this ImmutableArray<T1> self, ImmutableArray<T2> other, TArg arg, Func<T1, T2, int, TArg, TResult> map)
493public static ImmutableArray<T> WhereAsArray<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
501public static ImmutableArray<T> WhereAsArray<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
504private static ImmutableArray<T> WhereAsArrayImpl<T, TArg>(ImmutableArray<T> array, Func<T, bool>? predicateWithoutArg, Func<T, TArg, bool>? predicateWithArg, TArg arg)
569return ImmutableArray<T>.Empty;
573public static async Task<bool> AnyAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
584public static async Task<bool> AnyAsync<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, Task<bool>> predicateAsync, TArg arg)
595public static async ValueTask<T?> FirstOrDefaultAsync<T>(this ImmutableArray<T> array, Func<T, Task<bool>> predicateAsync)
610public static ImmutableArray<TBase> Cast<TDerived, TBase>(this ImmutableArray<TDerived> items)
613return ImmutableArray<TBase>.CastUp(items);
624public static bool SetEquals<T>(this ImmutableArray<T> array1, ImmutableArray<T> array2, IEqualityComparer<T> comparer)
665public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T> array)
667return array.IsDefault ? ImmutableArray<T>.Empty : array;
673public static ImmutableArray<T> NullToEmpty<T>(this ImmutableArray<T>? array)
676null or { IsDefault: true } => ImmutableArray<T>.Empty,
682internal static ImmutableArray<T> ConditionallyDeOrder<T>(this ImmutableArray<T> array)
699internal static ImmutableArray<TValue> Flatten<TKey, TValue>(
700this Dictionary<TKey, ImmutableArray<TValue>> dictionary,
723internal static ImmutableArray<T> AddRange<T>(this ImmutableArray<T> self, in TemporaryArray<T> items)
751internal static bool HasDuplicates<T>(this ImmutableArray<T> array)
754internal static bool HasDuplicates<T>(this ImmutableArray<T> array, IEqualityComparer<T> comparer)
757public static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector)
769internal static bool HasDuplicates<TItem, TValue>(this ImmutableArray<TItem> array, Func<TItem, TValue> selector, IEqualityComparer<TValue> comparer)
826(Dictionary<TKey, object> dictionary, Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> result)
837static ImmutableArray<TNamespaceOrTypeSymbol> createMembers(object value)
848return ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(builder.ToDowncastedImmutableAndFree<TNamedTypeSymbol>());
855: ImmutableArray<TNamespaceOrTypeSymbol>.CastUp(ImmutableArray.Create((TNamedTypeSymbol)symbol));
860internal static Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>> GetTypesFromMemberMap<TKey, TNamespaceOrTypeSymbol, TNamedTypeSymbol>
861(Dictionary<TKey, ImmutableArray<TNamespaceOrTypeSymbol>> map, IEqualityComparer<TKey> comparer)
872var dictionary = new Dictionary<TKey, ImmutableArray<TNamedTypeSymbol>>(capacity, comparer);
876var namedTypes = getOrCreateNamedTypes(entry.Value);
883static ImmutableArray<TNamedTypeSymbol> getOrCreateNamedTypes(ImmutableArray<TNamespaceOrTypeSymbol> members)
890var membersAsNamedTypes = members.As<TNamedTypeSymbol>();
903return ImmutableArray<TNamedTypeSymbol>.Empty;
917internal static int IndexOf<T>(this ImmutableArray<T> array, T item, IEqualityComparer<T> comparer)
920internal static bool IsSorted<T>(this ImmutableArray<T> array, Comparison<T> comparison)
923internal static bool IsSorted<T>(this ImmutableArray<T> array, IComparer<T>? comparer = null)
938public static bool IsSubsetOf<TElement>(this ImmutableArray<TElement> array, ImmutableArray<TElement> other)
983/// Extension methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Linq namespace
984/// are defined in System.Linq namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
990/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.FirstOrDefault{T}(ImmutableArray{T}, Func{T, bool})"/>
992public static TValue? FirstOrDefault<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1004/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Single{T}(ImmutableArray{T}, Func{T, bool})"/>
1006public static TValue Single<TValue, TArg>(this ImmutableArray<TValue> array, Func<TValue, TArg, bool> predicate, TArg arg)
1033/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.SequenceEqual{TDerived, TBase}(ImmutableArray{TBase}, ImmutableArray{TDerived}, Func{TBase, TBase, bool})"/>.
1035public static bool SequenceEqual<TElement, TArg>(this ImmutableArray<TElement> array1, ImmutableArray<TElement> array2, TArg arg, Func<TElement, TElement, TArg, bool> predicate)
1066/// Specialization of <see cref="System.Linq.Enumerable.Count{TSource}(IEnumerable{TSource}, Func{TSource, bool})"/> for <see cref="ImmutableArray{T}"/>.
1068public static int Count<T>(this ImmutableArray<T> items, Func<T, bool> predicate)
1084/// Specialization of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1086public static int Sum<T>(this ImmutableArray<T> items, Func<T, int> selector)
1096/// Variation of <see cref="System.Linq.Enumerable.Sum(IEnumerable{int})"/> for <see cref="ImmutableArray{T}"/>.
1098public static int Sum<T>(this ImmutableArray<T> items, Func<T, int, int> selector)
1108/// Specialization of <see cref="System.Linq.Enumerable.Concat{TSource}(IEnumerable{TSource}, IEnumerable{TSource})"/> for <see cref="ImmutableArray{T}"/>.
1110public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second)
1116public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, T second)
1122public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third)
1136public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth)
1152public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth)
1168public static ImmutableArray<T> Concat<T>(this ImmutableArray<T> first, ImmutableArray<T> second, ImmutableArray<T> third, ImmutableArray<T> fourth, ImmutableArray<T> fifth, ImmutableArray<T> sixth)
1188public static ImmutableArray<T> Distinct<T>(this ImmutableArray<T> array, IEqualityComparer<T>? comparer = null)
1207var result = (builder.Count == array.Length) ? array : builder.ToImmutable();
1213/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.Any{T}(ImmutableArray{T}, Func{T, bool})"/>.
1215public static bool Any<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1227/// Variant of <see cref="System.Linq.ImmutableArrayExtensions.All{T}(ImmutableArray{T}, Func{T, bool})"/>.
1229public static bool All<T, TArg>(this ImmutableArray<T> array, Func<T, TArg, bool> predicate, TArg arg)
1248/// Methods that are available on both <see cref="IEnumerable{T}"/> and <see cref="ImmutableArray{T}"/> in System.Collections.Immutable namespace
1249/// are defined in System.Collections.Immutable namespace to avoid accidental boxing of <see cref="ImmutableArray{T}"/>.
1255/// Variant of <see cref="System.Collections.Immutable.ImmutableArray{T}.Contains(T, IEqualityComparer{T})"/>
1257public static bool Contains<T>(this ImmutableArray<T> array, Func<T, bool> predicate)
1261/// Variant of <see cref="System.Collections.Immutable.ImmutableArray.BinarySearch{T}(ImmutableArray{T}, T, IComparer{T}?)"/>
1264public static int BinarySearch<TElement, TValue>(this ImmutableArray<TElement> array, TValue value, Func<TElement, TValue, int> comparer)
src\roslyn\src\Dependencies\PooledObjects\ArrayBuilder.cs (27)
61private readonly ImmutableArray<T>.Builder _builder;
83public ImmutableArray<T> ToImmutable()
91public ImmutableArray<T> ToImmutableAndClear()
93ImmutableArray<T> result;
96result = ImmutableArray<T>.Empty;
393public ImmutableArray<T> ToImmutableOrNull()
406public ImmutableArray<U> ToDowncastedImmutable<U>()
411return ImmutableArray<U>.Empty;
423public ImmutableArray<U> ToDowncastedImmutableAndFree<U>() where U : T
425var result = ToDowncastedImmutable<U>();
433public ImmutableArray<T> ToImmutableAndFree()
437ImmutableArray<T> result;
440result = ImmutableArray<T>.Empty;
613internal Dictionary<K, ImmutableArray<T>> ToDictionary<K>(Func<T, K> keySelector, IEqualityComparer<K>? comparer = null)
618var dictionary1 = new Dictionary<K, ImmutableArray<T>>(1, comparer);
626return new Dictionary<K, ImmutableArray<T>>(comparer);
645var dictionary = new Dictionary<K, ImmutableArray<T>>(accumulator.Count, comparer);
684public void AddRange(ImmutableArray<T> items)
689public void AddRange<U>(ImmutableArray<U> items, Func<U, T> selector)
697public void AddRange(ImmutableArray<T> items, int length)
702public void AddRange(ImmutableArray<T> items, int start, int length)
712public void AddRange<S>(ImmutableArray<S> items) where S : class, T
714AddRange(ImmutableArray<T>.CastUp(items));
806public ImmutableArray<S> SelectDistinct<S>(Func<T, S> selector)
878public ImmutableArray<TResult> SelectAsArray<TResult>(Func<T, TResult> map)
914public ImmutableArray<TResult> SelectAsArray<TArg, TResult>(Func<T, TArg, TResult> map, TArg arg)
950public ImmutableArray<TResult> SelectAsArrayWithIndex<TArg, TResult>(Func<T, int, TArg, TResult> map, TArg arg)
src\roslyn\src\Dependencies\Threading\ProducerConsumer.cs (7)
25Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
49Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
127Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
141Func<ImmutableArray<TItem>, TArgs, CancellationToken, Task> consumeItems,
191public static Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
204public static async Task<ImmutableArray<TItem>> RunParallelAsync<TSource, TArgs>(
284/// but returns value as an <see cref="IAsyncEnumerable{TItem}"/>. Versus an <see cref="ImmutableArray{TItem}"/>.
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ObjectWriterExtensions.cs (3)
13public static void WriteArray<T>(this ObjectWriter writer, ImmutableArray<T> values, Action<ObjectWriter, T> write)
23public static ImmutableArray<T> ReadArray<T>(this ObjectReader reader, Func<ObjectReader, T> read)
26public static ImmutableArray<T> ReadArray<T, TArg>(this ObjectReader reader, Func<ObjectReader, TArg, T> read, TArg arg)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (10)
112SemanticModel model, TForEachStatementSyntax forEach, out IMethodSymbol getEnumeratorMethod, out ITypeSymbol elementType, out ImmutableArray<ILocalSymbol> localVariables);
120protected abstract ImmutableArray<TArgumentSyntax> GetArguments(TExpressionSyntax expression);
778GetForEachSymbols(this.OriginalSemanticModel, forEachStatement, out var originalGetEnumerator, out var originalElementType, out var originalLocalVariables);
779GetForEachSymbols(this.SpeculativeSemanticModel, newForEachStatement, out var newGetEnumerator, out var newElementType, out var newLocalVariables);
1055var specifiedArguments = GetArguments(originalInvocation);
1058var symbolParameters = originalSymbol.GetParameters();
1059var newSymbolParameters = newSymbol.GetParameters();
1068ImmutableArray<TArgumentSyntax> specifiedArguments,
1069ImmutableArray<IParameterSymbol> signature1Parameters,
1070ImmutableArray<IParameterSymbol> signature2Parameters)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\IDictionaryExtensions.cs (7)
119public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
123if (!dictionary.TryGetValue(key, out var existingArray))
131public static void MultiAdd<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value, ImmutableArray<TValue> defaultArray)
135if (!dictionary.TryGetValue(key, out var existingArray))
212public static void MultiRemove<TKey, TValue>(this IDictionary<TKey, ImmutableArray<TValue>> dictionary, TKey key, TValue value)
215if (dictionary.TryGetValue(key, out var collection))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\PooledBuilderExtensions.cs (6)
29public static Dictionary<K, ImmutableArray<V>> ToMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
32var dictionary = new Dictionary<K, ImmutableArray<V>>(builders.Count);
43public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V>(this PooledDictionary<K, ArrayBuilder<V>> builders)
47public static ImmutableDictionary<K, ImmutableArray<V>> ToImmutableMultiDictionaryAndFree<K, V, TArg>(this PooledDictionary<K, ArrayBuilder<V>> builders, Func<K, TArg, bool>? where, TArg whereArg)
50var result = ImmutableDictionary.CreateBuilder<K, ImmutableArray<V>>();
77public static ImmutableArray<T> ToFlattenedImmutableArrayAndFree<T>(this ArrayBuilder<ArrayBuilder<T>> builders)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\INamedTypeSymbolExtensions.cs (25)
44public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
50public static ImmutableArray<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
190public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
208static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
260public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
278public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
281Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
297public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
311private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
338private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
343Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
367var typesToImplement = GetTypesToImplement(classOrStructType, interfacesOrAbstractClasses, allowReimplementation, cancellationToken);
372private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
383private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
389private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
404var alreadyImplementedInterfaces = baseType == null || allowReimplementation
413private static ImmutableArray<ISymbol> GetUnimplementedMembers(
418Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
528private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
541public static ImmutableArray<ISymbol> GetOverridableMembers(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (72)
29ImmutableArray<AttributeData> attributes, Accessibility accessibility,
31ImmutableArray<IEventSymbol> explicitInterfaceImplementations,
44ImmutableArray<AttributeData> attributes,
49ImmutableArray<IPropertySymbol> explicitInterfaceImplementations,
51ImmutableArray<IParameterSymbol> parameters,
78ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
79ITypeSymbol type, RefKind refKind, ImmutableArray<IPropertySymbol> explicitInterfaceImplementations, string name,
80ImmutableArray<IParameterSymbol> parameters, IMethodSymbol? getMethod, IMethodSymbol? setMethod,
103ImmutableArray<AttributeData> attributes,
120ImmutableArray<AttributeData> attributes,
124ImmutableArray<IParameterSymbol> parameters,
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
139ImmutableArray<AttributeData> attributes, string typeName,
140ImmutableArray<SyntaxNode> statements = default)
149ImmutableArray<AttributeData> attributes,
154ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
156ImmutableArray<ITypeParameterSymbol> typeParameters,
157ImmutableArray<IParameterSymbol> parameters,
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
160ImmutableArray<AttributeData> returnTypeAttributes = default,
173ImmutableArray<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers,
176ImmutableArray<IMethodSymbol> explicitInterfaceImplementations,
177string? name, ImmutableArray<ITypeParameterSymbol> typeParameters,
178ImmutableArray<IParameterSymbol> parameters,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
181ImmutableArray<AttributeData> returnTypeAttributes = default,
192ImmutableArray<AttributeData> attributes,
197ImmutableArray<IParameterSymbol> parameters,
198ImmutableArray<SyntaxNode> statements = default,
199ImmutableArray<AttributeData> returnTypeAttributes = default,
224ImmutableArray<SyntaxNode> statements = default,
225ImmutableArray<AttributeData> toTypeAttributes = default,
245ImmutableArray<AttributeData> attributes,
252ImmutableArray<SyntaxNode> statements = default,
253ImmutableArray<AttributeData> toTypeAttributes = default,
277ImmutableArray<AttributeData> attributes, RefKind refKind, bool isParams, ITypeSymbol type, string name, bool isOptional = false, bool hasDefaultValue = false, object? defaultValue = null)
287ImmutableArray<AttributeData>? attributes = null,
329ImmutableArray<AttributeData> attributes,
331ImmutableArray<ITypeSymbol> constraintTypes,
358ImmutableArray<AttributeData> attributes = default,
360ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
361ImmutableArray<SyntaxNode> statements = default)
383ImmutableArray<AttributeData> attributes,
385ImmutableArray<SyntaxNode> statements)
405ImmutableArray<TypedConstant> constructorArguments = default,
406ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments = default)
415ImmutableArray<AttributeData> attributes,
419ImmutableArray<ITypeParameterSymbol> typeParameters = default,
421ImmutableArray<INamedTypeSymbol> interfaces = default,
423ImmutableArray<ISymbol> members = default,
434ImmutableArray<AttributeData> attributes,
438ImmutableArray<ITypeParameterSymbol> typeParameters = default,
440ImmutableArray<INamedTypeSymbol> interfaces = default,
442ImmutableArray<ISymbol> members = default,
460ImmutableArray<AttributeData> attributes,
466ImmutableArray<ITypeParameterSymbol> typeParameters = default,
467ImmutableArray<IParameterSymbol> parameters = default,
512ImmutableArray<AttributeData> attributes = default,
515ImmutableArray<IMethodSymbol> explicitInterfaceImplementations = default,
517ImmutableArray<IParameterSymbol>? parameters = null,
518ImmutableArray<SyntaxNode> statements = default,
521Optional<ImmutableArray<AttributeData>> returnTypeAttributes = default)
542ImmutableArray<AttributeData> attributes = default,
543ImmutableArray<IParameterSymbol>? parameters = null,
546ImmutableArray<IPropertySymbol> explicitInterfaceImplementations = default,
570ImmutableArray<AttributeData> attributes = default,
573ImmutableArray<IEventSymbol> explicitInterfaceImplementations = default,
591ImmutableArray<AttributeData> attributes = default,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\ITypeInferenceServiceExtensions.cs (9)
15public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
18public static ImmutableArray<ITypeSymbol> InferTypes(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
21public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, int position, CancellationToken cancellationToken)
24public static ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(this ITypeInferenceService service, SemanticModel semanticModel, SyntaxNode expression, CancellationToken cancellationToken)
33var types = typeInferenceService.InferTypes(semanticModel, expression, cancellationToken);
43var types = typeInferenceService.InferTypes(semanticModel, position, cancellationToken);
47private static INamedTypeSymbol? GetFirstDelegateType(SemanticModel semanticModel, ImmutableArray<ITypeSymbol> types)
73var types = typeInferenceService.InferTypes(semanticModel, expression, name, cancellationToken);
103var types = typeInferenceService.InferTypes(semanticModel, position, name, cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (4)
24public async Task<Document> FormatAsync(Document document, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (9)
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
57var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
58var containers = GetAllContainers(root, contextLocation);
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
137var globalImports = GetGlobalImports(semanticModel, contextLocation, generator, cancellationToken);
138var containers = GetAllContainers(root, contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\TypeInferenceService\ITypeInferenceService.cs (4)
27ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);
28ImmutableArray<ITypeSymbol> InferTypes(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
30ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, int position, string? nameOpt, CancellationToken cancellationToken);
31ImmutableArray<TypeInferenceInfo> GetTypeInferenceInfo(SemanticModel semanticModel, SyntaxNode expression, string? nameOpt, CancellationToken cancellationToken);