Пример #1
0
        protected override ICode VisitDefaultValue(ExprDefaultValue e)
        {
            var value = DefaultValuer.Get(e.Type, this.resolver.FieldNames);

            this.js.Append(value);
            return(e);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
            }
Пример #5
0
 protected virtual ICode VisitDefaultValue(ExprDefaultValue e)
 {
     this.ThrowOnNoOverride();
     return(e);
 }
Пример #6
0
 protected override ICode VisitDefaultValue(ExprDefaultValue e)
 {
     this.types.Add(e.Type);
     return(base.VisitDefaultValue(e));
 }
Пример #7
0
 protected override ICode VisitDefaultValue(ExprDefaultValue e)
 {
     this.code.AppendFormat("default({0})", e.Type.Name);
     return(e);
 }