diff --git a/.github/workflows/_reusable-ci.yml b/.github/workflows/_reusable-ci.yml index 14591d8af..4761c3696 100644 --- a/.github/workflows/_reusable-ci.yml +++ b/.github/workflows/_reusable-ci.yml @@ -8,9 +8,9 @@ on: type: string default: | [ - { "display": ".NET 8", "sdk": "8.0.x", "framework": "net8.0", "includePrerelease": false }, - { "display": ".NET 9", "sdk": "9.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true }, - { "display": ".NET 10", "sdk": "10.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true } + { "display": ".NET 8", "sdk": "8.0.x", "framework": "net8.0", "includePrerelease": false, "msbuildProps": "" }, + { "display": ".NET 9", "sdk": "9.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true, "msbuildProps": "" }, + { "display": ".NET 10", "sdk": "10.0.x\n8.0.x", "framework": "net10.0", "includePrerelease": true, "msbuildProps": "-p:LiteDBTestsEnableNet10=true" } ] jobs: @@ -79,6 +79,7 @@ jobs: --configuration Release --framework ${{ matrix.item.framework }} --no-dependencies + ${{ matrix.item.msbuildProps }} - name: Run tests timeout-minutes: 5 @@ -91,6 +92,7 @@ jobs: --settings tests.runsettings --logger "trx;LogFileName=TestResults.trx" --logger "console;verbosity=detailed" + ${{ matrix.item.msbuildProps }} repro-runner: runs-on: ubuntu-latest diff --git a/LiteDB.Tests/LiteDB.Tests.csproj b/LiteDB.Tests/LiteDB.Tests.csproj index 79a10353e..bc979ab36 100644 --- a/LiteDB.Tests/LiteDB.Tests.csproj +++ b/LiteDB.Tests/LiteDB.Tests.csproj @@ -1,7 +1,9 @@  + false net461;net481;net8.0 + $(TargetFrameworks);net10.0 latest LiteDB.Tests LiteDB.Tests @@ -64,4 +66,4 @@ - \ No newline at end of file + diff --git a/LiteDB/Client/Mapper/Linq/TypeResolver/MemoryExtensionsResolver.cs b/LiteDB/Client/Mapper/Linq/TypeResolver/MemoryExtensionsResolver.cs index b7f2c39c6..f147e2fbb 100644 --- a/LiteDB/Client/Mapper/Linq/TypeResolver/MemoryExtensionsResolver.cs +++ b/LiteDB/Client/Mapper/Linq/TypeResolver/MemoryExtensionsResolver.cs @@ -6,11 +6,21 @@ internal class MemoryExtensionsResolver : ITypeResolver { public string ResolveMethod(MethodInfo method) { - if (method.Name == nameof(System.MemoryExtensions.Contains)) + if (method.Name != nameof(System.MemoryExtensions.Contains)) + return null; + var parameters = method.GetParameters(); + + if (parameters.Length == 2) + { + return "@0 ANY = @1"; + } + + // Support the 3-parameter overload only when comparer defaults to null. + if (parameters.Length == 3) { - var parameters = method.GetParameters(); + var third = parameters[2]; - if (parameters.Length == 2) + if (third.HasDefaultValue && third.DefaultValue == null) { return "@0 ANY = @1"; }