Move Bound struct out of SpacetimeDB.Internal to SpacetimeDB and Local out of SpacetiemDB.Runtime
#3996
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Changes
This PR fixes a C# SDK regression where using
Boundin index filters could trigger an ambiguous reference compiler error for Local after upgrading tov1.11.2, as reported in #3995.It also fixes a related warning-spam regression (
CS0436) where user projects could seeLocaltype conflicts between generated module code and theSpacetimeDB.Runtimeassembly.SpacetimeDB.Boundtype so users no longer need to importSpacetimeDB.Internalto use bounds in index filters.SpacetimeDB.Internal.Boundfor compatibility, but added implicit conversions betweenSpacetimeDB.Internal.BoundandSpacetimeDB.Bound.global::SpacetimeDB.Boundin generated index filter signatures, avoidingSpacetimeDB.Internalin public-facing APIs and preventing name collisions (e.g.,Local).BTreeIndexBounds<...>) to explicitly useSpacetimeDB.Boundwhen constructing range-scan arguments.ITableViewstatic abstractmember implementations to generatepublic staticmethods (required for the generated code to compile).It also fixes a related warning-spam regression (CS0436) where user projects could see Local type conflicts between generated module code and the SpacetimeDB.Runtime assembly.
Additional fix (related to the
Localreports):SpacetimeDB.Local(introduced more recently than the generated moduleLocal) to preventCS0436duplicate-type warnings. Basically, the runtime’s concreteLocal/ProcedureTxContexthelpers were renamed and made internal so the code generator remains the sole owner of module-levelSpacetimeDB.Local.Regression coverage:
global::SpacetimeDB.Internal.Bound<...>and does referenceglobal::SpacetimeDB.Bound<...>.SpacetimeDB.Boundexists and is public in the runtime reference.SpacetimeDB.Runtimedoes not define codegen-owned types (e.g.SpacetimeDB.Local,ProcedureContext, etc.) to prevent futureCS0436conflicts.CS0436diagnostics occur when user code referencesSpacetimeDB.Local.API and ABI breaking changes
None.
SpacetimeDB.Internal.Boundremains usable via implicit conversions (backwards compatible for existing code).Expected complexity level and risk
2 - Low
Testing
dotnet test crates/bindings-csharp/Codegen.Tests/Codegen.Tests.csproj