public RenameActionAnnotation( TextSpan originalSpan, bool isRenameLocation, bool isAccessorLocation, string suffix, bool isOriginalTextLocation, RenameDeclarationLocationReference[] renameDeclarationLocations, bool isNamespaceDeclarationReference, bool isInvocationExpression) { this.OriginalSpan = originalSpan; this.IsRenameLocation = isRenameLocation; this.IsAccessorLocation = isAccessorLocation; this.Suffix = suffix; this.RenameDeclarationLocationReferences = renameDeclarationLocations; this.IsOriginalTextLocation = isOriginalTextLocation; this.IsNamespaceDeclarationReference = isNamespaceDeclarationReference; this.IsInvocationExpression = isInvocationExpression; }
public static async Task <RenameDeclarationLocationReference[]> CreateDeclarationLocationAnnotationsAsync( Solution solution, IEnumerable <ISymbol> symbols, CancellationToken cancellationToken) { var renameDeclarationLocations = new RenameDeclarationLocationReference[symbols.Count()]; var symbolIndex = 0; foreach (var symbol in symbols) { var locations = symbol.Locations; var overriddenFromMetadata = false; if (symbol.IsOverride) { var overriddenSymbol = symbol.OverriddenMember(); if (overriddenSymbol != null) { overriddenSymbol = await SymbolFinder.FindSourceDefinitionAsync(overriddenSymbol, solution, cancellationToken).ConfigureAwait(false); overriddenFromMetadata = overriddenSymbol == null || overriddenSymbol.Locations.All(loc => loc.IsInMetadata); } } var location = await GetSymbolLocationAsync(solution, symbol, cancellationToken).ConfigureAwait(false); if (location != null && location.IsInSource) { renameDeclarationLocations[symbolIndex] = new RenameDeclarationLocationReference(solution.GetDocumentId(location.SourceTree), location.SourceSpan, overriddenFromMetadata, locations.Count()); } else { renameDeclarationLocations[symbolIndex] = new RenameDeclarationLocationReference(GetString(symbol), locations.Count()); } symbolIndex++; } return(renameDeclarationLocations); }
public static async Task<RenameDeclarationLocationReference[]> CreateDeclarationLocationAnnotationsAsync( Solution solution, IEnumerable<ISymbol> symbols, CancellationToken cancellationToken) { var renameDeclarationLocations = new RenameDeclarationLocationReference[symbols.Count()]; int symbolIndex = 0; foreach (var symbol in symbols) { var locations = symbol.Locations; bool overriddenFromMetadata = false; if (symbol.IsOverride) { var overriddenSymbol = symbol.OverriddenMember(); if (overriddenSymbol != null) { overriddenSymbol = await SymbolFinder.FindSourceDefinitionAsync(overriddenSymbol, solution, cancellationToken).ConfigureAwait(false); overriddenFromMetadata = overriddenSymbol == null || overriddenSymbol.Locations.All(loc => loc.IsInMetadata); } } var location = await GetSymbolLocationAsync(solution, symbol, cancellationToken).ConfigureAwait(false); if (location != null && location.IsInSource) { renameDeclarationLocations[symbolIndex] = new RenameDeclarationLocationReference(solution.GetDocumentId(location.SourceTree), location.SourceSpan, overriddenFromMetadata, locations.Count()); } else { renameDeclarationLocations[symbolIndex] = new RenameDeclarationLocationReference(GetString(symbol), locations.Count()); } symbolIndex++; } return renameDeclarationLocations; }