Skip to content

Commit 0539933

Browse files
Fix lightweight root generation for generic roots and test language version
1 parent 893d736 commit 0539933

3 files changed

Lines changed: 35 additions & 33 deletions

File tree

src/Pure.DI.Core/Core/Code/Parts/LightweightRootClassBuilder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public CompositionCode Build(CompositionCode composition)
1212
{
1313
var roots = composition.PublicRoots
1414
.Where(i => i.Kind.HasFlag(RootKinds.Light))
15+
.Where(i => i.TypeDescription.TypeArgs.Count == 0)
1516
.Where(i => i.RootArgs.Length <= MaxFuncArgumentCount)
1617
.ToList();
1718
if (roots.Count == 0)

src/Pure.DI.Core/Core/Code/Parts/RootMethodsBuilder.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ private void BuildRoot(CompositionCode composition, Root root)
168168
if (root.Source.Kind.HasFlag(RootKinds.Light))
169169
{
170170
lines = new Lines();
171-
if (root.RootArgs.Length <= MaxFuncArgumentCount)
171+
if (root.TypeDescription.TypeArgs.Count == 0
172+
&& root.RootArgs.Length <= MaxFuncArgumentCount)
172173
{
173174
lines.AppendLine($"return {Names.LightweightRootName}.{root.Source.UniqueName}({string.Join(", ", root.RootArgs.Select(i => i.Name))});");
174175
}

tests/Pure.DI.IntegrationTests/LightweightRootsTests.cs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public static void Main()
5858
}
5959
}
6060
}
61-
""".RunAsync();
61+
""".RunAsync(new Options(LanguageVersion.Preview));
6262

6363
// Then
6464
result.Success.ShouldBeTrue(result);
@@ -120,7 +120,7 @@ public static void Main()
120120
}
121121
}
122122
}
123-
""".RunAsync();
123+
""".RunAsync(new Options(LanguageVersion.Preview));
124124

125125
// Then
126126
result.Success.ShouldBeTrue(result);
@@ -193,7 +193,7 @@ public static void Main()
193193
}
194194
}
195195
}
196-
""".RunAsync();
196+
""".RunAsync(new Options(LanguageVersion.Preview));
197197

198198
// Then
199199
result.Success.ShouldBeTrue(result);
@@ -232,7 +232,7 @@ static void Main()
232232
Console.WriteLine(composition.GetService("abc").Name);
233233
}
234234
}
235-
""".RunAsync();
235+
""".RunAsync(new Options(LanguageVersion.Preview));
236236

237237
// Then
238238
result.Success.ShouldBeTrue(result);
@@ -271,7 +271,7 @@ static void Main()
271271
Console.WriteLine(composition.GetService(42).Id);
272272
}
273273
}
274-
""".RunAsync();
274+
""".RunAsync(new Options(LanguageVersion.Preview));
275275

276276
// Then
277277
result.Success.ShouldBeTrue(result);
@@ -311,7 +311,7 @@ static void Main()
311311
Console.WriteLine(composition.GetService(new User("Bob")).Name);
312312
}
313313
}
314-
""".RunAsync();
314+
""".RunAsync(new Options(LanguageVersion.Preview));
315315

316316
// Then
317317
result.Success.ShouldBeTrue(result);
@@ -351,7 +351,7 @@ static void Main()
351351
Console.WriteLine(composition.Create(7, "Neo").Value);
352352
}
353353
}
354-
""".RunAsync();
354+
""".RunAsync(new Options(LanguageVersion.Preview));
355355

356356
// Then
357357
result.Success.ShouldBeTrue(result);
@@ -391,7 +391,7 @@ static void Main()
391391
Console.WriteLine(composition.Create(name: "Trinity", id: 9).Value);
392392
}
393393
}
394-
""".RunAsync();
394+
""".RunAsync(new Options(LanguageVersion.Preview));
395395

396396
// Then
397397
result.Success.ShouldBeTrue(result);
@@ -430,7 +430,7 @@ static void Main()
430430
Console.WriteLine(composition.Create("t-1").Token);
431431
}
432432
}
433-
""".RunAsync();
433+
""".RunAsync(new Options(LanguageVersion.Preview));
434434

