Skip to content

Commit ac0042b

Browse files
authored
fix code-gen of lazy (#18)
1 parent 82fa2b2 commit ac0042b

File tree

9 files changed

+246
-67
lines changed

9 files changed

+246
-67
lines changed

Assets/Samples/SampleScene.unity

Lines changed: 170 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,10 +322,46 @@ PrefabInstance:
322322
propertyPath: <IntValue>k__BackingField._value
323323
value: 123
324324
objectReference: {fileID: 0}
325+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
326+
propertyPath: <A>k__BackingField._field0._value
327+
value: 111
328+
objectReference: {fileID: 0}
329+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
330+
propertyPath: <A>k__BackingField._field1._value
331+
value: 222
332+
objectReference: {fileID: 0}
333+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
334+
propertyPath: <B>k__BackingField._field0._value
335+
value: 1
336+
objectReference: {fileID: 0}
337+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
338+
propertyPath: <B>k__BackingField._field3._value
339+
value: 123.321
340+
objectReference: {fileID: 0}
341+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
342+
propertyPath: <Vector2>k__BackingField._value.x
343+
value: 123
344+
objectReference: {fileID: 0}
345+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
346+
propertyPath: <Vector2>k__BackingField._value.y
347+
value: 123123
348+
objectReference: {fileID: 0}
349+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
350+
propertyPath: <BB>k__BackingField._field3._value
351+
value: 432321
352+
objectReference: {fileID: 0}
325353
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
326354
propertyPath: <IntValueRO>k__BackingField._value
327355
value: 321
328356
objectReference: {fileID: 0}
357+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
358+
propertyPath: <LazyInt>k__BackingField._value._value
359+
value: 321312
360+
objectReference: {fileID: 0}
361+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
362+
propertyPath: <Record>k__BackingField._field0._value
363+
value: 5423321
364+
objectReference: {fileID: 0}
329365
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
330366
propertyPath: IntB._field1._Value.Array.data[0]._value
331367
value: 2
@@ -346,6 +382,14 @@ PrefabInstance:
346382
propertyPath: dict._pairs.Array.data[1]._value.Key._value
347383
value: 111
348384
objectReference: {fileID: 0}
385+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
386+
propertyPath: <B>k__BackingField._field1._value.Array.size
387+
value: 2
388+
objectReference: {fileID: 0}
389+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
390+
propertyPath: <B>k__BackingField._field2._value.Array.size
391+
value: 1
392+
objectReference: {fileID: 0}
349393
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
350394
propertyPath: array._Value.Array.data[0]._Value.Array.size
351395
value: 2
@@ -362,6 +406,14 @@ PrefabInstance:
362406
propertyPath: <BB>k__BackingField._field0._value.Array.size
363407
value: 2
364408
objectReference: {fileID: 0}
409+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
410+
propertyPath: <BB>k__BackingField._field1._value.Array.size
411+
value: 2
412+
objectReference: {fileID: 0}
413+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
414+
propertyPath: <BB>k__BackingField._field2._value.Array.size
415+
value: 1
416+
objectReference: {fileID: 0}
365417
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
366418
propertyPath: dict._pairs.Array.data[0]._value.Value._value
367419
value: 321
@@ -375,12 +427,24 @@ PrefabInstance:
375427
value: 2
376428
objectReference: {fileID: 0}
377429
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
378-
propertyPath: <BB>k__BackingField._field0._value.Array.data[0]
430+
propertyPath: <B>k__BackingField._field1._value.Array.data[0]
431+
value: 2
432+
objectReference: {fileID: 0}
433+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
434+
propertyPath: <B>k__BackingField._field1._value.Array.data[1]
435+
value: 3
436+
objectReference: {fileID: 0}
437+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
438+
propertyPath: <AnyClassArray>k__BackingField._value.Array.size
379439
value: 1
380440
objectReference: {fileID: 0}
441+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
442+
propertyPath: <BB>k__BackingField._field0._value.Array.data[0]
443+
value: 6
444+
objectReference: {fileID: 0}
381445
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
382446
propertyPath: <BB>k__BackingField._field0._value.Array.data[1]
383-
value: 1
447+
value: 7
384448
objectReference: {fileID: 0}
385449
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
386450
propertyPath: <IntValueROWithoutBacking>k__BackingField._value
@@ -410,6 +474,10 @@ PrefabInstance:
410474
propertyPath: <DictionaryStringInt>k__BackingField._pairs.Array.size
411475
value: 2
412476
objectReference: {fileID: 0}
477+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
478+
propertyPath: <LazyIntArray>k__BackingField._value._value.Array.size
479+
value: 2
480+
objectReference: {fileID: 0}
413481
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
414482
propertyPath: array._Value.Array.data[0]._Value.Array.data[0]._value
415483
value: 123
@@ -442,6 +510,14 @@ PrefabInstance:
442510
propertyPath: dict._pairs.Array.data[1]._value.Value._pairs.Array.size
443511
value: 2
444512
objectReference: {fileID: 0}
513+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
514+
propertyPath: <LazyIntArray>k__BackingField._value._value.Array.data[0]
515+
value: 4321
516+
objectReference: {fileID: 0}
517+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
518+
propertyPath: <LazyIntArray>k__BackingField._value._value.Array.data[1]
519+
value: 5321
520+
objectReference: {fileID: 0}
445521
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
446522
propertyPath: IntB._field2._Value.Array.data[0]._Value.Array.data[0]._value
447523
value: 4
@@ -462,6 +538,10 @@ PrefabInstance:
462538
propertyPath: IntB._field2._Value.Array.data[1]._Value.Array.data[2]._value
463539
value: 8
464540
objectReference: {fileID: 0}
541+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
542+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.size
543+
value: 2
544+
objectReference: {fileID: 0}
465545
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
466546
propertyPath: LazyIntArrayArray._value._Value.Array.data[0]._Value.Array.size
467547
value: 2
@@ -470,6 +550,30 @@ PrefabInstance:
470550
propertyPath: LazyIntArrayArray._value._Value.Array.data[1]._Value.Array.size
471551
value: 3
472552
objectReference: {fileID: 0}
553+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
554+
propertyPath: <B>k__BackingField._field2._value.Array.data[0]._value.Array.size
555+
value: 2
556+
objectReference: {fileID: 0}
557+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
558+
propertyPath: <AnyClassArray>k__BackingField._value.Array.data[0]._field0._value
559+
value: 321
560+
objectReference: {fileID: 0}
561+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
562+
propertyPath: <AnyClassArray>k__BackingField._value.Array.data[0]._field1._value
563+
value: 123
564+
objectReference: {fileID: 0}
565+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
566+
propertyPath: <BB>k__BackingField._field1._value.Array.data[0]._value.Array.size
567+
value: 1
568+
objectReference: {fileID: 0}
569+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
570+
propertyPath: <BB>k__BackingField._field1._value.Array.data[1]._value.Array.size
571+
value: 1
572+
objectReference: {fileID: 0}
573+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
574+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.size
575+
value: 2
576+
objectReference: {fileID: 0}
473577
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
474578
propertyPath: <AnyClassArray3>k__BackingField._value.Array.data[0]._field0._value
475579
value: 123
@@ -494,6 +598,22 @@ PrefabInstance:
494598
propertyPath: <AnyIntArray3>k__BackingField._value.Array.data[1]._value.Array.size
495599
value: 2
496600
objectReference: {fileID: 0}
601+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
602+
propertyPath: <B>k__BackingField._field2._value.Array.data[0]._value.Array.data[0]
603+
value: 4
604+
objectReference: {fileID: 0}
605+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
606+
propertyPath: <B>k__BackingField._field2._value.Array.data[0]._value.Array.data[1]
607+
value: 5
608+
objectReference: {fileID: 0}
609+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
610+
propertyPath: <BB>k__BackingField._field1._value.Array.data[0]._value.Array.data[0]
611+
value: 4
612+
objectReference: {fileID: 0}
613+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
614+
propertyPath: <BB>k__BackingField._field1._value.Array.data[1]._value.Array.data[0]
615+
value: 5
616+
objectReference: {fileID: 0}
497617
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
498618
propertyPath: <AnyStringArray2>k__BackingField._value.Array.data[0]._value.Array.size
499619
value: 2
@@ -586,10 +706,26 @@ PrefabInstance:
586706
propertyPath: dict._pairs.Array.data[1]._value.Value._pairs.Array.data[1]._value.Value._value
587707
value: 32
588708
objectReference: {fileID: 0}
709+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
710+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[0]._field0._value
711+
value: 22222
712+
objectReference: {fileID: 0}
713+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
714+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[1]._field0._value
715+
value: 111
716+
objectReference: {fileID: 0}
589717
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
590718
propertyPath: <DictionaryStringDict>k__BackingField._pairs.Array.data[0]._field1._pairs.Array.size
591719
value: 1
592720
objectReference: {fileID: 0}
721+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
722+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.data[0]._value.Array.size
723+
value: 1
724+
objectReference: {fileID: 0}
725+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
726+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.data[1]._value.Array.size
727+
value: 2
728+
objectReference: {fileID: 0}
593729
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
594730
propertyPath: <AnyIntArray3>k__BackingField._value.Array.data[0]._value.Array.data[0]._value.Array.size
595731
value: 2
@@ -602,6 +738,26 @@ PrefabInstance:
602738
propertyPath: <AnyIntArray3>k__BackingField._value.Array.data[1]._value.Array.data[1]._value.Array.size
603739
value: 3
604740
objectReference: {fileID: 0}
741+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
742+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.data[0]._value.Array.data[0]
743+
value: 1
744+
objectReference: {fileID: 0}
745+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
746+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.data[1]._value.Array.data[0]
747+
value: 2
748+
objectReference: {fileID: 0}
749+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
750+
propertyPath: <BB>k__BackingField._field2._value.Array.data[0]._value.Array.data[1]._value.Array.data[1]
751+
value: 3
752+
objectReference: {fileID: 0}
753+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
754+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[0]._field1._value.Array.size
755+
value: 2
756+
objectReference: {fileID: 0}
757+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
758+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[1]._field1._value.Array.size
759+
value: 1
760+
objectReference: {fileID: 0}
605761
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
606762
propertyPath: <AnyIntArray3>k__BackingField._value.Array.data[0]._value.Array.data[0]._value.Array.data[0]
607763
value: 3
@@ -634,6 +790,18 @@ PrefabInstance:
634790
propertyPath: <AnyStringArray3>k__BackingField._value.Array.data[1]._value.Array.data[2]._value.Array.size
635791
value: 2
636792
objectReference: {fileID: 0}
793+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
794+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[0]._field1._value.Array.data[0]
795+
value: 4321
796+
objectReference: {fileID: 0}
797+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
798+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[0]._field1._value.Array.data[1]
799+
value: 4332321
800+
objectReference: {fileID: 0}
801+
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
802+
propertyPath: <LazyDictIntLongArray>k__BackingField._value._pairs.Array.data[1]._field1._value.Array.data[0]
803+
value: 123123
804+
objectReference: {fileID: 0}
637805
- target: {fileID: 7557180844171351634, guid: 681b0ad2a6efaca44a075ad58220d7d3, type: 3}
638806
propertyPath: <AnyStringArray3>k__BackingField._value.Array.data[1]._value.Array.data[2]._value.Array.data[0]
639807
value: 1

Assets/Samples/TestAnySerialize.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Linq;
34
using UnityEngine;
45

56

@@ -24,19 +25,26 @@ public class TestAnySerialize : MonoBehaviour
2425

2526
[AnySerialize] public R Record { get; }
2627

27-
// [AnySerialize] public Lazy<int> LazyInt { get; }
28-
//
29-
// [AnySerialize] public Lazy<int[]> LazyIntArray { get; }
30-
// [AnySerialize] public Lazy<Dictionary<int, long[]>> LazyDictIntLongArray { get; }
28+
[AnySerialize] public Lazy<int> LazyInt { get; }
3129

30+
[AnySerialize] public Lazy<int[]> LazyIntArray { get; }
31+
[AnySerialize] public Lazy<Dictionary<int, long[]>> LazyDictIntLongArray { get; }
32+
33+
#pragma warning disable UNT0001
34+
3235
private void Awake()
3336
{
3437
Debug.Log($"{nameof(IntValue)} = {IntValue}");
3538
Debug.Log($"{nameof(IntValueRO)} = {IntValueRO}");
3639
IntValue = IntValueRO;
3740
Debug.Log($"{nameof(IntValue)} = {IntValue}");
3841
Debug.Log($"{nameof(IntValueROWithoutBacking)} = {IntValueROWithoutBacking}");
42+
Debug.Log($"{nameof(DictionaryStringInt)} = {string.Join(",", DictionaryStringInt.Select(t => $"{t.Key}=>{t.Value}"))}");
43+
Debug.Log($"{nameof(DictionaryStringDict)} = {string.Join(",", DictionaryStringDict.Select(t => $"{t.Key}=>({string.Join(",", t.Value.Select(x => $"{x.Key}=>{x.Value}"))})"))}");
44+
Debug.Log($"{nameof(AnyStringArray2)} = {string.Join(",", AnyStringArray2.SelectMany(arr => arr))}");
3945
}
46+
47+
#pragma warning restore UNT0001
4048
}
4149

4250
public interface IB {}

Assets/Tests/AnySerialize/TestDefaultTypeSearcher.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
34
using AnyProcessor.CodeGen;
45
using AnyProcessor.Tests;
@@ -90,5 +91,11 @@ public void should_find_replace_type_for_dictionary_type()
9091
{
9192
AssertTypeEqual<ReadOnlyAnyDictionary<int, long, ReadOnlyAnyClass<AnyKeyValuePair<int, long>, int, long, AnyValue_Int32, AnyValue_Int64>>>(SearchReadOnly<Dictionary<int, long>>());
9293
}
94+
95+
[Test]
96+
public void should_find_replace_type_for_lazy_type()
97+
{
98+
AssertTypeEqual<ReadOnlyAnyLazy<int, AnyValue_Int32>>(SearchReadOnly<Lazy<int>>());
99+
}
93100
}
94101
}

0 commit comments

Comments
 (0)