@@ -84,29 +84,36 @@ public static bool CheckIgnoreProperty(Property prop)
84
84
return ! prop . IsGenerated ;
85
85
}
86
86
87
- public static void CheckTypeForSpecialization ( Type type , Declaration container ,
87
+ public static bool CheckTypeForSpecialization ( Type type , Declaration container ,
88
88
Action < ClassTemplateSpecialization > addSpecialization ,
89
89
ITypeMapDatabase typeMaps , bool internalOnly = false )
90
90
{
91
91
type = type . Desugar ( ) ;
92
92
type = ( type . GetFinalPointee ( ) ?? type ) . Desugar ( ) ;
93
93
ClassTemplateSpecialization specialization = GetParentSpecialization ( type ) ;
94
94
if ( specialization == null )
95
- return ;
95
+ return true ;
96
96
97
97
if ( IsSpecializationNeeded ( container , typeMaps , internalOnly , specialization ) )
98
- return ;
98
+ return false ;
99
99
100
100
if ( ! internalOnly )
101
101
{
102
102
if ( IsSpecializationSelfContained ( specialization , container ) )
103
- return ;
103
+ return true ;
104
104
105
105
if ( IsMappedToPrimitive ( typeMaps , type , specialization ) )
106
- return ;
106
+ return true ;
107
107
}
108
108
109
+ if ( specialization . Arguments . Select (
110
+ a => a . Type . Type ) . Any ( t => t != null &&
111
+ ! CheckTypeForSpecialization ( t , container , addSpecialization ,
112
+ typeMaps , internalOnly ) ) )
113
+ return false ;
114
+
109
115
addSpecialization ( specialization ) ;
116
+ return true ;
110
117
}
111
118
112
119
public static bool IsTypeExternal ( Module module , Type type )
0 commit comments