Skip to content

Commit 607f7ce

Browse files
authored
Auto-generate C# ModuleDef bindings from Rust (#1680)
1 parent 2cccac4 commit 607f7ce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1603
-508
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
**/module_bindings/** linguist-generated=true eol=lf
22
*.verified.cs linguist-generated=true eol=lf
3+
/crates/bindings-csharp/Runtime/Internal/Autogen/*.cs linguist-generated=true

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bindings-csharp/BSATN.Codegen/Type.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,10 @@ IEnumerable<MemberDeclaration> members
2727
}
2828

2929
public static string GenerateDefs(IEnumerable<MemberDeclaration> members) =>
30-
$$"""
31-
new SpacetimeDB.BSATN.AggregateElement[] {
32-
{{string.Join(
33-
",\n",
34-
members.Select(m => $"new(nameof({m.Name}), {m.Name}.GetAlgebraicType(registrar))")
35-
)}}
36-
}
37-
""";
30+
string.Join(
31+
",\n",
32+
members.Select(m => $"new(nameof({m.Name}), {m.Name}.GetAlgebraicType(registrar))")
33+
);
3834
}
3935

4036
public enum TypeKind
@@ -230,9 +226,9 @@ public void Write(System.IO.BinaryWriter writer, {{ShortName}} value) {
230226
}
231227
232228
public SpacetimeDB.BSATN.AlgebraicType GetAlgebraicType(SpacetimeDB.BSATN.ITypeRegistrar registrar) =>
233-
registrar.RegisterType<{{ShortName}}>(_ => new SpacetimeDB.BSATN.AlgebraicType.{{Kind}}(
229+
registrar.RegisterType<{{ShortName}}>(_ => new SpacetimeDB.BSATN.AlgebraicType.{{Kind}}(new SpacetimeDB.BSATN.AggregateElement[] {
234230
{{MemberDeclaration.GenerateDefs(Members)}}
235-
));
231+
}));
236232
}
237233
"""
238234
);

crates/bindings-csharp/Codegen.Tests/TestInit.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,17 @@ public static void Initialize()
2323
unformattedCode,
2424
new() { IncludeGenerated = true, EndOfLine = CSharpier.EndOfLine.LF }
2525
);
26+
sb.Append(result.Code);
27+
// Print errors in the end so that their line numbers are still meaningful.
2628
if (result.CompilationErrors.Any())
2729
{
30+
sb.AppendLine();
2831
sb.AppendLine("// Generated code produced compilation errors:");
2932
foreach (var diag in result.CompilationErrors)
3033
{
3134
sb.Append("// ").AppendLine(diag.ToString());
3235
}
33-
sb.AppendLine();
3436
}
35-
sb.Append(result.Code);
3637
},
3738
ScrubberLocation.Last
3839
);

crates/bindings-csharp/Codegen.Tests/fixtures/server/snapshots/Module#FFI.verified.cs

Lines changed: 12 additions & 47 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bindings-csharp/Codegen.Tests/fixtures/server/snapshots/Module#PrivateTable.verified.cs

Lines changed: 13 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)