@@ -29,6 +29,7 @@ class LibraryManifest {
2929 final Map <LookupName , ExtensionItem > declaredExtensions;
3030 final Map <LookupName , ExtensionTypeItem > declaredExtensionTypes;
3131 final Map <LookupName , MixinItem > declaredMixins;
32+ final Map <LookupName , TypeAliasItem > declaredTypeAliases;
3233 final Map <LookupName , TopLevelGetterItem > declaredGetters;
3334 final Map <LookupName , TopLevelSetterItem > declaredSetters;
3435 final Map <LookupName , TopLevelFunctionItem > declaredFunctions;
@@ -41,6 +42,7 @@ class LibraryManifest {
4142 required this .declaredExtensions,
4243 required this .declaredExtensionTypes,
4344 required this .declaredMixins,
45+ required this .declaredTypeAliases,
4446 required this .declaredGetters,
4547 required this .declaredSetters,
4648 required this .declaredFunctions,
@@ -65,6 +67,9 @@ class LibraryManifest {
6567 declaredMixins: reader.readLookupNameMap (
6668 readValue: () => MixinItem .read (reader),
6769 ),
70+ declaredTypeAliases: reader.readLookupNameMap (
71+ readValue: () => TypeAliasItem .read (reader),
72+ ),
6873 declaredGetters: reader.readLookupNameMap (
6974 readValue: () => TopLevelGetterItem .read (reader),
7075 ),
@@ -89,6 +94,7 @@ class LibraryManifest {
8994 declaredExtensions,
9095 declaredExtensionTypes,
9196 declaredMixins,
97+ declaredTypeAliases,
9298 declaredGetters,
9399 declaredSetters,
94100 declaredFunctions,
@@ -107,6 +113,7 @@ class LibraryManifest {
107113 declaredExtensions[name]? .id ??
108114 declaredExtensionTypes[name]? .id ??
109115 declaredMixins[name]? .id ??
116+ declaredTypeAliases[name]? .id ??
110117 declaredGetters[name]? .id ??
111118 declaredSetters[name]? .id ??
112119 declaredFunctions[name]? .id ??
@@ -120,6 +127,7 @@ class LibraryManifest {
120127 declaredExtensions.write (sink);
121128 declaredExtensionTypes.write (sink);
122129 declaredMixins.write (sink);
130+ declaredTypeAliases.write (sink);
123131 declaredGetters.write (sink);
124132 declaredSetters.write (sink);
125133 declaredFunctions.write (sink);
@@ -654,6 +662,22 @@ class LibraryManifestBuilder {
654662 newItems[lookupName] = item;
655663 }
656664
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+
657681 /// Assert that every manifest can be serialized, and when deserialized
658682 /// results in the same manifest.
659683 bool _assertSerialization () {
@@ -690,6 +714,7 @@ class LibraryManifestBuilder {
690714 var newExtensionItems = < LookupName , ExtensionItem > {};
691715 var newExtensionTypeItems = < LookupName , ExtensionTypeItem > {};
692716 var newMixinItems = < LookupName , MixinItem > {};
717+ var newTypeAliasItems = < LookupName , TypeAliasItem > {};
693718 var newTopLevelGetters = < LookupName , TopLevelGetterItem > {};
694719 var newTopLevelSetters = < LookupName , TopLevelSetterItem > {};
695720 var newTopLevelFunctions = < LookupName , TopLevelFunctionItem > {};
@@ -765,8 +790,13 @@ class LibraryManifestBuilder {
765790 element: element,
766791 lookupName: lookupName,
767792 );
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+ );
770800 }
771801 }
772802
@@ -777,6 +807,7 @@ class LibraryManifestBuilder {
777807 declaredExtensions: newExtensionItems,
778808 declaredExtensionTypes: newExtensionTypeItems,
779809 declaredMixins: newMixinItems,
810+ declaredTypeAliases: newTypeAliasItems,
780811 declaredGetters: newTopLevelGetters,
781812 declaredSetters: newTopLevelSetters,
782813 declaredFunctions: newTopLevelFunctions,
@@ -956,6 +987,7 @@ class LibraryManifestBuilder {
956987 declaredExtensions: {},
957988 declaredExtensionTypes: {},
958989 declaredMixins: {},
990+ declaredTypeAliases: {},
959991 declaredGetters: {},
960992 declaredSetters: {},
961993 declaredFunctions: {},
@@ -1114,6 +1146,10 @@ class _LibraryMatch {
11141146 if (! _matchTopVariable (name: name, element: element)) {
11151147 structureMismatched.add (element);
11161148 }
1149+ case TypeAliasElementImpl2 ():
1150+ if (! _matchTypeAlias (name: name, element: element)) {
1151+ structureMismatched.add (element);
1152+ }
11171153 }
11181154 }
11191155 }
@@ -1527,4 +1563,23 @@ class _LibraryMatch {
15271563 _addMatchingElementItem (element, item, matchContext);
15281564 return true ;
15291565 }
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+ }
15301585}
0 commit comments