Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Side by Side Diff: pkg/analyzer/lib/src/generated/gn.dart

Issue 2933753002: Run the sorter to reduce code churn (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.src.generated.gn; 5 library analyzer.src.generated.gn;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:core'; 8 import 'dart:core';
9 9
10 import 'package:analyzer/file_system/file_system.dart'; 10 import 'package:analyzer/file_system/file_system.dart';
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 Packages _packages; 58 Packages _packages;
59 59
60 GnWorkspace._(this.provider, this.root, this._packagesFilePaths); 60 GnWorkspace._(this.provider, this.root, this._packagesFilePaths);
61 61
62 @override 62 @override
63 Map<String, List<Folder>> get packageMap => 63 Map<String, List<Folder>> get packageMap =>
64 _packageMap ??= _convertPackagesToMap(packages); 64 _packageMap ??= _convertPackagesToMap(packages);
65 65
66 Packages get packages => _packages ??= _createPackages(); 66 Packages get packages => _packages ??= _createPackages();
67 67
68 @override
69 UriResolver get packageUriResolver =>
70 new PackageMapUriResolver(provider, packageMap);
71
72 @override
73 SourceFactory createSourceFactory(DartSdk sdk) {
74 List<UriResolver> resolvers = <UriResolver>[];
75 if (sdk != null) {
76 resolvers.add(new DartUriResolver(sdk));
77 }
78 resolvers.add(packageUriResolver);
79 resolvers.add(new ResourceUriResolver(provider));
80 return new SourceFactory(resolvers, packages, provider);
81 }
82
83 /**
84 * Return the file with the given [absolutePath].
85 *
86 * Return `null` if the given [absolutePath] is not in the workspace [root].
87 */
88 File findFile(String absolutePath) {
89 try {
90 File writableFile = provider.getFile(absolutePath);
91 if (writableFile.exists) {
92 return writableFile;
93 }
94 } catch (_) {}
95 return null;
96 }
97
68 /** 98 /**
69 * Creates an alternate representation for available packages. 99 * Creates an alternate representation for available packages.
70 */ 100 */
71 Map<String, List<Folder>> _convertPackagesToMap(Packages packages) { 101 Map<String, List<Folder>> _convertPackagesToMap(Packages packages) {
72 Map<String, List<Folder>> folderMap = new HashMap<String, List<Folder>>(); 102 Map<String, List<Folder>> folderMap = new HashMap<String, List<Folder>>();
73 if (packages != null && packages != Packages.noPackages) { 103 if (packages != null && packages != Packages.noPackages) {
74 packages.asMap().forEach((String packageName, Uri uri) { 104 packages.asMap().forEach((String packageName, Uri uri) {
75 String path = provider.pathContext.fromUri(uri); 105 String path = provider.pathContext.fromUri(uri);
76 folderMap[packageName] = [provider.getFolder(path)]; 106 folderMap[packageName] = [provider.getFolder(path)];
77 }); 107 });
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 for (String packageName in map.keys) { 145 for (String packageName in map.keys) {
116 Folder folder = provider.getFolder(pathContext.fromUri(map[packageName])); 146 Folder folder = provider.getFolder(pathContext.fromUri(map[packageName]));
117 String folderPath = _resolveSymbolicLink(folder); 147 String folderPath = _resolveSymbolicLink(folder);
118 // Add a '.' so that the URI is suitable for resolving relative URI's 148 // Add a '.' so that the URI is suitable for resolving relative URI's
119 // against it. 149 // against it.
120 String uriPath = pathContext.join(folderPath, '.'); 150 String uriPath = pathContext.join(folderPath, '.');
121 map[packageName] = pathContext.toUri(uriPath); 151 map[packageName] = pathContext.toUri(uriPath);
122 } 152 }
123 } 153 }
124 154
125 @override 155 /**
126 UriResolver get packageUriResolver => 156 * Find the GN workspace that contains the given [path].
127 new PackageMapUriResolver(provider, packageMap); 157 *
158 * Return `null` if a workspace could not be found.
159 */
160 static GnWorkspace find(ResourceProvider provider, String path) {
161 Context context = provider.pathContext;
128 162
129 @override 163 // Ensure that the path is absolute and normalized.
130 SourceFactory createSourceFactory(DartSdk sdk) { 164 if (!context.isAbsolute(path)) {
131 List<UriResolver> resolvers = <UriResolver>[]; 165 throw new ArgumentError('Not an absolute path: $path');
132 if (sdk != null) {
133 resolvers.add(new DartUriResolver(sdk));
134 } 166 }
135 resolvers.add(packageUriResolver); 167 path = context.normalize(path);
136 resolvers.add(new ResourceUriResolver(provider)); 168
137 return new SourceFactory(resolvers, packages, provider); 169 Folder folder = provider.getFolder(path);
170 while (true) {
171 Folder parent = folder.parent;
172 if (parent == null) {
173 return null;
174 }
175
176 // Found the .jiri_root file, must be a non-git workspace.
177 if (folder.getChildAssumingFolder(_jiriRootName).exists) {
178 String root = folder.path;
179 List<String> packagesFiles =
180 _findPackagesFile(provider, root, path, forHost: false);
181 if (packagesFiles.isEmpty) {
182 packagesFiles =
183 _findPackagesFile(provider, root, path, forHost: true);
184 }
185 if (packagesFiles.isEmpty) {
186 return null;
187 }
188 return new GnWorkspace._(provider, path, packagesFiles);
189 }
190
191 // Go up the folder.
192 folder = parent;
193 }
138 } 194 }
139 195
140 /** 196 /**
141 * Return the file with the given [absolutePath].
142 *
143 * Return `null` if the given [absolutePath] is not in the workspace [root].
144 */
145 File findFile(String absolutePath) {
146 try {
147 File writableFile = provider.getFile(absolutePath);
148 if (writableFile.exists) {
149 return writableFile;
150 }
151 } catch (_) {}
152 return null;
153 }
154
155 /**
156 * For a source at `$root/foo/bar`, the packages files are generated in 197 * For a source at `$root/foo/bar`, the packages files are generated in
157 * `$root/out/<debug|release>-XYZ/[hostABC/]gen/foo/bar`. 198 * `$root/out/<debug|release>-XYZ/[hostABC/]gen/foo/bar`.
158 * 199 *
159 * Note that in some cases multiple .packages files can be found at that 200 * Note that in some cases multiple .packages files can be found at that
160 * location, for example if the package contains both a library and a binary 201 * location, for example if the package contains both a library and a binary
161 * target. 202 * target.
162 */ 203 */
163 static List<String> _findPackagesFile( 204 static List<String> _findPackagesFile(
164 ResourceProvider provider, String root, String path, 205 ResourceProvider provider, String root, String path,
165 {forHost: false}) { 206 {forHost: false}) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 return const <String>[]; 241 return const <String>[];
201 } 242 }
202 return genDir 243 return genDir
203 .getChildren() 244 .getChildren()
204 .where((resource) => resource is File) 245 .where((resource) => resource is File)
205 .map((resource) => resource as File) 246 .map((resource) => resource as File)
206 .where((File file) => pathContext.extension(file.path) == '.packages') 247 .where((File file) => pathContext.extension(file.path) == '.packages')
207 .map((File file) => file.path) 248 .map((File file) => file.path)
208 .toList(); 249 .toList();
209 } 250 }
210
211 /**
212 * Find the GN workspace that contains the given [path].
213 *
214 * Return `null` if a workspace could not be found.
215 */
216 static GnWorkspace find(ResourceProvider provider, String path) {
217 Context context = provider.pathContext;
218
219 // Ensure that the path is absolute and normalized.
220 if (!context.isAbsolute(path)) {
221 throw new ArgumentError('Not an absolute path: $path');
222 }
223 path = context.normalize(path);
224
225 Folder folder = provider.getFolder(path);
226 while (true) {
227 Folder parent = folder.parent;
228 if (parent == null) {
229 return null;
230 }
231
232 // Found the .jiri_root file, must be a non-git workspace.
233 if (folder.getChildAssumingFolder(_jiriRootName).exists) {
234 String root = folder.path;
235 List<String> packagesFiles =
236 _findPackagesFile(provider, root, path, forHost: false);
237 if (packagesFiles.isEmpty) {
238 packagesFiles =
239 _findPackagesFile(provider, root, path, forHost: true);
240 }
241 if (packagesFiles.isEmpty) {
242 return null;
243 }
244 return new GnWorkspace._(provider, path, packagesFiles);
245 }
246
247 // Go up the folder.
248 folder = parent;
249 }
250 }
251 } 251 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/scanner/scanner.dart ('k') | pkg/analyzer/lib/src/generated/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698