types.Remove (tc.MemberName.Name);
else
found.RemoveAt (i);
+
+ break;
}
}
- cached_types.Remove (tc.Basename);
+ cached_types.Remove (tc.MemberName.Basename);
}
public void SetBuiltinType (BuiltinTypeSpec pts)
public override void AddTypeContainer (TypeContainer tc)
{
- string name = tc.Basename;
-
var mn = tc.MemberName;
+ var name = mn.Basename;
while (mn.Left != null) {
mn = mn.Left;
name = mn.Name;
candidates.AddRange (a);
}
- if (candidates != null)
- return new ExtensionMethodCandidates (invocationContext, candidates, this, position);
- }
-
- // LAMESPEC: TODO no spec about priority over normal extension methods yet
- if (types_using_table != null) {
- foreach (var t in types_using_table) {
+ if (types_using_table != null) {
+ foreach (var t in types_using_table) {
- var res = t.MemberCache.FindExtensionMethods (invocationContext, name, arity);
- if (res == null)
- continue;
+ var res = t.MemberCache.FindExtensionMethods (invocationContext, name, arity);
+ if (res == null)
+ continue;
- if (candidates == null)
- candidates = res;
- else
- candidates.AddRange (res);
+ if (candidates == null)
+ candidates = res;
+ else
+ candidates.AddRange (res);
+ }
}
if (candidates != null)