@@ -145,7 +145,7 @@ public void ExitWithBlock()
145
145
146
146
private IdentifierReference CreateReference ( ParserRuleContext callSiteContext , Declaration callee , bool isAssignmentTarget = false , bool hasExplicitLetStatement = false )
147
147
{
148
- if ( callSiteContext == null || _currentScope == null )
148
+ if ( callSiteContext == null || _currentScope == null || _alreadyResolved . Contains ( callSiteContext ) )
149
149
{
150
150
return null ;
151
151
}
@@ -225,9 +225,16 @@ private Declaration ResolveType(VBAParser.ComplexTypeContext context)
225
225
if ( udtMatch != null )
226
226
{
227
227
var udtReference = CreateReference ( identifiers [ 2 ] , udtMatch ) ;
228
+
228
229
projectMatch . AddReference ( projectReference ) ;
230
+ _alreadyResolved . Add ( projectReference . Context ) ;
231
+
229
232
moduleMatch . AddReference ( moduleReference ) ;
233
+ _alreadyResolved . Add ( moduleReference . Context ) ;
234
+
230
235
udtMatch . AddReference ( udtReference ) ;
236
+ _alreadyResolved . Add ( udtReference . Context ) ;
237
+
231
238
return udtMatch ;
232
239
}
233
240
}
@@ -244,6 +251,7 @@ private Declaration ResolveType(VBAParser.ComplexTypeContext context)
244
251
{
245
252
var reference = CreateReference ( identifiers [ 1 ] , match ) ;
246
253
match . AddReference ( reference ) ;
254
+ _alreadyResolved . Add ( reference . Context ) ;
247
255
return match ;
248
256
}
249
257
}
@@ -276,8 +284,13 @@ private Declaration ResolveType(VBAParser.ComplexTypeContext context)
276
284
if ( udtMatch != null )
277
285
{
278
286
var udtReference = CreateReference ( identifiers [ 1 ] , udtMatch ) ;
287
+
279
288
moduleMatch . AddReference ( moduleReference ) ;
289
+ _alreadyResolved . Add ( moduleReference . Context ) ;
290
+
280
291
udtMatch . AddReference ( udtReference ) ;
292
+ _alreadyResolved . Add ( udtReference . Context ) ;
293
+
281
294
return udtMatch ;
282
295
}
283
296
}
@@ -828,8 +841,7 @@ public void Resolve(VBAParser.AsTypeClauseContext context)
828
841
}
829
842
else
830
843
{
831
- type = ResolveType ( asType . complexType ( ) ) ;
832
- reference = CreateReference ( asType . complexType ( ) , type ) ;
844
+ ResolveType ( asType . complexType ( ) ) ;
833
845
}
834
846
835
847
if ( type != null && reference != null )
0 commit comments