File tree Expand file tree Collapse file tree
sources/SilkTouch/SilkTouch/Mods Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2279,9 +2279,13 @@ public override SyntaxNode VisitStructDeclaration(StructDeclarationSyntax node)
22792279 return node ;
22802280 }
22812281
2282+ // Structs need to have a constructor if we use field initializers
2283+ var hasConstructor = false ;
2284+ var initializerAdded = false ;
22822285 var members = new List < MemberDeclarationSyntax > ( ) ;
22832286 foreach ( var memberNode in node . Members )
22842287 {
2288+ hasConstructor |= memberNode is ConstructorDeclarationSyntax ;
22852289 if ( memberNode is not FieldDeclarationSyntax memberFieldNode )
22862290 {
22872291 members . Add ( memberNode ) ;
@@ -2312,6 +2316,7 @@ public override SyntaxNode VisitStructDeclaration(StructDeclarationSyntax node)
23122316 )
23132317 ) ;
23142318
2319+ initializerAdded = true ;
23152320 members . Add (
23162321 memberFieldNode . WithDeclaration (
23172322 memberFieldNode . Declaration . WithVariables (
@@ -2325,6 +2330,15 @@ .. memberFieldNode.Declaration.Variables.Select(variable =>
23252330 ) ;
23262331 }
23272332
2333+ if ( initializerAdded && ! hasConstructor )
2334+ {
2335+ members . Add (
2336+ ConstructorDeclaration ( node . Identifier )
2337+ . WithModifiers ( TokenList ( Token ( SyntaxKind . PublicKeyword ) ) )
2338+ . WithBody ( Block ( ) )
2339+ ) ;
2340+ }
2341+
23282342 node = node . WithMembers ( [ .. members ] ) ;
23292343
23302344 return node ;
You can’t perform that action at this time.
0 commit comments