Skip to content

Commit f06f2df

Browse files
committed
Fixed exception handling bug in resolving the supertypes of document modules.
1 parent 3c289d9 commit f06f2df

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

Rubberduck.Parsing/VBA/ReferenceResolveRunnerBase.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,28 +123,44 @@ private void AddSupertypesForDocumentModules(IReadOnlyCollection<QualifiedModule
123123

124124
foreach (var documentDeclaration in documentModuleDeclarations)
125125
{
126-
var documentSupertype = SupertypeForDocument(documentDeclaration.QualifiedName.QualifiedModuleName, documentDeclaration.AsTypeName, state);
126+
var documentSupertype = SupertypeForDocument(documentDeclaration.QualifiedName.QualifiedModuleName, state);
127127
if (documentSupertype != null)
128128
{
129129
((ClassModuleDeclaration)documentDeclaration).AddSupertype(documentSupertype);
130130
}
131131
}
132132
}
133133

134-
private Declaration SupertypeForDocument(QualifiedModuleName module, string asTypeName, RubberduckParserState state)
134+
private Declaration SupertypeForDocument(QualifiedModuleName module, RubberduckParserState state)
135135
{
136-
if(module.ComponentType != ComponentType.Document || module.Component?.Properties == null)
136+
if(module.ComponentType != ComponentType.Document || module.Component == null)
137137
{
138138
return null;
139139
}
140140

141-
var documentPropertyCount = module.Component.Properties.Count;
141+
int documentPropertyCount = 0;
142+
try
143+
{
144+
if(module.Component.IsWrappingNullReference
145+
|| module.Component.Properties == null
146+
|| module.Component.Properties.IsWrappingNullReference)
147+
{
148+
return null;
149+
}
150+
documentPropertyCount = module.Component.Properties.Count;
151+
}
152+
catch(COMException)
153+
{
154+
return null;
155+
}
142156

143157
Declaration superType = null;
144158
foreach (var coclass in state.CoClasses)
145159
{
146160
try
147161
{
162+
163+
148164
if (coclass.Key.Count != documentPropertyCount)
149165
{
150166
continue;

0 commit comments

Comments
 (0)