public EXPRFIELDINFO CreateFieldInfo(FieldSymbol field, AggregateType fieldType) { Debug.Assert(field != null); Debug.Assert(fieldType != null); EXPRFIELDINFO rval = new EXPRFIELDINFO(); rval.kind = ExpressionKind.EK_FIELDINFO; rval.type = GetTypes().GetOptPredefAgg(PredefinedType.PT_FIELDINFO).getThisType(); rval.flags = 0; rval.Init(field, fieldType); return rval; }
protected override Expr VisitFIELD(ExprField expr) { Debug.Assert(expr != null); Expr pObject; if (expr.OptionalObject == null) { pObject = ExprFactory.CreateNull(); } else { pObject = Visit(expr.OptionalObject); } ExprFieldInfo pFieldInfo = ExprFactory.CreateFieldInfo(expr.FieldWithType.Field(), expr.FieldWithType.GetType()); return(GenerateCall(PREDEFMETH.PM_EXPRESSION_FIELD, pObject, pFieldInfo)); }