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); }
private IEnumerable <IInspectionResult> UnboundInspectionResults(QualifiedModuleName module, DeclarationFinder finder) { var objectionableReferences = finder .UnboundDefaultMemberAccesses(module) .Where(IsResultReference); return(objectionableReferences .Select(reference => UnboundInspectionResult(reference, finder)) .ToList()); }
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)); }
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); }
protected override IEnumerable <IdentifierReference> ReferencesInModule(QualifiedModuleName module, DeclarationFinder finder) { return(finder.UnboundDefaultMemberAccesses(module)); }