File tree Expand file tree Collapse file tree 1 file changed +26
-2
lines changed
src/Generator/Generators/CSharp Expand file tree Collapse file tree 1 file changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -203,6 +203,27 @@ public override bool VisitDeclContext(DeclarationContext context)
203
203
return true ;
204
204
}
205
205
206
+ private IEnumerable < Class > EnumerateClasses ( )
207
+ {
208
+ foreach ( var tu in TranslationUnits )
209
+ {
210
+ foreach ( var cls in EnumerateClasses ( tu ) )
211
+ yield return cls ;
212
+ }
213
+ }
214
+
215
+ private IEnumerable < Class > EnumerateClasses ( DeclarationContext context )
216
+ {
217
+ foreach ( var cls in context . Classes )
218
+ yield return cls ;
219
+
220
+ foreach ( var ns in context . Namespaces )
221
+ {
222
+ foreach ( var cls in EnumerateClasses ( ns ) )
223
+ yield return cls ;
224
+ }
225
+ }
226
+
206
227
void GenerateNamespaceFunctionsAndVariables ( DeclarationContext context )
207
228
{
208
229
var hasGlobalVariables = ! ( context is Class ) && context . Variables . Any (
@@ -213,8 +234,11 @@ void GenerateNamespaceFunctionsAndVariables(DeclarationContext context)
213
234
214
235
PushBlock ( BlockKind . Functions ) ;
215
236
var parentName = SafeIdentifier ( context . TranslationUnit . FileNameWithoutExtension ) ;
216
- var @class = context . Classes . Find ( c => c . Name == parentName ) ;
217
- var keyword = @class != null && @class . IsValueType ? "struct" : "class" ;
237
+
238
+ var keyword = "class" ;
239
+ var classes = EnumerateClasses ( ) . ToList ( ) ;
240
+ if ( classes . FindAll ( cls => cls . IsValueType && cls . Name == parentName && context . QualifiedLogicalName == cls . Namespace . QualifiedLogicalName ) . Any ( ) )
241
+ keyword = "struct" ;
218
242
WriteLine ( $ "public unsafe partial { keyword } { parentName } ") ;
219
243
WriteStartBraceIndent ( ) ;
220
244
You can’t perform that action at this time.
0 commit comments