Skip to content

Commit 3de6d29

Browse files
committed
fixed InvalidOperationException in FindSelectedDeclaration
1 parent e26f553 commit 3de6d29

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

Rubberduck.Parsing/VBA/RubberduckParserState.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,10 +1069,26 @@ public Declaration FindSelectedDeclaration(ICodePane activeCodePane, bool proced
10691069
item.DeclarationType == DeclarationType.ProceduralModule) &&
10701070
item.QualifiedName.QualifiedModuleName.Equals(selection.Value.QualifiedName))
10711071
{
1072-
var procName = activeCodePane.CodeModule.GetProcOfLine(selection.Value.Selection.StartLine);
1072+
var line = selection.Value.Selection.StartLine;
1073+
var procType = activeCodePane.CodeModule.GetProcKindOfLine(line);
1074+
var procName = activeCodePane.CodeModule.GetProcOfLine(line);
10731075
if (!string.IsNullOrEmpty(procName))
10741076
{
1075-
match = DeclarationFinder.Members(item).SingleOrDefault(m => m.IdentifierName == procName);
1077+
switch (procType)
1078+
{
1079+
case ProcKind.PropertyGet:
1080+
match = DeclarationFinder.Members(item).SingleOrDefault(m => m.IdentifierName == procName && m.DeclarationType == DeclarationType.PropertyGet);
1081+
break;
1082+
case ProcKind.PropertyLet:
1083+
match = DeclarationFinder.Members(item).SingleOrDefault(m => m.IdentifierName == procName && m.DeclarationType == DeclarationType.PropertyLet);
1084+
break;
1085+
case ProcKind.PropertySet:
1086+
match = DeclarationFinder.Members(item).SingleOrDefault(m => m.IdentifierName == procName && m.DeclarationType == DeclarationType.PropertySet);
1087+
break;
1088+
default:
1089+
match = DeclarationFinder.Members(item).SingleOrDefault(m => m.IdentifierName == procName);
1090+
break;
1091+
}
10761092
}
10771093
else
10781094
{

0 commit comments

Comments
 (0)