public override Value Visit(VarInExpression varInExpression) { using (NamedValues.EnterScope( )) { EmitBranchToNewBlock("VarInScope"); foreach (var localVar in varInExpression.LocalVariables) { Alloca alloca = LookupVariable(localVar.Name); Value initValue = Context.CreateConstant(0.0); if (localVar.Initializer != null) { initValue = localVar.Initializer.Accept(this); } InstructionBuilder.Store(initValue, alloca); } return(varInExpression.Body.Accept(this)); } }
public override Value?Visit(VarInExpression varInExpression) { varInExpression.ValidateNotNull(nameof(varInExpression)); using (NamedValues.EnterScope( )) { EmitBranchToNewBlock("VarInScope"); foreach (var localVar in varInExpression.LocalVariables) { Alloca alloca = LookupVariable(localVar.Name); Value initValue = Context.CreateConstant(0.0); if (localVar.Initializer != null) { initValue = localVar.Initializer.Accept(this) ?? throw new CodeGeneratorException(ExpectValidExpr); } InstructionBuilder.Store(initValue, alloca); } return(varInExpression.Body.Accept(this)); } }
public virtual TResult Visit(VarInExpression varInExpression) => VisitChildren(varInExpression);