435435
// Then
436436
result.Success.ShouldBeTrue(result);
@@ -473,7 +473,7 @@ static void Main()
473473
Console.WriteLine(composition.Create(1, "A").Value);
474474
}
475475
}
476-
""".RunAsync();
476+
""".RunAsync(new Options(LanguageVersion.Preview));
477477

478478
// Then
479479
result.Success.ShouldBeTrue(result);
@@ -511,7 +511,7 @@ static void Main()
511511
Console.WriteLine(composition.GetService<int>().Name);
512512
}
513513
}
514-
""".RunAsync(new Options(LanguageVersion.CSharp9));
514+
""".RunAsync(new Options(LanguageVersion.Preview));
515515

516516
// Then
517517
result.Success.ShouldBeTrue(result);
@@ -552,7 +552,7 @@ static void Main()
552552
Console.WriteLine(composition.GetService<int, string>().Name);
553553
}
554554
}
555-
""".RunAsync(new Options(LanguageVersion.CSharp9));
555+
""".RunAsync(new Options(LanguageVersion.Preview));
556556

557557
// Then
558558
result.Success.ShouldBeTrue(result);
@@ -596,7 +596,7 @@ static void Main()
596596
Console.WriteLine(composition.GetService<int>().Count);
597597
}
598598
}
599-
""".RunAsync(new Options(LanguageVersion.CSharp9));
599+
""".RunAsync(new Options(LanguageVersion.Preview));
600600

601601
// Then
602602
result.Success.ShouldBeTrue(result);
@@ -635,7 +635,7 @@ static void Main()
635635
Console.WriteLine(composition.GetService<RefType>().Name);
636636
}
637637
}
638-
""".RunAsync(new Options(LanguageVersion.CSharp9));
638+
""".RunAsync(new Options(LanguageVersion.Preview));
639639

640640
// Then
641641
result.Success.ShouldBeTrue(result);
@@ -673,7 +673,7 @@ static void Main()
673673
Console.WriteLine(composition.GetService<int>().Name);
674674
}
675675
}
676-
""".RunAsync(new Options(LanguageVersion.CSharp9));
676+
""".RunAsync(new Options(LanguageVersion.Preview));
677677

678678
// Then
679679
result.Success.ShouldBeTrue(result);
@@ -712,7 +712,7 @@ static void Main()
712712
Console.WriteLine(composition.GetService<RefType>().Size);
713713
}
714714
}
715-
""".RunAsync(new Options(LanguageVersion.CSharp9));
715+
""".RunAsync(new Options(LanguageVersion.Preview));
716716

717717
// Then
718718
result.Success.ShouldBeTrue(result);
@@ -751,7 +751,7 @@ static void Main()
751751
Console.WriteLine(composition.GetService<string>(5).Value);
752752
}
753753
}
754-
""".RunAsync(new Options(LanguageVersion.CSharp9));
754+
""".RunAsync(new Options(LanguageVersion.Preview));
755755

756756
// Then
757757
result.Success.ShouldBeTrue(result);
@@ -794,7 +794,7 @@ static void Main()
794794
Console.WriteLine(composition.GetService<int>(3, "A").Value);
795795
}
796796
}
797-
""".RunAsync(new Options(LanguageVersion.CSharp9));
797+
""".RunAsync(new Options(LanguageVersion.Preview));
798798

799799
// Then
800800
result.Success.ShouldBeTrue(result);
@@ -836,7 +836,7 @@ static void Main()
836836
Console.WriteLine(composition.GetService<int, string>("X").Value);
837837
}
838838
}
839-
""".RunAsync(new Options(LanguageVersion.CSharp9));
839+
""".RunAsync(new Options(LanguageVersion.Preview));
840840

841841
// Then
842842
result.Success.ShouldBeTrue(result);
@@ -879,7 +879,7 @@ static void Main()
879879
Console.WriteLine(composition.GetService<int, long>(5, "Q").Value);
880880
}
881881
}
882-
""".RunAsync(new Options(LanguageVersion.CSharp9));
882+
""".RunAsync(new Options(LanguageVersion.Preview));
883883

884884
// Then
885885
result.Success.ShouldBeTrue(result);
@@ -917,7 +917,7 @@ static void Main()
917917
Console.WriteLine(Composition.GetService(77).Id);
918918
}
919919
}
920-
""".RunAsync();
920+
""".RunAsync(new Options(LanguageVersion.Preview));
921921

