Skip to content

Commit 86eefe8

Browse files
LPEdwinNicholasBaumJKamsker
authored
Fix/2670 memoryextensions net10 followup (#2710)
* Add .NET 10 target framework to test project * Added support for Contains 3-parameter overload * Fix CI --------- Co-authored-by: NB <[email protected]> Co-authored-by: JKamsker <[email protected]>
1 parent 087bad0 commit 86eefe8

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

.github/workflows/_reusable-ci.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ on:
88
type: string
99
default: |
1010
[
11-
{ "display": ".NET 8", "sdk": "8.0.x", "framework": "net8.0", "includePrerelease": false },
12-
{ "display": ".NET 9", "sdk": "9.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true },
13-
{ "display": ".NET 10", "sdk": "10.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true }
11+
{ "display": ".NET 8", "sdk": "8.0.x", "framework": "net8.0", "includePrerelease": false, "msbuildProps": "" },
12+
{ "display": ".NET 9", "sdk": "9.0.x\n8.0.x", "framework": "net8.0", "includePrerelease": true, "msbuildProps": "" },
13+
{ "display": ".NET 10", "sdk": "10.0.x\n8.0.x", "framework": "net10.0", "includePrerelease": true, "msbuildProps": "-p:LiteDBTestsEnableNet10=true" }
1414
]
1515
1616
jobs:
@@ -79,6 +79,7 @@ jobs:
7979
--configuration Release
8080
--framework ${{ matrix.item.framework }}
8181
--no-dependencies
82+
${{ matrix.item.msbuildProps }}
8283
8384
- name: Run tests
8485
timeout-minutes: 5
@@ -91,6 +92,7 @@ jobs:
9192
--settings tests.runsettings
9293
--logger "trx;LogFileName=TestResults.trx"
9394
--logger "console;verbosity=detailed"
95+
${{ matrix.item.msbuildProps }}
9496
9597
repro-runner:
9698
runs-on: ubuntu-latest

LiteDB.Tests/LiteDB.Tests.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4+
<LiteDBTestsEnableNet10 Condition="'$(LiteDBTestsEnableNet10)' == ''">false</LiteDBTestsEnableNet10>
45
<TargetFrameworks>net461;net481;net8.0</TargetFrameworks>
6+
<TargetFrameworks Condition="'$(LiteDBTestsEnableNet10)' == 'true'">$(TargetFrameworks);net10.0</TargetFrameworks>
57
<LangVersion>latest</LangVersion>
68
<AssemblyName>LiteDB.Tests</AssemblyName>
79
<RootNamespace>LiteDB.Tests</RootNamespace>
@@ -64,4 +66,4 @@
6466
<ProjectReference Include="..\LiteDB\LiteDB.csproj" />
6567
</ItemGroup>
6668

67-
</Project>
69+
</Project>

LiteDB/Client/Mapper/Linq/TypeResolver/MemoryExtensionsResolver.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,21 @@ internal class MemoryExtensionsResolver : ITypeResolver
66
{
77
public string ResolveMethod(MethodInfo method)
88
{
9-
if (method.Name == nameof(System.MemoryExtensions.Contains))
9+
if (method.Name != nameof(System.MemoryExtensions.Contains))
10+
return null;
11+
var parameters = method.GetParameters();
12+
13+
if (parameters.Length == 2)
14+
{
15+
return "@0 ANY = @1";
16+
}
17+
18+
// Support the 3-parameter overload only when comparer defaults to null.
19+
if (parameters.Length == 3)
1020
{
11-
var parameters = method.GetParameters();
21+
var third = parameters[2];
1222

13-
if (parameters.Length == 2)
23+
if (third.HasDefaultValue && third.DefaultValue == null)
1424
{
1525
return "@0 ANY = @1";
1626
}

0 commit comments

Comments
 (0)