// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Rename.ConflictEngine; /// <summary> /// This annotation will be used by rename to mark all places where it needs to rename an identifier (token replacement) and where to /// check if the semantics have been changes (conflict detection). /// </summary> /// <remarks>This annotation should be put on tokens only.</remarks> internal sealed class RenameActionAnnotation( TextSpan originalSpan, bool isRenameLocation, string? prefix, string? suffix, bool isOriginalTextLocation, RenameDeclarationLocationReference[] renameDeclarationLocations, bool isNamespaceDeclarationReference, bool isInvocationExpression, bool isMemberGroupReference) : RenameAnnotation { /// <summary> /// The span this token occupied in the original syntax tree. Can be used to show e.g. conflicts in the UI. /// </summary> public readonly TextSpan OriginalSpan = originalSpan; /// <summary> /// A flag indicating whether this is a location that needs to be renamed or just tracked for conflicts. /// </summary> public readonly bool IsRenameLocation = isRenameLocation; /// <summary> /// A flag indicating whether the token at this location has the same ValueText then the original name /// of the symbol that gets renamed. /// </summary> public readonly bool IsOriginalTextLocation = isOriginalTextLocation; /// <summary> /// When replacing the annotated token this string will be prepended to the token's value. This is used when renaming compiler /// generated fields and methods backing properties (e.g. "get_X" or "_X" for property "X"). /// </summary> public readonly string? Prefix = prefix; /// <summary> /// When replacing the annotated token this string will be appended to the token's value. This is used when renaming compiler /// generated types whose names are derived from user given names (e.g. "XEventHandler" for event "X"). /// </summary> public readonly string? Suffix = suffix; /// <summary> /// A single dimensional array of annotations to verify after rename. /// </summary> public readonly RenameDeclarationLocationReference[] RenameDeclarationLocationReferences = renameDeclarationLocations; /// <summary> /// States if this token is a Namespace Declaration Reference /// </summary> public readonly bool IsNamespaceDeclarationReference = isNamespaceDeclarationReference; /// <summary> /// States if this token is a member group reference, typically found in NameOf expressions /// </summary> public readonly bool IsMemberGroupReference = isMemberGroupReference; /// <summary> /// States if this token is annotated as a part of the Invocation Expression that needs to be checked for the Conflicts /// </summary> public readonly bool IsInvocationExpression = isInvocationExpression; } |