Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
52f27ce
Update docs with C# Query Builder use of `Query` and `Build()`
rekhoff Feb 22, 2026
834e1d2
Removes references to `.Build()` for Query Builder inputs
rekhoff Feb 22, 2026
ece8aed
Removed changes to `IQuery` in C# documentation
rekhoff Feb 23, 2026
3b9892f
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 23, 2026
8ca7174
Updated `00500-cheat-sheet.md` with current API
rekhoff Feb 23, 2026
092aa36
Adds test validating error from return of `IEnumerable` from `Iter` o…
rekhoff Feb 23, 2026
7a9c921
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 23, 2026
a8b112c
Revert `Query` to `IQuery` in `00500-views.md`
rekhoff Feb 23, 2026
b60c759
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 23, 2026
24cba01
Update lints
rekhoff Feb 24, 2026
06c9258
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 24, 2026
73199b3
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 24, 2026
fc5fdf5
Removes mention of `Query<T>` in `llms.md`
rekhoff Feb 24, 2026
18d33c1
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 24, 2026
a691ba9
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 24, 2026
2e1301d
Updated to use non-unique index for `Filter` in `Codegen.Tests`
rekhoff Feb 25, 2026
ffe8644
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 25, 2026
2e4d6d8
Update lints
rekhoff Feb 25, 2026
d14f368
Updated snapshot
rekhoff Feb 25, 2026
ef963fd
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 25, 2026
be7f60f
Merge branch 'master' into rekhoff/docs-csharp-query-build-update
rekhoff Feb 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions crates/bindings-csharp/Codegen.Tests/fixtures/diag/Lib.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.ComponentModel;
using SpacetimeDB;

Expand Down Expand Up @@ -554,20 +555,36 @@ public static List<Player> ViewDefWrongContext(ReducerContext ctx)
}

// TODO: Investigate why void return breaks the FFI generation
// // Invalid: Void return type is not Vec<T> or Option<T>
// // Invalid: Void return type is not List<T> or T?
// [SpacetimeDB.View(Accessor = "view_def_no_return", Public = true)]
// public static void ViewDefNoReturn(ViewContext ctx)
// {
// return;
// }

// Invalid: Wrong return type is not Vec<T> or Option<T>
// Invalid: Wrong return type is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_wrong_return", Public = true)]
public static Player ViewDefWrongReturn(ViewContext ctx)
{
return new Player { Identity = new() };
}

// Invalid: IEnumerable<T> return type (from Iter()) is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_iter", Public = true)]
public static IEnumerable<Player> ViewDefIEnumerableReturnFromIter(ViewContext ctx)
{
return ctx.Db.Player.Iter();
}

// Invalid: IEnumerable<T> return type (from Filter()) is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_filter", Public = true)]
public static IEnumerable<TestScheduleIssues> ViewDefIEnumerableReturnFromFilter(
ViewContext ctx
)
{
return ctx.Db.TestIndexIssues.TestUnexpectedColumns.Filter(0);
}

