void TransformIntoBaseMethodCallIfNeeded(CSharpInvocationResolveResult res, JInvocationExpression node2) { var target = res.TargetResult as ThisResolveResult; if (target != null && target.CausesNonVirtualInvocation) //base. { //var info = res.GetInfo(); //var node = info.Nodes.FirstOrDefault(); var ce = target.Type;// node.FindThisEntity(); if (ce != null && JMeta.IsExtJsType(ce.GetDefinitionOrArrayType(Compiler))) { node2.Member = J.This().Member("callParent"); if (node2.Arguments.IsNotNullOrEmpty()) { node2.Arguments = new List <JExpression> { J.NewJsonArray(node2.Arguments.ToArray()) } } ; //var me2 = (node2.Member as JsMemberExpression); //me2.Name = "callParent"; return; } IMethod me2; var me = res.Member; if (me is IProperty) { me2 = ((IProperty)me).Getter; } else if (me is IMethod) { me2 = (IMethod)res.Member; } else { throw new Exception("Can't resolve method from member: " + res.Member); } ((JMemberExpression)node2.Member).PreviousMember = J.Member("super"); } }
private JTypeImporter GetTypeImporter(ITypeDefinition ce) { JTypeImporter export; var isExtJs = JMeta.IsExtJsType(ce); var isGlobal = JMeta.IsGlobalType(ce) && !isExtJs; var isNative = JMeta.IsNativeType(ce) && !isExtJs; isNative = true; isGlobal = false; isExtJs = false; if (isGlobal) { throw new NotSupportedException(); } else if (isNative) { if (NativeExport == null) { NativeExport = new JTypeImporter { Compiler = Compiler } } ; export = NativeExport; } else if (isExtJs) { throw new NotSupportedException(); } else { throw new NotSupportedException(); } ConfigureTypeExport(export); return(export); }