Exemple #1
0
        private (IdentifierReference identifierReference, bool isUnbound) RhsImplicitDefaultMemberAccess(IdentifierReference assignment, DeclarationFinder finder)
        {
            if (!(assignment.Context.Parent is VBAParser.LetStmtContext letStatement))
            {
                return(null, false);
            }

            var rhsSelection = new QualifiedSelection(assignment.QualifiedModuleName, letStatement.expression().GetSelection());

            var boundRhsDefaultMemberAccess = finder.IdentifierReferences(rhsSelection)
                                              .FirstOrDefault(reference => reference.IsNonIndexedDefaultMemberAccess &&
                                                              !reference.IsInnerRecursiveDefaultMemberAccess);

            if (boundRhsDefaultMemberAccess != null)
            {
                return(boundRhsDefaultMemberAccess, false);
            }

            var unboundRhsDefaultMemberAccess = finder.UnboundDefaultMemberAccesses(rhsSelection.QualifiedName)
                                                .FirstOrDefault(reference => reference.IsNonIndexedDefaultMemberAccess &&
                                                                !reference.IsInnerRecursiveDefaultMemberAccess &&
                                                                reference.Selection.Equals(rhsSelection.Selection));

            return(unboundRhsDefaultMemberAccess, true);
        }
Exemple #2
0
        private IEnumerable <IInspectionResult> UnboundInspectionResults(QualifiedModuleName module, DeclarationFinder finder)
        {
            var objectionableReferences = finder
                                          .UnboundDefaultMemberAccesses(module)
                                          .Where(IsResultReference);

            return(objectionableReferences
                   .Select(reference => UnboundInspectionResult(reference, finder))
                   .ToList());
        }
Exemple #3
0
        private static IEnumerable <IdentifierReference> PossiblyObjectNonSetAssignments(QualifiedModuleName module, DeclarationFinder finder)
        {
            var assignments = finder.IdentifierReferences(module)
                              .Where(reference => reference.IsAssignment &&
                                     !reference.IsSetAssignment &&
                                     (reference.IsNonIndexedDefaultMemberAccess ||
                                      Tokens.Variant.Equals(reference.Declaration.AsTypeName, StringComparison.InvariantCultureIgnoreCase)));
            var unboundAssignments = finder.UnboundDefaultMemberAccesses(module)
                                     .Where(reference => reference.IsAssignment);

            return(assignments.Concat(unboundAssignments));
        }
Exemple #4
0
        private IEnumerable <IInspectionResult> UnboundLhsInspectionResults(QualifiedModuleName module, DeclarationFinder finder)
        {
            var implicitDefaultMemberAssignments = finder
                                                   .UnboundDefaultMemberAccesses(module)
                                                   .Where(IsImplicitDefaultMemberAssignment);

            var results = new List <IInspectionResult>();

            foreach (var assignment in implicitDefaultMemberAssignments)
            {
                var(rhsDefaultMemberAccess, isUnbound) = RhsImplicitDefaultMemberAccess(assignment, finder);

                if (rhsDefaultMemberAccess != null)
                {
                    var result = InspectionResult(assignment, rhsDefaultMemberAccess, true, finder);
                    results.Add(result);
                }
            }

            return(results);
        }
Exemple #5
0
 protected override IEnumerable <IdentifierReference> ReferencesInModule(QualifiedModuleName module, DeclarationFinder finder)
 {
     return(finder.UnboundDefaultMemberAccesses(module));
 }