public override void Emit(ILGeneratorContext context) { var localType = context.Context.GetType(Type, context.Page); int localId = context.Function.EmitLocal(Identifier.Source.Value.ToString(), localType); if (Assignment != null) { var storeType = Assignment.EmitLoad(context); TypeUtility.ImplicitCast(context, storeType, localType, Assignment.Source); context.Function.Current.EmitStLoc(localId); } }
public override void Emit(ILGeneratorContext context) { if (ReturnExpression == null) { if (context.Function.ReturnType != null) { context.Errors.Add(new CompileError(Source, "Function must return a value")); } else { context.Function.Current.EmitRet(); } } else { var retType = ReturnExpression.EmitLoad(context); TypeUtility.ImplicitCast(context, retType, context.Function.ReturnType, ReturnExpression.Source); context.Function.Current.EmitRet(); } }
public override void Emit(ILGeneratorContext context) { var exprType = RHS.EmitLoad(context); LHS.EmitStore(context, exprType); }