public override void Visit(RppAssignOp node) { node.Right.Accept(this); node.Left.Accept(this); }
private RppFunc CreatePrimaryConstructor(IEnumerable<IRppExpr> exprs) { var p = _classParams.Select(rppVar => new RppParam(MakeConstructorArgName(rppVar.Name), rppVar.Type)).ToList(); List<IRppNode> assignExprs = new List<IRppNode>(); foreach (var classParam in _fields) { IRppExpr initExpr; if (classParam.IsClassParam) { string argName = MakeConstructorArgName(classParam.Name); initExpr = new RppId(argName); } else { RppField field = classParam; initExpr = field.InitExpr; } RppAssignOp assign = new RppAssignOp(new RppId(classParam.MangledName), initExpr); assignExprs.Add(assign); } assignExprs.AddRange(exprs); assignExprs.Add(CreateParentConstructorCall()); return new RppFunc("this", p, ResolvableType.UnitTy, new RppBlockExpr(assignExprs)); }
public virtual void Visit(RppAssignOp node) { }