922922
// Then
923923
result.Success.ShouldBeTrue(result);
@@ -954,7 +954,7 @@ static void Main()
954954
Console.WriteLine(Composition.GetService<decimal>().Name);
955955
}
956956
}
957-
""".RunAsync(new Options(LanguageVersion.CSharp9));
957+
""".RunAsync(new Options(LanguageVersion.Preview));
958958

959959
// Then
960960
result.Success.ShouldBeTrue(result);
@@ -993,7 +993,7 @@ static void Main()
993993
Console.WriteLine(composition.GetService(6).Id);
994994
}
995995
}
996-
""".RunAsync();
996+
""".RunAsync(new Options(LanguageVersion.Preview));
997997

998998
// Then
999999
result.Success.ShouldBeTrue(result);
@@ -1031,7 +1031,7 @@ static void Main()
10311031
Console.WriteLine(composition.GetService<Guid>().Name);
10321032
}
10331033
}
1034-
""".RunAsync(new Options(LanguageVersion.CSharp9));
1034+
""".RunAsync(new Options(LanguageVersion.Preview));
10351035

10361036
// Then
10371037
result.Success.ShouldBeTrue(result);
@@ -1070,7 +1070,7 @@ static void Main()
10701070
Console.WriteLine(composition.Create(4).Id);
10711071
}
10721072
}
1073-
""".RunAsync();
1073+
""".RunAsync(new Options(LanguageVersion.Preview));
10741074

10751075
// Then
10761076
result.Success.ShouldBeTrue(result);
@@ -1109,7 +1109,7 @@ static void Main()
11091109
Console.WriteLine(composition.Create(11).Id);
11101110
}
11111111
}
1112-
""".RunAsync();
1112+
""".RunAsync(new Options(LanguageVersion.Preview));
11131113

11141114
// Then
11151115
result.Success.ShouldBeTrue(result);
@@ -1150,7 +1150,7 @@ static void Main()
11501150
Console.WriteLine(composition.UsePrivate(12));
11511151
}
11521152
}
1153-
""".RunAsync();
1153+
""".RunAsync(new Options(LanguageVersion.Preview));
11541154

11551155
// Then
11561156
result.Success.ShouldBeTrue(result);
@@ -1194,7 +1194,7 @@ static void Main()
11941194
Console.WriteLine(composition.UseProtected(13));
11951195
}
11961196
}
1197-
""".RunAsync();
1197+
""".RunAsync(new Options(LanguageVersion.Preview));
11981198

11991199
// Then
12001200
result.Success.ShouldBeTrue(result);
@@ -1245,7 +1245,7 @@ static void Main()
12451245
Console.WriteLine(composition.Create(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1).Sum);
12461246
}
12471247
}
1248-
""".RunAsync();
1248+
""".RunAsync(new Options(LanguageVersion.Preview));
12491249

12501250
// Then
12511251
result.Success.ShouldBeTrue(result);
@@ -1283,7 +1283,7 @@ static void Main()
12831283
var service = composition.Create("wrong");
12841284
}
12851285
}
1286-
""".RunAsync(new Options(CheckCompilationErrors: false));
1286+
""".RunAsync(new Options(LanguageVersion.Preview, CheckCompilationErrors: false));
12871287

12881288
// Then
12891289
result.Success.ShouldBeFalse(result);
@@ -1320,7 +1320,7 @@ static void Main()
13201320
var service = composition.Create();
13211321
}
13221322
}
1323-
""".RunAsync(new Options(CheckCompilationErrors: false));
1323+
""".RunAsync(new Options(LanguageVersion.Preview, CheckCompilationErrors: false));
13241324

13251325
// Then
13261326
result.Success.ShouldBeFalse(result);
@@ -1356,7 +1356,7 @@ static void Main()
13561356
var service = composition.GetService<int>();
13571357
}
13581358
}
1359-
""".RunAsync(new Options(LanguageVersion.CSharp9, CheckCompilationErrors: false));
1359+
""".RunAsync(new Options(LanguageVersion.Preview, CheckCompilationErrors: false));
13601360

13611361
// Then
13621362
result.Success.ShouldBeFalse(result);

0 commit comments

Comments
 (0)