protected override ICode VisitDefaultValue(ExprDefaultValue e) { var value = DefaultValuer.Get(e.Type, this.resolver.FieldNames); this.js.Append(value); return(e); }
public static Expr GetValueOrDefault(ICall call) { var ctx = call.Ctx; var @this = call.Obj.Named("this"); var @default = new ExprDefaultValue(ctx, call.Type).Named("default"); return(new ExprJsExplicit(ctx, "this || default", call.Type, @this, @default)); }
public static Stmt Clear(Ctx ctx) { var array = ctx.MethodParameter(0); var index = ctx.MethodParameter(1).Named("index"); var length = ctx.MethodParameter(2).Named("length"); var arrayElementType = ((ArrayType)array.Type).ElementType; var i = new ExprVarLocal(ctx, ctx.Int32).Named("i"); var value = new ExprDefaultValue(ctx, arrayElementType).Named("value"); var js = "for (i=0; i<length; i++) a[index+i]=value;"; var stmt = new StmtJsExplicit(ctx, js, i, length, array.Named("a"), index, value); return(stmt); }
public Stmt GetImpl(Ctx ctx) { var count = ctx.MethodParameter(0, "count"); var elType = ((GenericInstanceMethod)ctx.MRef).GenericArguments[0]; var arrayType = elType.MakeArray(); var elTypeExpr = new ExprJsTypeVarName(ctx, arrayType).Named("type"); var defaultValue = new ExprDefaultValue(ctx, elType).Named("defaultValue"); var a = ctx.Local(arrayType, "a"); var i = ctx.Local(ctx.Int32, "i"); var js = @" a = new Array(count); a._ = type; for (i = count - 1; i >= 0; i--) a[i] = defaultValue; return a; "; var stmt = new StmtJsExplicit(ctx, js, count, elTypeExpr, defaultValue, a, i); return(stmt); }
protected virtual ICode VisitDefaultValue(ExprDefaultValue e) { this.ThrowOnNoOverride(); return(e); }
protected override ICode VisitDefaultValue(ExprDefaultValue e) { this.types.Add(e.Type); return(base.VisitDefaultValue(e)); }
protected override ICode VisitDefaultValue(ExprDefaultValue e) { this.code.AppendFormat("default({0})", e.Type.Name); return(e); }