Files
2026-08-27 10:56:38 -06:00

41 lines
1.2 KiB
C#

using System.Diagnostics;
using Microsoft.CodeAnalysis.CSharp.Symbols;
namespace Microsoft.CodeAnalysis.CSharp;
internal sealed class BoundHoistedFieldAccess : BoundExpression
{
public new TypeSymbol Type => base.Type;
public FieldSymbol FieldSymbol { get; }
public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type, bool hasErrors)
: base(BoundKind.HoistedFieldAccess, syntax, type, hasErrors)
{
FieldSymbol = fieldSymbol;
}
public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type)
: base(BoundKind.HoistedFieldAccess, syntax, type)
{
FieldSymbol = fieldSymbol;
}
[DebuggerStepThrough]
public override BoundNode? Accept(BoundTreeVisitor visitor)
{
return visitor.VisitHoistedFieldAccess(this);
}
public BoundHoistedFieldAccess Update(FieldSymbol fieldSymbol, TypeSymbol type)
{
if (!SymbolEqualityComparer.ConsiderEverything.Equals(fieldSymbol, FieldSymbol) || !TypeSymbol.Equals(type, Type, (TypeCompareKind)0))
{
BoundHoistedFieldAccess boundHoistedFieldAccess = new BoundHoistedFieldAccess(Syntax, fieldSymbol, type, base.HasErrors);
boundHoistedFieldAccess.CopyAttributes(this);
return boundHoistedFieldAccess;
}
return this;
}
}