Example #1
0
        private TypeInfo Visit(MemberCallNode node, MethodBuilder builder, CodegenContext context)
        {
            var whereType = Visit(node.Where as dynamic, builder, context);

            context.LastVar = types.GetType(whereType.Name).GetField(node.MemberName);

            //lastType = whereType;
            //lastVar = varInfo;
            // TODO Я НЕ ПОМНЮ, ЗАЧЕМ ЭТО

            builder.LoadToStack(context.LastVar);

            return(context.LastVar.Type);
        }
Example #2
0
        private TypeDescriptor Visit(MemberCallNode node, Context context)
        {
            var where = Visit(node.Where as dynamic, context);
            var field = where.Type.GetField(node.MemberName);

            if (field == null)
            {
                Log(string.Format("Поля {0} не существует", node.MemberName), node);

                return(TypeDescriptor.Undefined);
            }

            if (!where.IsObject && !(where.Type is PackageType))
            {
                Log(string.Format("Невозможно вызвать поле {0} не на экземпляре", node.MemberName), node);

                return(TypeDescriptor.Undefined);
            }

            return(new TypeDescriptor(true, field.Type, true));
        }
Example #3
0
 public AssignMemberCallNode(MemberCallNode node)
     : base(node)
 {
     MemberCallNode = node;
 }