X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fpending.cs;h=1de765fb4ac041eb7926c501e0aeb235c98579ad;hb=3749debbecf134f61f409c47e00798afbe46d310;hp=507b937e2c904310786e8798ee2196d2ef52dcb2;hpb=77f563b5f22140b1951f40664ec0a741a981a938;p=mono.git diff --git a/mcs/mcs/pending.cs b/mcs/mcs/pending.cs index 507b937e2c9..1de765fb4ac 100644 --- a/mcs/mcs/pending.cs +++ b/mcs/mcs/pending.cs @@ -545,12 +545,15 @@ namespace Mono.CSharp { if (new_implementation) { MemberFilter filter; - if (mi.Parameters.Count > 1) { - var indexer_params = mi.Name [0] == 'g' ? mi.Parameters : IndexerSpec.CreateParametersFromSetter (mi, mi.Parameters.Count - 1); - filter = new MemberFilter (MemberCache.IndexerNameAlias, 0, MemberKind.Indexer, indexer_params, null); + bool getter = mi.Name [0] == 'g'; + if (mi.Parameters.Count > (getter ? 0 : 1)) { + var indexer_params = getter ? mi.Parameters : IndexerSpec.CreateParametersFromSetter (mi, mi.Parameters.Count - 1); + var ptype = getter ? mi.ReturnType : mi.Parameters.Types [mi.Parameters.Count - 1]; + filter = new MemberFilter (MemberCache.IndexerNameAlias, 0, MemberKind.Indexer, indexer_params, ptype); } else { var pname = mi.Name.Substring (4); - filter = MemberFilter.Property (pname, null); + var ptype = getter ? mi.ReturnType : mi.Parameters.Types [0]; + filter = MemberFilter.Property (pname, ptype); } var prop = MemberCache.FindMember (container.CurrentType, filter, BindingRestriction.DeclaredOnly | BindingRestriction.InstanceOnly);