public override object VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, object data) { if (resolver.CallingType == null || resolver.CallingType.FullName == "System.Object") { return(CreateResult(DomReturnType.Void)); } BaseResolveResult result = new BaseResolveResult(); result.CallingType = resolver.CallingType; result.CallingMember = resolver.CallingMember; if (resolver.CallingType != null) { IType type = null; if (resolver.CallingType.BaseType != null) { type = this.resolver.SearchType(resolver.CallingType.BaseType); } result.UnresolvedType = result.ResolvedType = type != null ? new DomReturnType(type) : DomReturnType.Object; } return(result); }
public NRefactoryParameterDataProvider(MonoDevelop.Ide.Gui.TextEditor editor, NRefactoryResolver resolver, BaseResolveResult resolveResult) { this.editor = editor; HashSet <string> alreadyAdded = new HashSet <string> (); if (resolveResult.CallingType != null) { IType resolvedType = resolver.Dom.GetType(resolveResult.ResolvedType); foreach (IReturnType rt in resolveResult.CallingType.BaseTypes) { IType baseType = resolver.SearchType(rt); bool includeProtected = DomType.IncludeProtected(resolver.Dom, baseType, resolvedType); if (baseType != null) { foreach (IMethod method in baseType.Methods) { if (!method.IsConstructor) { continue; } string str = ambience.GetString(method, OutputFlags.IncludeParameters); if (alreadyAdded.Contains(str)) { continue; } alreadyAdded.Add(str); if (method.IsAccessibleFrom(resolver.Dom, resolver.CallingType, resolver.CallingMember, includeProtected)) { methods.Add(method); } } } } } }