Skip to content

Commit

Permalink
all green.
Browse files Browse the repository at this point in the history
  • Loading branch information
retailcoder committed Apr 20, 2021
1 parent ae9e807 commit 50d5e5a
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 29 deletions.
Expand Up @@ -26,6 +26,39 @@ protected IdentifierReferenceInspectionFromDeclarationsBase(IDeclarationFinderPr
/// </summary>
protected IEnumerable<Declaration> GetQualifierCandidates(IdentifierReference reference, DeclarationFinder finder)
{
if (reference.Context.TryGetAncestor<VBAParser.MemberAccessExprContext>(out var memberAccess))
{
var parentModule = Declaration.GetModuleParent(reference.ParentScoping);
var qualifyingExpression = memberAccess.lExpression();
if (qualifyingExpression is VBAParser.SimpleNameExprContext simpleName)
{
if (simpleName.GetText().Equals(Tokens.Me, System.StringComparison.InvariantCultureIgnoreCase))
{
// qualifier is 'Me'
return new[] { parentModule };
}

// todo get the actual qualifying declaration?
return finder.MatchName(simpleName.GetText())
.Where(candidate => !candidate.IdentifierName.Equals(reference.Declaration.IdentifierName, System.StringComparison.InvariantCultureIgnoreCase));
}

if (qualifyingExpression.ChildCount == 1 && qualifyingExpression.GetText().Equals(Tokens.Me, System.StringComparison.InvariantCultureIgnoreCase))
{
// qualifier is 'Me'
return new[] { parentModule };
}
}

if (reference.Context.TryGetAncestor<VBAParser.WithMemberAccessExprContext>(out var dot))
{
// qualifier is a With block
var withBlock = dot.GetAncestor<VBAParser.WithStmtContext>();
return finder.ContainedIdentifierReferences(new QualifiedSelection(reference.QualifiedModuleName, withBlock.GetSelection()))
.Select(r => r.Declaration).Distinct()
.Where(candidate => !candidate.Equals(reference.Declaration));
}

if (reference.Context.TryGetAncestor<VBAParser.CallStmtContext>(out var callStmt))
{
if (reference.Context.TryGetAncestor<VBAParser.LExpressionContext>(out var lExpression))
Expand All @@ -47,36 +80,10 @@ protected IEnumerable<Declaration> GetQualifierCandidates(IdentifierReference re
}

// todo get the actual qualifying declaration?
return finder.MatchName(member.lExpression().children.First().GetText());
return finder.MatchName(member.lExpression().children.First().GetText())
.Where(candidate => !candidate.Equals(reference.Declaration));
}
}


}

if (reference.Context.TryGetAncestor<VBAParser.MemberAccessExprContext>(out var memberAccess))
{
var parentModule = Declaration.GetModuleParent(reference.ParentScoping);
var qualifyingExpression = memberAccess.lExpression();
if (qualifyingExpression is VBAParser.SimpleNameExprContext simpleName)
{
if (simpleName.GetText().Equals(Tokens.Me, System.StringComparison.InvariantCultureIgnoreCase))
{
// qualifier is 'Me'
return new[] { parentModule };
}

// todo get the actual qualifying declaration?
return finder.MatchName(simpleName.GetText());
}
}

if (reference.Context.TryGetAncestor<VBAParser.WithMemberAccessExprContext>(out var dot))
{
// qualifier is a With block
var withBlock = dot.GetAncestor<VBAParser.WithStmtContext>();
return finder.ContainedIdentifierReferences(new QualifiedSelection(reference.QualifiedModuleName, withBlock.GetSelection()))
.Select(r => r.Declaration).Distinct();
}

return Enumerable.Empty<Declaration>();
Expand Down
Expand Up @@ -64,7 +64,7 @@ protected override bool IsResultReference(IdentifierReference reference, Declara
var qualifiers = base.GetQualifierCandidates(reference, finder);
return Declaration.GetModuleParent(reference.ParentScoping) is DocumentModuleDeclaration document
&& document.SupertypeNames.Contains("Workbook")
&& (qualifiers.Any());
&& !qualifiers.Any();
}

protected override string ResultDescription(IdentifierReference reference)
Expand Down

0 comments on commit 50d5e5a

Please sign in to comment.