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); }
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)); }
public AssignMemberCallNode(MemberCallNode node) : base(node) { MemberCallNode = node; }