Beispiel #1
0
        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");
            }
        }
Beispiel #2
0
        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);
        }