本文整理汇总了C#中ImmutableArray.All方法的典型用法代码示例。如果您正苦于以下问题:C# ImmutableArray.All方法的具体用法?C# ImmutableArray.All怎么用?C# ImmutableArray.All使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ImmutableArray
的用法示例。
在下文中一共展示了ImmutableArray.All方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FileSystemCompletionHelper
public FileSystemCompletionHelper(
CompletionListProvider completionProvider,
TextSpan textChangeSpan,
ICurrentWorkingDirectoryDiscoveryService fileSystemDiscoveryService,
Glyph folderGlyph,
Glyph fileGlyph,
ImmutableArray<string> searchPaths,
IEnumerable<string> allowableExtensions,
Func<string, bool> exclude = null,
CompletionItemRules itemRules = null)
{
Debug.Assert(searchPaths.All(path => PathUtilities.IsAbsolute(path)));
_completionProvider = completionProvider;
_textChangeSpan = textChangeSpan;
_searchPaths = searchPaths;
_allowableExtensions = allowableExtensions.Select(e => e.ToLowerInvariant()).ToSet();
_fileSystemDiscoveryService = fileSystemDiscoveryService;
_folderGlyph = folderGlyph;
_fileGlyph = fileGlyph;
_exclude = exclude;
_itemRules = itemRules;
_lazyGetDrives = new Lazy<string[]>(() =>
IOUtilities.PerformIO(Directory.GetLogicalDrives, SpecializedCollections.EmptyArray<string>()));
}
示例2: WithTypeArgumentsBinder
internal WithTypeArgumentsBinder(ImmutableArray<TypeSymbol> typeArguments, Binder next)
: base(next)
{
Debug.Assert(!typeArguments.IsDefaultOrEmpty);
Debug.Assert(typeArguments.All(ta => ta.Kind == SymbolKind.TypeParameter));
_typeArguments = typeArguments;
}
示例3: DeclarationInfo
internal DeclarationInfo(SyntaxNode declaredNode, ImmutableArray<SyntaxNode> executableCodeBlocks, ISymbol declaredSymbol)
{
Debug.Assert(declaredNode != null);
Debug.Assert(!executableCodeBlocks.IsDefault);
Debug.Assert(executableCodeBlocks.All(n => n.Ancestors().Contains(declaredNode)));
this.declaredNode = declaredNode;
this.executableCodeBlocks = executableCodeBlocks;
this.declaredSymbol = declaredSymbol;
}
示例4: ValidateSearchPaths
internal static void ValidateSearchPaths(ImmutableArray<string> paths, string argName)
{
if (paths.IsDefault)
{
throw ExceptionUtilities.Unreachable;
////throw new ArgumentNullException(argName);
}
if (!paths.All(PathUtilities.IsAbsolute))
{
throw ExceptionUtilities.Unreachable;
////throw new ArgumentException(CodeAnalysisResources.AbsolutePathExpected, argName);
}
}
示例5: CompositeText
public CompositeText(ImmutableArray<SourceText> texts)
{
Debug.Assert(!texts.IsDefaultOrEmpty);
Debug.Assert(texts.All(t => texts.First().Encoding == t.Encoding));
this.texts = texts;
int len = 0;
foreach (var text in texts)
{
len += text.Length;
}
this.length = len;
}
示例6: CompositeText
public CompositeText(ImmutableArray<SourceText> texts)
: base(checksumAlgorithm: texts[0].ChecksumAlgorithm)
{
Debug.Assert(!texts.IsDefaultOrEmpty);
Debug.Assert(texts.All(t => texts.First().Encoding == t.Encoding && texts.First().ChecksumAlgorithm == t.ChecksumAlgorithm));
_texts = texts;
int len = 0;
foreach (var text in texts)
{
len += text.Length;
}
_length = len;
}
示例7: State
internal State(
ImmutableArray<SyntaxTree> syntaxTrees,
ImmutableDictionary<SyntaxTree, int> syntaxTreeOrdinalMap,
ImmutableDictionary<SyntaxTree, ImmutableArray<LoadDirective>> loadDirectiveMap,
ImmutableDictionary<string, SyntaxTree> loadedSyntaxTreeMap,
ImmutableDictionary<SyntaxTree, Lazy<RootSingleNamespaceDeclaration>> rootNamespaces,
DeclarationTable declarationTable)
{
Debug.Assert(syntaxTrees.All(tree => syntaxTrees[syntaxTreeOrdinalMap[tree]] == tree));
Debug.Assert(syntaxTrees.SetEquals(rootNamespaces.Keys.AsImmutable(), EqualityComparer<SyntaxTree>.Default));
this.SyntaxTrees = syntaxTrees;
this.OrdinalMap = syntaxTreeOrdinalMap;
this.LoadDirectiveMap = loadDirectiveMap;
this.LoadedSyntaxTreeMap = loadedSyntaxTreeMap;
this.RootNamespaces = rootNamespaces;
this.DeclarationTable = declarationTable;
}
示例8: CopyParameterCustomModifiers
internal static ImmutableArray<ParameterSymbol> CopyParameterCustomModifiers(ImmutableArray<ParameterSymbol> sourceParameters, ImmutableArray<ParameterSymbol> destinationParameters, bool alsoCopyParamsModifier)
{
Debug.Assert(!destinationParameters.IsDefault);
Debug.Assert(destinationParameters.All(p => p is SourceParameterSymbolBase));
Debug.Assert(sourceParameters.Length == destinationParameters.Length);
// Nearly all of the time, there will be no custom modifiers to copy, so don't
// allocate the builder until we know that we need it.
ArrayBuilder<ParameterSymbol> builder = null;
int numParams = destinationParameters.Length;
for (int i = 0; i < numParams; i++)
{
SourceParameterSymbolBase destinationParameter = (SourceParameterSymbolBase)destinationParameters[i];
ParameterSymbol sourceParameter = sourceParameters[i];
if (sourceParameter.CustomModifiers.Any() || sourceParameter.Type.HasCustomModifiers() ||
destinationParameter.CustomModifiers.Any() || destinationParameter.Type.HasCustomModifiers() || // Could happen if the associated property has custom modifiers.
(alsoCopyParamsModifier && (sourceParameter.IsParams != destinationParameter.IsParams)))
{
if (builder == null)
{
builder = ArrayBuilder<ParameterSymbol>.GetInstance();
builder.AddRange(destinationParameters, i); //add up to, but not including, the current parameter
}
bool newParams = alsoCopyParamsModifier ? sourceParameter.IsParams : destinationParameter.IsParams;
builder.Add(destinationParameter.WithCustomModifiersAndParams(sourceParameter.Type, sourceParameter.CustomModifiers,
destinationParameter.RefKind != RefKind.None ? sourceParameter.CountOfCustomModifiersPrecedingByRef : (ushort)0,
newParams));
}
else if (builder != null)
{
builder.Add(destinationParameter);
}
}
return builder == null ? destinationParameters : builder.ToImmutableAndFree();
}
示例9: CSharpCompilation
private CSharpCompilation(
string assemblyName,
CSharpCompilationOptions options,
ImmutableArray<MetadataReference> references,
ImmutableArray<SyntaxTree> syntaxTrees,
ImmutableDictionary<SyntaxTree, int> syntaxTreeOrdinalMap,
ImmutableDictionary<SyntaxTree, Lazy<RootSingleNamespaceDeclaration>> rootNamespaces,
DeclarationTable declarationTable,
CSharpCompilation previousSubmission,
Type submissionReturnType,
Type hostObjectType,
bool isSubmission,
ReferenceManager referenceManager,
bool reuseReferenceManager,
AsyncQueue<CompilationEvent> eventQueue = null)
: base(assemblyName, references, submissionReturnType, hostObjectType, isSubmission, syntaxTreeOrdinalMap, eventQueue)
{
using (Logger.LogBlock(FunctionId.CSharp_Compilation_Create, message: assemblyName))
{
this.wellKnownMemberSignatureComparer = new WellKnownMembersSignatureComparer(this);
this.options = options;
this.syntaxTrees = syntaxTrees;
this.rootNamespaces = rootNamespaces;
this.declarationTable = declarationTable;
Debug.Assert(syntaxTrees.All(tree => syntaxTrees[syntaxTreeOrdinalMap[tree]] == tree));
Debug.Assert(syntaxTrees.SetEquals(rootNamespaces.Keys.AsImmutable(), EqualityComparer<SyntaxTree>.Default));
this.builtInOperators = new BuiltInOperators(this);
this.scriptClass = new Lazy<ImplicitNamedTypeSymbol>(BindScriptClass);
this.globalImports = new Lazy<Imports>(BindGlobalUsings);
this.globalNamespaceAlias = new Lazy<AliasSymbol>(CreateGlobalNamespaceAlias);
this.anonymousTypeManager = new AnonymousTypeManager(this);
if (isSubmission)
{
Debug.Assert(previousSubmission == null || previousSubmission.HostObjectType == hostObjectType);
this.previousSubmission = previousSubmission;
}
else
{
Debug.Assert(previousSubmission == null && submissionReturnType == null && hostObjectType == null);
}
if (reuseReferenceManager)
{
referenceManager.AssertCanReuseForCompilation(this);
this.referenceManager = referenceManager;
}
else
{
this.referenceManager = new ReferenceManager(
MakeSourceAssemblySimpleName(),
options.AssemblyIdentityComparer,
(referenceManager != null) ? referenceManager.ObservedMetadata : null);
}
Debug.Assert((object)this.lazyAssemblySymbol == null);
if (EventQueue != null) EventQueue.Enqueue(new CompilationStartedEvent(this));
}
}
示例10: IsMultidimensionalInitializer
/// <summary>
/// Check if it is a regular collection of expressions or there are nested initializers.
/// </summary>
private static bool IsMultidimensionalInitializer(ImmutableArray<BoundExpression> inits)
{
Debug.Assert(inits.All((init) => init.Kind != BoundKind.ArrayInitialization) ||
inits.All((init) => init.Kind == BoundKind.ArrayInitialization),
"all or none should be nested");
return inits.Length != 0 && inits[0].Kind == BoundKind.ArrayInitialization;
}
示例11: ProcessIncludes
public static void ProcessIncludes(
string unprocessed,
Symbol memberSymbol,
ImmutableArray<CSharpSyntaxNode> sourceIncludeElementNodes,
CSharpCompilation compilation,
ref HashSet<ParameterSymbol> documentedParameters,
ref HashSet<TypeParameterSymbol> documentedTypeParameters,
ref DocumentationCommentIncludeCache includedFileCache,
TextWriter writer,
DiagnosticBag diagnostics,
CancellationToken cancellationToken)
{
// If there are no include elements, then there's nothing to expand.
// NOTE: By skipping parsing and re-writing, we avoid slightly
// modifying the whitespace, as we would if we let the XmlWriter
// do the writing. This saves us a lot of work in the common case
// but slightly reduces consistency when include elements are
// present.
if (sourceIncludeElementNodes.IsEmpty)
{
if (writer != null)
{
writer.Write(unprocessed);
}
return;
}
XDocument doc;
try
{
// NOTE: XDocument.Parse seems to do a better job of preserving whitespace
// than XElement.Parse.
doc = XDocument.Parse(unprocessed, LoadOptions.PreserveWhitespace);
}
catch (XmlException e)
{
// If one of the trees wasn't diagnosing doc comments, then an error might have slipped through.
// Otherwise, we shouldn't see exceptions from XDocument.Parse.
Debug.Assert(sourceIncludeElementNodes.All(syntax => syntax.SyntaxTree.Options.DocumentationMode < DocumentationMode.Diagnose),
"Why didn't our parser catch this exception? " + e);
if (writer != null)
{
writer.Write(unprocessed);
}
return;
}
cancellationToken.ThrowIfCancellationRequested();
IncludeElementExpander expander = new IncludeElementExpander(
memberSymbol,
sourceIncludeElementNodes,
compilation,
documentedParameters,
documentedTypeParameters,
includedFileCache,
diagnostics,
cancellationToken);
foreach (XNode node in expander.Rewrite(doc, currentXmlFilePath: null, originatingSyntax: null))
{
cancellationToken.ThrowIfCancellationRequested();
if (writer != null)
{
writer.Write(node);
}
}
Debug.Assert(expander.nextSourceIncludeElementIndex == expander.sourceIncludeElementNodes.Length);
documentedParameters = expander.documentedParameters;
documentedTypeParameters = expander.documentedTypeParameters;
includedFileCache = expander.includedFileCache;
}
示例12: RewriteStringConcatenationManyExprs
private BoundExpression RewriteStringConcatenationManyExprs(CSharpSyntaxNode syntax, ImmutableArray<BoundExpression> loweredArgs)
{
Debug.Assert(loweredArgs.Length > 3);
Debug.Assert(loweredArgs.All(a => a.Type.SpecialType == SpecialType.System_Object || a.Type.SpecialType == SpecialType.System_String));
bool isObject = false;
TypeSymbol elementType = null;
foreach (var arg in loweredArgs)
{
elementType = arg.Type;
if (elementType.SpecialType != SpecialType.System_String)
{
isObject = true;
break;
}
}
// Count == 4 is handled differently because there is a Concat method with 4 arguments
// for strings, but there is no such method for objects.
if (!isObject && loweredArgs.Length == 4)
{
SpecialMember member = SpecialMember.System_String__ConcatStringStringStringString;
var method = GetSpecialTypeMethod(syntax, member);
Debug.Assert((object)method != null);
return (BoundExpression)BoundCall.Synthesized(syntax, null, method, loweredArgs);
}
else
{
SpecialMember member = isObject ?
SpecialMember.System_String__ConcatObjectArray :
SpecialMember.System_String__ConcatStringArray;
var method = GetSpecialTypeMethod(syntax, member);
Debug.Assert((object)method != null);
var array = _factory.Array(elementType, loweredArgs);
return (BoundExpression)BoundCall.Synthesized(syntax, null, method, array);
}
}
示例13: EEMethodSymbol
internal EEMethodSymbol(
EENamedTypeSymbol container,
string name,
Location location,
MethodSymbol sourceMethod,
ImmutableArray<LocalSymbol> sourceLocals,
ImmutableArray<LocalSymbol> sourceLocalsForBinding,
ImmutableDictionary<string, DisplayClassVariable> sourceDisplayClassVariables,
GenerateMethodBody generateMethodBody)
{
Debug.Assert(sourceMethod.IsDefinition);
Debug.Assert(sourceMethod.ContainingSymbol == container.SubstitutedSourceType.OriginalDefinition);
Debug.Assert(sourceLocals.All(l => l.ContainingSymbol == sourceMethod));
_container = container;
_name = name;
_locations = ImmutableArray.Create(location);
// What we want is to map all original type parameters to the corresponding new type parameters
// (since the old ones have the wrong owners). Unfortunately, we have a circular dependency:
// 1) Each new type parameter requires the entire map in order to be able to construct its constraint list.
// 2) The map cannot be constructed until all new type parameters exist.
// Our solution is to pass each new type parameter a lazy reference to the type map. We then
// initialize the map as soon as the new type parameters are available - and before they are
// handed out - so that there is never a period where they can require the type map and find
// it uninitialized.
var sourceMethodTypeParameters = sourceMethod.TypeParameters;
var allSourceTypeParameters = container.SourceTypeParameters.Concat(sourceMethodTypeParameters);
var getTypeMap = new Func<TypeMap>(() => this.TypeMap);
_typeParameters = sourceMethodTypeParameters.SelectAsArray(
(tp, i, arg) => (TypeParameterSymbol)new EETypeParameterSymbol(this, tp, i, getTypeMap),
(object)null);
_allTypeParameters = container.TypeParameters.Concat(_typeParameters);
this.TypeMap = new TypeMap(allSourceTypeParameters, _allTypeParameters);
EENamedTypeSymbol.VerifyTypeParameters(this, _typeParameters);
var substitutedSourceType = container.SubstitutedSourceType;
this.SubstitutedSourceMethod = sourceMethod.AsMember(substitutedSourceType);
if (sourceMethod.Arity > 0)
{
this.SubstitutedSourceMethod = this.SubstitutedSourceMethod.Construct(_typeParameters.As<TypeSymbol>());
}
TypeParameterChecker.Check(this.SubstitutedSourceMethod, _allTypeParameters);
// Create a map from original parameter to target parameter.
var parameterBuilder = ArrayBuilder<ParameterSymbol>.GetInstance();
var substitutedSourceThisParameter = this.SubstitutedSourceMethod.ThisParameter;
var substitutedSourceHasThisParameter = (object)substitutedSourceThisParameter != null;
if (substitutedSourceHasThisParameter)
{
_thisParameter = MakeParameterSymbol(0, GeneratedNames.ThisProxyFieldName(), substitutedSourceThisParameter);
Debug.Assert(_thisParameter.Type == this.SubstitutedSourceMethod.ContainingType);
parameterBuilder.Add(_thisParameter);
}
var ordinalOffset = (substitutedSourceHasThisParameter ? 1 : 0);
foreach (var substitutedSourceParameter in this.SubstitutedSourceMethod.Parameters)
{
var ordinal = substitutedSourceParameter.Ordinal + ordinalOffset;
Debug.Assert(ordinal == parameterBuilder.Count);
var parameter = MakeParameterSymbol(ordinal, substitutedSourceParameter.Name, substitutedSourceParameter);
parameterBuilder.Add(parameter);
}
_parameters = parameterBuilder.ToImmutableAndFree();
var localsBuilder = ArrayBuilder<LocalSymbol>.GetInstance();
var localsMap = PooledDictionary<LocalSymbol, LocalSymbol>.GetInstance();
foreach (var sourceLocal in sourceLocals)
{
var local = sourceLocal.ToOtherMethod(this, this.TypeMap);
localsMap.Add(sourceLocal, local);
localsBuilder.Add(local);
}
this.Locals = localsBuilder.ToImmutableAndFree();
localsBuilder = ArrayBuilder<LocalSymbol>.GetInstance();
foreach (var sourceLocal in sourceLocalsForBinding)
{
LocalSymbol local;
if (!localsMap.TryGetValue(sourceLocal, out local))
{
local = sourceLocal.ToOtherMethod(this, this.TypeMap);
localsMap.Add(sourceLocal, local);
}
localsBuilder.Add(local);
}
this.LocalsForBinding = localsBuilder.ToImmutableAndFree();
// Create a map from variable name to display class field.
var displayClassVariables = PooledDictionary<string, DisplayClassVariable>.GetInstance();
foreach (var pair in sourceDisplayClassVariables)
{
var variable = pair.Value;
var displayClassInstanceFromLocal = variable.DisplayClassInstance as DisplayClassInstanceFromLocal;
var displayClassInstance = (displayClassInstanceFromLocal == null) ?
(DisplayClassInstance)new DisplayClassInstanceFromThis(_parameters[0]) :
//.........这里部分代码省略.........
示例14: CreateSymbolCompletionGroup
private static CompletionItem CreateSymbolCompletionGroup(string name, ImmutableArray<Symbol> symbols)
{
var multiple = symbols.Skip(1).Any();
if (!multiple)
return CreateSymbolCompletion(symbols.First());
var hasNonInvocables = symbols.Any(s => !(s is InvocableSymbol));
if (!hasNonInvocables)
return CreateInvocableCompletionGroup(symbols);
if (symbols.All(s => (s is TypeSymbol && ((TypeSymbol) s).IsIntrinsicNumericType())
|| (s is FunctionSymbol && ((FunctionSymbol) s).IsNumericConstructor)))
return CreateSymbolCompletion(symbols.First(s => s is TypeSymbol));
var displayText = name;
var insertionText = name;
var sb = new StringBuilder();
sb.Append(Resources.AmbiguousName);
foreach (var symbol in symbols)
{
sb.AppendLine();
sb.Append(@" ");
sb.Append(symbol);
}
var description = sb.ToString();
return new CompletionItem(displayText, insertionText, description, Glyph.CompletionWarning);
}