@@ -29,6 +29,7 @@ class LibraryManifest {
29
29
final Map <LookupName , ExtensionItem > declaredExtensions;
30
30
final Map <LookupName , ExtensionTypeItem > declaredExtensionTypes;
31
31
final Map <LookupName , MixinItem > declaredMixins;
32
+ final Map <LookupName , TypeAliasItem > declaredTypeAliases;
32
33
final Map <LookupName , TopLevelGetterItem > declaredGetters;
33
34
final Map <LookupName , TopLevelSetterItem > declaredSetters;
34
35
final Map <LookupName , TopLevelFunctionItem > declaredFunctions;
@@ -41,6 +42,7 @@ class LibraryManifest {
41
42
required this .declaredExtensions,
42
43
required this .declaredExtensionTypes,
43
44
required this .declaredMixins,
45
+ required this .declaredTypeAliases,
44
46
required this .declaredGetters,
45
47
required this .declaredSetters,
46
48
required this .declaredFunctions,
@@ -65,6 +67,9 @@ class LibraryManifest {
65
67
declaredMixins: reader.readLookupNameMap (
66
68
readValue: () => MixinItem .read (reader),
67
69
),
70
+ declaredTypeAliases: reader.readLookupNameMap (
71
+ readValue: () => TypeAliasItem .read (reader),
72
+ ),
68
73
declaredGetters: reader.readLookupNameMap (
69
74
readValue: () => TopLevelGetterItem .read (reader),
70
75
),
@@ -89,6 +94,7 @@ class LibraryManifest {
89
94
declaredExtensions,
90
95
declaredExtensionTypes,
91
96
declaredMixins,
97
+ declaredTypeAliases,
92
98
declaredGetters,
93
99
declaredSetters,
94
100
declaredFunctions,
@@ -107,6 +113,7 @@ class LibraryManifest {
107
113
declaredExtensions[name]? .id ??
108
114
declaredExtensionTypes[name]? .id ??
109
115
declaredMixins[name]? .id ??
116
+ declaredTypeAliases[name]? .id ??
110
117
declaredGetters[name]? .id ??
111
118
declaredSetters[name]? .id ??
112
119
declaredFunctions[name]? .id ??
@@ -120,6 +127,7 @@ class LibraryManifest {
120
127
declaredExtensions.write (sink);
121
128
declaredExtensionTypes.write (sink);
122
129
declaredMixins.write (sink);
130
+ declaredTypeAliases.write (sink);
123
131
declaredGetters.write (sink);
124
132
declaredSetters.write (sink);
125
133
declaredFunctions.write (sink);
@@ -654,6 +662,22 @@ class LibraryManifestBuilder {
654
662
newItems[lookupName] = item;
655
663
}
656
664
665
+ void _addTypeAlias ({
666
+ required EncodeContext encodingContext,
667
+ required Map <LookupName , TypeAliasItem > newItems,
668
+ required TypeAliasElementImpl2 element,
669
+ required LookupName lookupName,
670
+ }) {
671
+ var item = _getOrBuildElementItem (element, () {
672
+ return TypeAliasItem .fromElement (
673
+ id: ManifestItemId .generate (),
674
+ context: encodingContext,
675
+ element: element,
676
+ );
677
+ });
678
+ newItems[lookupName] = item;
679
+ }
680
+
657
681
/// Assert that every manifest can be serialized, and when deserialized
658
682
/// results in the same manifest.
659
683
bool _assertSerialization () {
@@ -690,6 +714,7 @@ class LibraryManifestBuilder {
690
714
var newExtensionItems = < LookupName , ExtensionItem > {};
691
715
var newExtensionTypeItems = < LookupName , ExtensionTypeItem > {};
692
716
var newMixinItems = < LookupName , MixinItem > {};
717
+ var newTypeAliasItems = < LookupName , TypeAliasItem > {};
693
718
var newTopLevelGetters = < LookupName , TopLevelGetterItem > {};
694
719
var newTopLevelSetters = < LookupName , TopLevelSetterItem > {};
695
720
var newTopLevelFunctions = < LookupName , TopLevelFunctionItem > {};
@@ -765,8 +790,13 @@ class LibraryManifestBuilder {
765
790
element: element,
766
791
lookupName: lookupName,
767
792
);
768
-
769
- // TODO(scheglov): add remaining elements
793
+ case TypeAliasElementImpl2 ():
794
+ _addTypeAlias (
795
+ encodingContext: encodingContext,
796
+ newItems: newTypeAliasItems,
797
+ element: element,
798
+ lookupName: lookupName,
799
+ );
770
800
}
771
801
}
772
802
@@ -777,6 +807,7 @@ class LibraryManifestBuilder {
777
807
declaredExtensions: newExtensionItems,
778
808
declaredExtensionTypes: newExtensionTypeItems,
779
809
declaredMixins: newMixinItems,
810
+ declaredTypeAliases: newTypeAliasItems,
780
811
declaredGetters: newTopLevelGetters,
781
812
declaredSetters: newTopLevelSetters,
782
813
declaredFunctions: newTopLevelFunctions,
@@ -956,6 +987,7 @@ class LibraryManifestBuilder {
956
987
declaredExtensions: {},
957
988
declaredExtensionTypes: {},
958
989
declaredMixins: {},
990
+ declaredTypeAliases: {},
959
991
declaredGetters: {},
960
992
declaredSetters: {},
961
993
declaredFunctions: {},
@@ -1114,6 +1146,10 @@ class _LibraryMatch {
1114
1146
if (! _matchTopVariable (name: name, element: element)) {
1115
1147
structureMismatched.add (element);
1116
1148
}
1149
+ case TypeAliasElementImpl2 ():
1150
+ if (! _matchTypeAlias (name: name, element: element)) {
1151
+ structureMismatched.add (element);
1152
+ }
1117
1153
}
1118
1154
}
1119
1155
}
@@ -1527,4 +1563,23 @@ class _LibraryMatch {
1527
1563
_addMatchingElementItem (element, item, matchContext);
1528
1564
return true ;
1529
1565
}
1566
+
1567
+ bool _matchTypeAlias ({
1568
+ required LookupName ? name,
1569
+ required TypeAliasElementImpl2 element,
1570
+ }) {
1571
+ var item = manifest.declaredTypeAliases[name];
1572
+ if (item == null ) {
1573
+ return false ;
1574
+ }
1575
+
1576
+ var matchContext = MatchContext (parent: null );
1577
+ if (! item.match (matchContext, element)) {
1578
+ return false ;
1579
+ }
1580
+
1581
+ _addMatchingElementItem (element, item, matchContext);
1582
+
1583
+ return true ;
1584
+ }
1530
1585
}
0 commit comments