Exemplo n.º 1
0
        public static JNewAnonymousClassExpression CreateDelegate(JMemberExpression delType, JParameterDeclaration[] prms2, JMemberExpression returnType, JBlock body)
        {
            if (prms2 == null)
            {
                prms2 = new JParameterDeclaration[0];
            }
            if (returnType == null)
            {
                returnType = J.Member("void");
            }
            var ce = NewAnonymousType(delType);
            var me = new JMethodDeclaration
            {
                MethodBody  = body,
                Parameters  = prms2.ToList(),
                Annotations = { new JAnnotationDeclaration {
                                    Name = "Override"
                                } },
                Type      = returnType,
                Name      = "invoke",
                Modifiers = { IsPublic = true },
            };

            ce.Declarations.Add(me);
            return(ce);
        }
Exemplo n.º 2
0
 public static JInvocationExpression Typeof(JMemberExpression me)
 {
     return(new JInvocationExpression {
         Member = new JMemberExpression {
             Name = "typeof"
         }, Arguments = new List <JExpression> {
             me
         }
     });
 }
Exemplo n.º 3
0
 public static JMemberExpression MemberOrSelf(this JMemberExpression member, string name)
 {
     if (name.IsNullOrEmpty())
     {
         return(member);
     }
     if (member == null)
     {
         return(Member(name));
     }
     return(member.Member(name));
 }
Exemplo n.º 4
0
        public static JMemberExpression Members(string members)
        {
            JMemberExpression node = null;

            foreach (var token in members.Split('.'))
            {
                node = new JMemberExpression {
                    PreviousMember = node
                };
                node.Name = token;
            }
            return(node);
        }
Exemplo n.º 5
0
 public static JVariableDeclarationExpression Var(string variableName, JMemberExpression type, JExpression initializer = null)
 {
     if (type == null)
     {
         throw new Exception();
     }
     return(new JVariableDeclarationExpression {
         Type = type, Declarators = new List <JVariableDeclarator> {
             new JVariableDeclarator {
                 Name = variableName, Initializer = initializer
             }
         }
     });
 }
Exemplo n.º 6
0
        public void VisitMemberExpression(JMemberExpression node)
        {
            if (node.PreviousMember != null)
            {
                Visit(node.PreviousMember);
                Write(".");
            }
            if (node.Name != null)
            {
                Write(node.Name);
                if (node.GenericArguments.IsNotNullOrEmpty())
                {
                    Write("<");
                    VisitEachJoin(node.GenericArguments, () => Write(","));
                    Write(">");
                }
            }
            else if (node.Member != null)
            {
                Visit(node.Member);
            }

            if (node.TypeRef is ITypeParameter && !IsInTypeParameter && IsInReturnTypeParametersDeclaration)
            {
                IsInTypeParameter = true;
                var tr = (ITypeParameter)node.TypeRef;
                if (tr.EffectiveInterfaceSet.IsNotNullOrEmpty())
                {
                    Write(" extends ");
                    VisitEachJoin(tr.EffectiveInterfaceSet.Select(t => t.JAccess()).ToList(), WriteComma);
                }
                IsInTypeParameter = false;
            }

            if (node.IsArray)
            {
                Write("[]");
            }
        }
Exemplo n.º 7
0
 public static JCastExpression Cast(JExpression exp, JMemberExpression type)
 {
     return(new JCastExpression {
         Expression = exp, Type = type
     });
 }
Exemplo n.º 8
0
 public static JMemberExpression AddGenericArg(this JMemberExpression exp, JMemberExpression arg)
 {
     exp.GenericArguments.Add(arg);
     return(exp);
 }
Exemplo n.º 9
0
 public static JMemberExpression Member(this JExpression member, JMemberExpression exp)
 {
     exp.PreviousMember = member;
     return(exp);
 }
Exemplo n.º 10
0
 public static JNewAnonymousClassExpression CreateFunc(JMemberExpression retType, JBlock body, NProject2 project)
 {
     return(CreateActionOrFunc(body, null, retType, project));
 }
Exemplo n.º 11
0
        public static JNewAnonymousClassExpression CreateActionOrFunc(JBlock body, JParameterDeclaration[] prms, JMemberExpression retType, NProject2 project)
        {
            if (prms == null)
            {
                prms = new JParameterDeclaration[0];
            }
            var argTypes    = prms.Select(t => t.Type).ToList();
            var delTypeName = "system.Action";
            var netTypeName = "System.Action";

            if (retType != null)
            {
                delTypeName = "system.Func";
                netTypeName = "System.Func";
                argTypes.Add(retType);
            }
            if (prms.Length > 0)
            {
                delTypeName += prms.Length;
            }
            var delType = CreateTypeRef(delTypeName, argTypes.ToArray());

            if (argTypes.Count > 0)
            {
                netTypeName += "`" + argTypes.Count;
            }
            delType.TypeRef = project.FindType(netTypeName);
            return(CreateDelegate(delType, prms, retType, body));
        }
Exemplo n.º 12
0
 public static JMemberExpression RemoveGenericArgs(this JMemberExpression exp)
 {
     exp.GenericArguments.Clear();
     return(exp);
 }