using System.Collections.Immutable; using System.Diagnostics; using Microsoft.CodeAnalysis.CSharp.Symbols; namespace Microsoft.CodeAnalysis.CSharp; internal sealed class BoundPropertyEqualsValue : BoundEqualsValue { public PropertySymbol Property { get; } public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray locals, BoundExpression value, bool hasErrors = false) : base(BoundKind.PropertyEqualsValue, syntax, locals, value, hasErrors || value.HasErrors()) { Property = property; } [DebuggerStepThrough] public override BoundNode? Accept(BoundTreeVisitor visitor) { return visitor.VisitPropertyEqualsValue(this); } public BoundPropertyEqualsValue Update(PropertySymbol property, ImmutableArray locals, BoundExpression value) { if (!SymbolEqualityComparer.ConsiderEverything.Equals(property, Property) || locals != base.Locals || value != base.Value) { BoundPropertyEqualsValue boundPropertyEqualsValue = new BoundPropertyEqualsValue(Syntax, property, locals, value, base.HasErrors); boundPropertyEqualsValue.CopyAttributes(this); return boundPropertyEqualsValue; } return this; } }