@@ -30,10 +30,12 @@ abstract class SyntheticBuilder<S extends SyntheticInput> implements Builder {
3030 this .header = '' ,
3131 this .footer = '' ,
3232 Formatter ? formatter,
33- }) : formatter = formatter ??
34- DartFormatter (languageVersion: DartFormatter .latestLanguageVersion)
35- .format,
36- syntheticInput = SyntheticInput .instance <S >();
33+ }) : formatter =
34+ formatter ??
35+ DartFormatter (
36+ languageVersion: DartFormatter .latestLanguageVersion,
37+ ).format,
38+ syntheticInput = SyntheticInput .instance <S >();
3739
3840 /// Input files. Specify the complete path relative to the
3941 /// root directory.
@@ -70,7 +72,8 @@ abstract class SyntheticBuilder<S extends SyntheticInput> implements Builder {
7072 // Add header to buffer.
7173 // Expand header:
7274 final buffer = StringBuffer (
73- '// GENERATED CODE. DO NOT MODIFY. $generatedBy \n\n $header ' );
75+ '// GENERATED CODE. DO NOT MODIFY. $generatedBy \n\n $header ' ,
76+ );
7477 buffer.writeln ();
7578
7679 source.trim ();
@@ -98,14 +101,16 @@ abstract class SyntheticBuilder<S extends SyntheticInput> implements Builder {
98101 return result;
99102 }
100103
101- /// Returns a ordered set of library asset ids ordered in reverse topological
104+ /// Returns an ordered set of library asset ids ordered in reverse topological
102105 /// dependency order.
103106 /// * If a file B includes a file A, then A will be appear
104107 /// before B.
105108 /// * Throws [ErrorOf] if a dependency cycle is detected.
106109 Future <Set <AssetId >> orderedLibraryAssetIds (BuildStep buildStep) async {
107- final assetGraph =
108- DirectedGraph <AssetId >({}, comparator: ((v1, v2) => - v1.compareTo (v2)));
110+ final assetGraph = DirectedGraph <AssetId >(
111+ {},
112+ comparator: ((v1, v2) => - v1.compareTo (v2)),
113+ );
109114
110115 // An assetId map of all input libraries with the uri as key.
111116 final assetMap = < Uri , AssetId > {};
@@ -120,26 +125,30 @@ abstract class SyntheticBuilder<S extends SyntheticInput> implements Builder {
120125 }
121126
122127 for (final assetId in assetGraph) {
123- final importedAsseIds = < AssetId > {};
128+ final importedAssetIds = < AssetId > {};
124129
125130 // Read library.
126131 final library = await buildStep.resolver.libraryFor (assetId);
127- // Get dependencies
128- for (final import in library.importedLibraries) {
129- final uri = Uri .parse (import.source.uri.toString ());
130- // Skip if uri scheme is not "package" or "asset".
131- if (uri.scheme == 'package' ||
132- uri.scheme == 'asset' ||
133- uri.scheme == '' ) {
134- // Normalise uri to handle relative and package import directives.
135- final importedAssetId = AssetId .resolve (uri, from: assetId);
136- // Add vertex matching import directive.
137- if (assetMap[importedAssetId.uri] != null ) {
138- importedAsseIds.add (assetMap[importedAssetId.uri]! );
132+
133+ for (final fragment in library.fragments) {
134+ for (final import in fragment.importedLibraries) {
135+ //final uri = Uri.parse(import.source.uri.toString());
136+ // TODO:Iterate over all fragments.
137+ final uri = import.uri;
138+ // Skip if uri scheme is not "package" or "asset".
139+ if (uri.scheme == 'package' ||
140+ uri.scheme == 'asset' ||
141+ uri.scheme == '' ) {
142+ // Normalise uri to handle relative and package import directives.
143+ final importedAssetId = AssetId .resolve (uri, from: assetId);
144+ // Add vertex matching import directive.
145+ if (assetMap[importedAssetId.uri] != null ) {
146+ importedAssetIds.add (assetMap[importedAssetId.uri]! );
147+ }
139148 }
140149 }
141150 }
142- assetGraph.addEdges (assetId, importedAsseIds );
151+ assetGraph.addEdges (assetId, importedAssetIds );
143152 }
144153
145154 final topologicalOrdering = assetGraph.sortedTopologicalOrdering;
@@ -149,10 +158,12 @@ abstract class SyntheticBuilder<S extends SyntheticInput> implements Builder {
149158 final cycle = assetGraph.cycle;
150159
151160 throw ErrorOf <SyntheticBuilder >(
152- message: 'Circular dependency detected.' ,
153- expectedState: 'Input files must not include each other. '
154- 'Alternatively, set constructor parameter "sortAssets: false".' ,
155- invalidState: 'File ${cycle .join (' imports ' )}.' );
161+ message: 'Circular dependency detected.' ,
162+ expectedState:
163+ 'Input files must not include each other. '
164+ 'Alternatively, set constructor parameter "sortAssets: false".' ,
165+ invalidState: 'File ${cycle .join (' imports ' )}.' ,
166+ );
156167 }
157168
158169 // Return reversed topological ordering of asset ids.
0 commit comments