+2005-04-27 Marek Safar <marek.safar@seznam.cz>
+
+ Fix #74378
+ * class.cs (EmitFieldInitializers): Use FieldExpr in initializer.
+
+ * ecore.cs (FieldExpr): Add a new ctor with in_initializer.
+ (FieldExpr.DoResolve): Obsolete members are ignored for field
+ initializers.
+
2005-04-26 Marek Safar <marek.safar@seznam.cz>
* attribute.cs (AreOverloadedMethodParamsClsCompliant): Add array
return false;
Location l = f.Location;
- FieldExpr fe = new FieldExpr (f.FieldBuilder, l);
+ FieldExpr fe = new FieldExpr (f.FieldBuilder, l, true);
fe.InstanceExpression = instance_expr;
ExpressionStatement a = new Assign (fe, e, l);
LocalTemporary temp;
bool prepared;
+ bool in_initializer;
+
+ public FieldExpr (FieldInfo fi, Location l, bool in_initializer):
+ this (fi, l)
+ {
+ this.in_initializer = in_initializer;
+ }
public FieldExpr (FieldInfo fi, Location l)
{
return null;
}
- ObsoleteAttribute oa;
- FieldBase f = TypeManager.GetField (FieldInfo);
- if (f != null) {
- oa = f.GetObsoleteAttribute (f.Parent);
- if (oa != null)
- AttributeTester.Report_ObsoleteMessage (oa, f.GetSignatureForError (), loc);
+ if (!in_initializer) {
+ ObsoleteAttribute oa;
+ FieldBase f = TypeManager.GetField (FieldInfo);
+ if (f != null) {
+ oa = f.GetObsoleteAttribute (f.Parent);
+ if (oa != null)
+ AttributeTester.Report_ObsoleteMessage (oa, f.GetSignatureForError (), loc);
- // To be sure that type is external because we do not register generated fields
- } else if (!(FieldInfo.DeclaringType is TypeBuilder)) {
- oa = AttributeTester.GetMemberObsoleteAttribute (FieldInfo);
- if (oa != null)
- AttributeTester.Report_ObsoleteMessage (oa, TypeManager.GetFullNameSignature (FieldInfo), loc);
+ // To be sure that type is external because we do not register generated fields
+ } else if (!(FieldInfo.DeclaringType is TypeBuilder)) {
+ oa = AttributeTester.GetMemberObsoleteAttribute (FieldInfo);
+ if (oa != null)
+ AttributeTester.Report_ObsoleteMessage (oa, TypeManager.GetFullNameSignature (FieldInfo), loc);
+ }
}
if (ec.CurrentAnonymousMethod != null){