コード例 #1
0
        public void DeclarationFinderCanCopeWithMultipleModulesImplementingTheSameInterface()
        {
            var project            = GetTestProject("testProject");
            var interf             = GetTestClassModule(project, "interface");
            var member             = GetTestFunction(interf, "testMember", Accessibility.Public);
            var implementingClass1 = GetTestClassModule(project, "implementingClass1");
            var implementingClass2 = GetTestClassModule(project, "implementingClass2");
            var implementsContext1 = new VBAParser.ImplementsStmtContext(null, 0);
            var implementsContext2 = new VBAParser.ImplementsStmtContext(null, 0);

            AddReference(interf, implementingClass1, implementsContext1);
            AddReference(interf, implementingClass1, implementsContext2);
            var declarations = new List <Declaration> {
                interf, member, implementingClass1, implementingClass2
            };

            DeclarationFinder finder  = new DeclarationFinder(declarations, new List <Rubberduck.Parsing.Annotations.IAnnotation>(), new List <UnboundMemberDeclaration>());
            var interfaceDeclarations = finder.FindAllInterfaceMembers().ToList();

            Assert.AreEqual(1, interfaceDeclarations.Count());
        }
コード例 #2
0
 public override void EnterImplementsStmt(VBAParser.ImplementsStmtContext context)
 {
     _resolver.Resolve(context);
 }
コード例 #3
0
 public override void EnterImplementsStmt(VBAParser.ImplementsStmtContext context)
 {
     // The expression will be later resolved to the actual declaration. Have to split the work up because we have to gather/create all declarations first.
     ((ClassModuleDeclaration)_moduleDeclaration).AddSupertype(context.expression().GetText());
 }
コード例 #4
0
 public void Resolve(VBAParser.ImplementsStmtContext context)
 {
     ResolveType(context.expression());
 }
コード例 #5
0
 public void Resolve(VBAParser.ImplementsStmtContext context)
 {
     ResolveInternal(context.ambiguousIdentifier(), _currentScope);
 }