Exemplo n.º 1
0
        public void FindOverridables(IType cls, List <IMember> classMembers, List <IMember> interfaceMembers,
                                     bool includeOverridenClassMembers, bool includeOverridenInterfaceMembers)
        {
            ProjectDom   pctx    = GetParserContext(cls);
            List <IType> visited = new List <IType> ();

            cls = pctx.ResolveType(cls);
            FindOverridables(pctx, cls, cls, classMembers, interfaceMembers, visited, includeOverridenClassMembers, includeOverridenInterfaceMembers);
        }
        internal void SetupResolver(DomLocation resolvePosition)
        {
            this.resolvePosition = resolvePosition;
            this.resultTable.Clear();
            callingType = GetTypeAtCursor(unit, fileName, resolvePosition);

            if (callingType != null)
            {
                callingMember = GetMemberAt(callingType, fileName, resolvePosition);
                callingType   = dom.ResolveType(callingType);
                if (callingMember == null)
                {
                    DomLocation posAbove = resolvePosition;
                    posAbove.Line--;
                    callingMember = GetMemberAt(callingType, fileName, posAbove);
                }
            }

            if (memberCompilationUnit != null)
            {
                return;
            }
            if (callingMember != null && !setupLookupTableVisitor)
            {
                string wrapper = CreateWrapperClassForMember(callingMember, fileName, editor);
                using (ICSharpCode.NRefactory.IParser parser = ICSharpCode.NRefactory.ParserFactory.CreateParser(lang, new StringReader(wrapper))) {
                    parser.Parse();
                    memberCompilationUnit = parser.CompilationUnit;
                    lookupTableVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
                    lookupVariableLine      = CallingMember.Location.Line - 2;
                    setupLookupTableVisitor = true;
                }
            }
            else if (editor != null)
            {
                string wrapper = editor.Text;
                using (ICSharpCode.NRefactory.IParser parser = ICSharpCode.NRefactory.ParserFactory.CreateParser(lang, new StringReader(wrapper))) {
                    parser.Parse();
                    memberCompilationUnit = parser.CompilationUnit;
                    lookupTableVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
                    lookupVariableLine      = 0;
                    setupLookupTableVisitor = true;
                }
            }
        }