public virtual void VisitAssign(BoundAssignEx x) { Accept(x.Target); Accept(x.Value); }
public virtual TResult VisitAssign(BoundAssignEx x) => DefaultVisitOperation(x);
public override void VisitAssign(BoundAssignEx x) { Debug.Assert(x.Target.Access.IsWrite); Debug.Assert(x.Value.Access.IsRead); Accept(x.Value); // keep WriteRef flag var targetaccess = BoundAccess.Write; if (x.Target.Access.IsWriteRef) targetaccess = targetaccess.WithWriteRef(0); // new target access with resolved target type Visit(x.Target, targetaccess.WithWrite(x.Value.TypeRefMask)); // x.TypeRefMask = x.Value.TypeRefMask; }