/// <summary> /// Returns the value that corresponds to the given field access. /// </summary> /// <param name="access">The field access.</param> /// <returns>The resolved field type.</returns> public ValueReference this[FieldAccess access] { get => builder[access.Index];
/// <summary> /// Realizes an additional access operation to the given field index. /// </summary> /// <param name="fieldAccess">The next field access.</param> /// <returns>The extended field reference.</returns> public FieldAccessChain Append(FieldAccess fieldAccess) => new FieldAccessChain(AccessChain.Add(fieldAccess));
/// <summary> /// Constructs a new field reference. /// </summary> /// <param name="fieldIndex">The field access.</param> /// <param name="span">The number of fields to span.</param> public FieldSpan(FieldAccess fieldIndex, int span) { Access = fieldIndex; Span = Math.Max(span, 1); }
/// <summary> /// Constructs a new access chain using the given index. /// </summary> /// <param name="index">The index of this reference.</param> public FieldAccessChain(FieldAccess index) : this(ImmutableArray.Create(index)) { }
/// <summary> /// Constructs a new field span. /// </summary> /// <param name="fieldIndex">The field access.</param> public FieldSpan(FieldAccess fieldIndex) : this(fieldIndex, 1) { }