@@ -28,23 +28,28 @@ public override bool VisitClassDecl(Class @class)
2828 if ( ! base . VisitClassDecl ( @class ) || @class . Ignore || @class . IsDependent )
2929 return false ;
3030
31- MarkUsedFieldTypes ( @class , new HashSet < Class > ( ) ) ;
31+ MarkUsedFieldTypes ( @class , new HashSet < DeclarationContext > ( ) ) ;
3232
3333 return true ;
3434 }
3535
36- private static void MarkUsedFieldTypes ( Class @class , HashSet < Class > visitedClasses )
36+ private static void MarkUsedFieldTypes ( DeclarationContext declContext ,
37+ HashSet < DeclarationContext > visitedDeclarationContexts )
3738 {
38- if ( visitedClasses . Contains ( @class ) )
39+ if ( visitedDeclarationContexts . Contains ( declContext ) )
3940 return ;
4041
41- visitedClasses . Add ( @class ) ;
42+ visitedDeclarationContexts . Add ( declContext ) ;
43+
44+ DeclarationContext decl = null ;
45+ var @class = declContext as Class ;
46+ if ( @class == null )
47+ return ;
4248
43- Class type = null ;
4449 foreach ( var field in @class . Layout . Fields . Where (
45- f => f . QualifiedType . Type . TryGetClass ( out type ) ) )
50+ f => f . QualifiedType . Type . TryGetDeclaration ( out decl ) ) )
4651 {
47- DeclarationContext declarationContext = type ;
52+ DeclarationContext declarationContext = decl ;
4853 do
4954 {
5055 if ( declarationContext . Ignore )
@@ -58,7 +63,7 @@ private static void MarkUsedFieldTypes(Class @class, HashSet<Class> visitedClass
5863 declarationContext = declarationContext . Namespace ;
5964 } while ( declarationContext != null ) ;
6065
61- MarkUsedFieldTypes ( type , visitedClasses ) ;
66+ MarkUsedFieldTypes ( decl , visitedDeclarationContexts ) ;
6267 }
6368 }
6469 }
0 commit comments