// Invalid: Returns type that is not a SpacetimeType
[SpacetimeDB.View(Accessor = "view_def_returns_not_a_spacetime_type", Public = true)]
public static NotSpacetimeType? ViewDefReturnsNotASpacetimeType(AnonymousViewContext ctx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,29 @@ SpacetimeDB.Internal.Module.RegisterClientVisibilityFilter(global::Module.MY_FOU
]
}
},
{/*
{
return ctx.Db.Player.Iter();
^^^^
}
*/
Message: 'PlayerReadOnly' does not contain a definition for 'Iter' and no accessible extension method 'Iter' accepting a first argument of type 'PlayerReadOnly' could be found (are you missing a using directive or an assembly reference?),
Severity: Error,
Descriptor: {
Id: CS1061,
Title: ,
HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS1061),
MessageFormat: '{0}' does not contain a definition for '{1}' and no accessible extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?),
Category: Compiler,
DefaultSeverity: Error,
IsEnabledByDefault: true,
CustomTags: [
Compiler,
Telemetry,
NotConfigurable
]
}
},
{/*
{
ctx.Db.Player.Iter();
Expand Down Expand Up @@ -275,6 +298,29 @@ SpacetimeDB.Internal.Module.RegisterClientVisibilityFilter(global::Module.MY_THI
]
}
},
{/*
{
return ctx.Db.TestIndexIssues.TestUnexpectedColumns.Filter(0);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
*/
Message: Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<TestIndexIssues>' to 'System.Collections.Generic.IEnumerable<TestScheduleIssues>'. An explicit conversion exists (are you missing a cast?),
Severity: Error,
Descriptor: {
Id: CS0266,
Title: ,
HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS0266),
MessageFormat: Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?),
Category: Compiler,
DefaultSeverity: Error,
IsEnabledByDefault: true,
CustomTags: [
Compiler,
Telemetry,
NotConfigurable
]
}
},
{/*

var returnValue = Module.ViewDefNoContext((SpacetimeDB.ViewContext)ctx);
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ public partial struct TestScheduleIssues
}
},
{/*
// Invalid: Wrong return type is not Vec<T> or Option<T>
// Invalid: Wrong return type is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_wrong_return", Public = true)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
public static Player ViewDefWrongReturn(ViewContext ctx)
Expand All @@ -355,6 +355,94 @@ public partial struct TestScheduleIssues
}
},
{/*
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_iter", Public = true)]
public static IEnumerable<Player> ViewDefIEnumerableReturnFromIter(ViewContext ctx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
*/
Message: BSATN implementation for System.Collections.Generic.IEnumerable<Player> is not found: Unsupported system type System.Collections.Generic.IEnumerable<T>,
Severity: Error,
Descriptor: {
Id: BSATN0001,
Title: Unsupported type,
MessageFormat: BSATN implementation for {0} is not found: {1},
Category: SpacetimeDB.BSATN,
DefaultSeverity: Error,
IsEnabledByDefault: true
}
},
{/*
// Invalid: IEnumerable<T> return type (from Iter()) is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_iter", Public = true)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
public static IEnumerable<Player> ViewDefIEnumerableReturnFromIter(ViewContext ctx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
^^^^^
return ctx.Db.Player.Iter();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
^^^^^

*/
Message: View 'ViewDefIEnumerableReturnFromIter' must return Vec<T> or Option<T>.,
Severity: Error,
Descriptor: {
Id: STDB0024,
Title: Views must return Vec<T> or Option<T>,
MessageFormat: View '{0}' must return Vec<T> or Option<T>.,
Category: SpacetimeDB,
DefaultSeverity: Error,
IsEnabledByDefault: true
}
},
{/*
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_filter", Public = true)]
public static IEnumerable<TestScheduleIssues> ViewDefIEnumerableReturnFromFilter(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ViewContext ctx
*/
Message: BSATN implementation for System.Collections.Generic.IEnumerable<TestScheduleIssues> is not found: Unsupported system type System.Collections.Generic.IEnumerable<T>,
Severity: Error,
Descriptor: {
Id: BSATN0001,
Title: Unsupported type,
MessageFormat: BSATN implementation for {0} is not found: {1},
Category: SpacetimeDB.BSATN,
DefaultSeverity: Error,
IsEnabledByDefault: true
}
},
{/*
// Invalid: IEnumerable<T> return type (from Filter()) is not List<T> or T?
[SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_filter", Public = true)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
public static IEnumerable<TestScheduleIssues> ViewDefIEnumerableReturnFromFilter(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ViewContext ctx
^^^^^^^^^^^^^^^^^^^^^^^
)
^^^^^
{
^^^^^
return ctx.Db.TestIndexIssues.TestUnexpectedColumns.Filter(0);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
^^^^^

*/
Message: View 'ViewDefIEnumerableReturnFromFilter' must return Vec<T> or Option<T>.,
Severity: Error,
Descriptor: {
Id: STDB0024,
Title: Views must return Vec<T> or Option<T>,
MessageFormat: View '{0}' must return Vec<T> or Option<T>.,
Category: SpacetimeDB,
DefaultSeverity: Error,
IsEnabledByDefault: true
}
},
{/*
[SpacetimeDB.Reducer]
public static int TestReducerReturnType(ReducerContext ctx) => 0;
^^^
Expand Down
Loading
Loading