public JNode ExportInitializer(IMember fieldOrProperty, BlockStatement ccBlock, bool isGlobal, bool isNative = false) { var initializer = GetCreateInitializer(fieldOrProperty); var init2 = AccessSelfFieldOrProperty(fieldOrProperty).Assign(initializer); var jsInit = JsCodeImporter.VisitExpression(init2); if (isGlobal) { //danel HACK var st = new JPreUnaryExpression { Operator = "var ", Right = jsInit }.Statement(); return(st); } else if (isNative) { var st = jsInit.Statement(); return(st); } else //clr { var st = jsInit.Statement(); return(st); } }
public virtual List <JEntityDeclaration> _VisitField(IField fld) { var init2 = GetCreateFieldInitializer(fld); JExpression initializer = null; if (init2 != null) { initializer = JsCodeImporter.VisitExpression(init2); } var fe2 = new JFieldDeclaration { FieldDefinition = fld, Initializer = initializer, Type = fld.Type.JAccess(), Name = JNaming.JName(fld) }; ImportModifiers(fld, fe2); return(new List <JEntityDeclaration> { fe2 }); }
protected JBlock ExportConstructorBody(IMethod ctor) { var ctorNode = (ConstructorDeclaration)ctor.GetDeclaration(); BlockStatement ccc = null; if (ctorNode != null) { ccc = ctorNode.Body; } //var ccc = ctor.GetDefinition();//.decl as CsConstructor; //var ccc = ctor.GetDefinition(); var block2 = (JBlock)JsCodeImporter.Visit(ccc); if (block2 == null) { block2 = new JBlock { Statements = new List <JStatement>() } } ; var ce = ctor.GetDeclaringTypeDefinition(); var isClr = JMeta.IsClrType(ce); var isPrototype = JMeta.IsNativeType(ce); var statements = new List <JStatement>(); if (!ctor.IsStatic) { //TODO: //base/this ctor invocation var invocation = GetConstructorBaseOrThisInvocation2(ctor); if (invocation.Arguments.Count > 0) { var exp2 = (JNewObjectExpression)JsCodeImporter.VisitExpression(invocation); var exp3 = exp2.Invocation; exp3.Member = J.Member("super"); statements.Insert(0, exp3.Statement()); } } if (block2.Statements == null) { block2.Statements = new List <JStatement>(); } block2.Statements.InsertRange(0, statements); return(block2); } void ExportConstructorParameters(IMethod ctor, JFunction func) { var ce = ctor.GetDeclaringTypeDefinition(); var list = new List <string>(); if (!JMeta.IgnoreTypeArguments(ce)) { //danel var gprms = ce.TypeParameters.ToList();//.GetGenericArguments().Where(ga => ga.isGenericParam()).ToList(); if (gprms.IsNotNullOrEmpty()) { var i = 0; foreach (var gprm in gprms) { func.Parameters.Add(gprm.Name); if (!ctor.IsStatic && func.Block != null) { func.Block.Statements.Insert(i, J.This().Member(gprm.Name).Assign(J.Member(gprm.Name)).Statement()); i++; } } } } var prms = ctor.Parameters; if (prms != null) { func.Parameters.AddRange(prms.Select(t => t.Name)); } }