X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fmethod.cs;h=e6213c7e43e3228c2bad5d7548640d2ecbd54599;hb=e4559812129b62624444ab4ce96ddf2ca7de5e3d;hp=32755b36de183e1e984dafad2f764445a8e898d3;hpb=aa5f851becb4b0774bf6aba75672c2c6e9273b17;p=mono.git diff --git a/mcs/mcs/method.cs b/mcs/mcs/method.cs index 32755b36de1..e6213c7e43e 100644 --- a/mcs/mcs/method.cs +++ b/mcs/mcs/method.cs @@ -165,6 +165,12 @@ namespace Mono.CSharp { return s + parameters.GetSignatureForDocumentation (); } + public override void PrepareEmit () + { + base.PrepareEmit (); + parameters.ResolveDefaultValues (this); + } + public MethodSpec Spec { get { return spec; } } @@ -816,8 +822,10 @@ namespace Mono.CSharp { #endregion - public virtual void PrepareEmit () + public override void PrepareEmit () { + base.PrepareEmit (); + var mb = MethodData.DefineMethodBuilder (Parent); if (CurrentTypeParameters != null) { @@ -1083,19 +1091,12 @@ namespace Mono.CSharp { } if (base_override.IsGeneric) { - ObsoleteAttribute oa; foreach (var base_tp in base_tparams) { - oa = base_tp.BaseType.GetAttributeObsolete (); - if (oa != null) { - AttributeTester.Report_ObsoleteMessage (oa, base_tp.BaseType.GetSignatureForError (), Location, Report); - } + base_tp.BaseType.CheckObsoleteness (this, Location); if (base_tp.InterfacesDefined != null) { foreach (var iface in base_tp.InterfacesDefined) { - oa = iface.GetAttributeObsolete (); - if (oa != null) { - AttributeTester.Report_ObsoleteMessage (oa, iface.GetSignatureForError (), Location, Report); - } + iface.CheckObsoleteness (this, Location); } } } @@ -1404,11 +1405,7 @@ namespace Mono.CSharp { p.Name = md_p.Name; p.DefaultValue = md_p.DefaultValue; if (md_p.OptAttributes != null) { - if (p.OptAttributes == null) { - p.OptAttributes = md_p.OptAttributes; - } else { - p.OptAttributes.Attrs.AddRange (md_p.OptAttributes.Attrs); - } + Attributes.AttachFromPartial (p, md_p); } } @@ -1770,8 +1767,12 @@ namespace Mono.CSharp { // If we use a "this (...)" constructor initializer, then // do not emit field initializers, they are initialized in the other constructor // - if (!(Initializer is ConstructorThisInitializer)) + if (!(Initializer is ConstructorThisInitializer)) { + var errors = Compiler.Report.Errors; Parent.PartialContainer.ResolveFieldInitializers (bc); + if (errors != Compiler.Report.Errors) + return; + } if (!IsStatic) { if (Initializer == null && Parent.PartialContainer.Kind == MemberKind.Class) { @@ -2651,7 +2652,7 @@ namespace Mono.CSharp { else if (OperatorType == OpType.Implicit) Parent.MemberCache.CheckExistingMembersOverloads (this, GetMetadataName (OpType.Explicit), parameters); - TypeSpec declaring_type = Parent.CurrentType; + TypeSpec declaring_type = Parent.PartialContainer.CurrentType; TypeSpec return_type = MemberType; TypeSpec first_arg_type = ParameterTypes [0];