Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.sdk2; | 5 library analyzer.src.generated.sdk2; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:io' as io; | 8 import 'dart:io' as io; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 void set useSummary(bool use) { | 109 void set useSummary(bool use) { |
| 110 if (_analysisContext != null) { | 110 if (_analysisContext != null) { |
| 111 throw new StateError( | 111 throw new StateError( |
| 112 'The "useSummary" flag cannot be changed after context creation.'); | 112 'The "useSummary" flag cannot be changed after context creation.'); |
| 113 } | 113 } |
| 114 _useSummary = use; | 114 _useSummary = use; |
| 115 } | 115 } |
| 116 | 116 |
| 117 @override | 117 @override |
| 118 Source fromFileUri(Uri uri) { | 118 Source fromFileUri(Uri uri) { |
| 119 File file = resourceProvider.getFile(uri.toFilePath(windows: false)); | 119 bool isWindows = resourceProvider.pathContext == pathos.windows; |
| 120 | 120 File file = resourceProvider.getFile(uri.toFilePath(windows: isWindows)); |
|
scheglov
2016/08/03 20:03:31
Maybe pathos.fromUri(uri) to avoid checking for Wi
Brian Wilkerson
2016/08/03 20:26:32
Done
| |
| 121 String path = _getPath(file); | 121 String path = _getPath(file); |
| 122 if (path == null) { | 122 if (path == null) { |
| 123 return null; | 123 return null; |
| 124 } | 124 } |
| 125 try { | 125 try { |
| 126 return file.createSource(parseUriWithException(path)); | 126 return file.createSource(parseUriWithException(path)); |
| 127 } on URISyntaxException catch (exception, stackTrace) { | 127 } on URISyntaxException catch (exception, stackTrace) { |
| 128 AnalysisEngine.instance.logger.logInformation( | 128 AnalysisEngine.instance.logger.logInformation( |
| 129 "Failed to create URI: $path", | 129 "Failed to create URI: $path", |
| 130 new CaughtException(exception, stackTrace)); | 130 new CaughtException(exception, stackTrace)); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 159 } | 159 } |
| 160 SdkLibrary library = getSdkLibrary(libraryName); | 160 SdkLibrary library = getSdkLibrary(libraryName); |
| 161 if (library == null) { | 161 if (library == null) { |
| 162 return null; | 162 return null; |
| 163 } | 163 } |
| 164 String srcPath; | 164 String srcPath; |
| 165 if (relativePath.isEmpty) { | 165 if (relativePath.isEmpty) { |
| 166 srcPath = library.path; | 166 srcPath = library.path; |
| 167 } else { | 167 } else { |
| 168 String libraryPath = library.path; | 168 String libraryPath = library.path; |
| 169 int index = libraryPath.lastIndexOf(resourceProvider.pathContext.separator ); | 169 int index = |
| 170 libraryPath.lastIndexOf(resourceProvider.pathContext.separator); | |
|
scheglov
2016/08/03 20:03:31
Maybe extract separator into a field or a getter t
Brian Wilkerson
2016/08/03 20:26:32
Done
| |
| 170 if (index == -1) { | 171 if (index == -1) { |
| 171 index = libraryPath.lastIndexOf('/'); | 172 index = libraryPath.lastIndexOf('/'); |
| 172 if (index == -1) { | 173 if (index == -1) { |
| 173 return null; | 174 return null; |
| 174 } | 175 } |
| 175 } | 176 } |
| 176 String prefix = libraryPath.substring(0, index + 1); | 177 String prefix = libraryPath.substring(0, index + 1); |
| 177 srcPath = '$prefix$relativePath'; | 178 srcPath = '$prefix$relativePath'; |
| 178 } | 179 } |
| 179 String filePath = srcPath.replaceAll('/', resourceProvider.pathContext.separ ator); | 180 String filePath = |
| 181 srcPath.replaceAll('/', resourceProvider.pathContext.separator); | |
| 180 try { | 182 try { |
| 181 File file = resourceProvider.getFile(filePath); | 183 File file = resourceProvider.getFile(filePath); |
| 182 return file.createSource(parseUriWithException(dartUri)); | 184 return file.createSource(parseUriWithException(dartUri)); |
| 183 } on URISyntaxException { | 185 } on URISyntaxException { |
| 184 return null; | 186 return null; |
| 185 } | 187 } |
| 186 } | 188 } |
| 187 | 189 |
| 188 @override | 190 @override |
| 189 Source mapDartUri(String dartUri) { | 191 Source mapDartUri(String dartUri) { |
| 190 Source source = _uriToSourceMap[dartUri]; | 192 Source source = _uriToSourceMap[dartUri]; |
| 191 if (source == null) { | 193 if (source == null) { |
| 192 source = internalMapDartUri(dartUri); | 194 source = internalMapDartUri(dartUri); |
| 193 _uriToSourceMap[dartUri] = source; | 195 _uriToSourceMap[dartUri] = source; |
| 194 } | 196 } |
| 195 return source; | 197 return source; |
| 196 } | 198 } |
| 197 | 199 |
| 198 String _getPath(File file) { | 200 String _getPath(File file) { |
| 199 List<SdkLibrary> libraries = libraryMap.sdkLibraries; | 201 List<SdkLibrary> libraries = libraryMap.sdkLibraries; |
| 200 int length = libraries.length; | 202 int length = libraries.length; |
| 201 List<String> paths = new List(length); | 203 List<String> paths = new List(length); |
| 202 String filePath = getRelativePathFromFile(file); | 204 String filePath = getRelativePathFromFile(file); |
| 203 if (filePath == null) { | 205 if (filePath == null) { |
| 204 return null; | 206 return null; |
| 205 } | 207 } |
| 206 for (int i = 0; i < length; i++) { | 208 for (int i = 0; i < length; i++) { |
| 207 SdkLibrary library = libraries[i]; | 209 SdkLibrary library = libraries[i]; |
| 208 String libraryPath = library.path.replaceAll('/', resourceProvider.pathCon text.separator); | 210 String libraryPath = |
| 211 library.path.replaceAll('/', resourceProvider.pathContext.separator); | |
| 209 if (filePath == libraryPath) { | 212 if (filePath == libraryPath) { |
| 210 return library.shortName; | 213 return library.shortName; |
| 211 } | 214 } |
| 212 paths[i] = libraryPath; | 215 paths[i] = libraryPath; |
| 213 } | 216 } |
| 214 for (int i = 0; i < length; i++) { | 217 for (int i = 0; i < length; i++) { |
| 215 SdkLibrary library = libraries[i]; | 218 SdkLibrary library = libraries[i]; |
| 216 String libraryPath = paths[i]; | 219 String libraryPath = paths[i]; |
| 217 int index = libraryPath.lastIndexOf(resourceProvider.pathContext.separator ); | 220 int index = |
| 221 libraryPath.lastIndexOf(resourceProvider.pathContext.separator); | |
| 218 if (index >= 0) { | 222 if (index >= 0) { |
| 219 String prefix = libraryPath.substring(0, index + 1); | 223 String prefix = libraryPath.substring(0, index + 1); |
| 220 if (filePath.startsWith(prefix)) { | 224 if (filePath.startsWith(prefix)) { |
| 221 String relPath = filePath | 225 String relPath = filePath |
| 222 .substring(prefix.length) | 226 .substring(prefix.length) |
| 223 .replaceAll(resourceProvider.pathContext.separator, '/'); | 227 .replaceAll(resourceProvider.pathContext.separator, '/'); |
| 224 return '${library.shortName}/$relPath'; | 228 return '${library.shortName}/$relPath'; |
| 225 } | 229 } |
| 226 } | 230 } |
| 227 } | 231 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 273 } | 277 } |
| 274 SdkLibrary library = getSdkLibrary(libraryName); | 278 SdkLibrary library = getSdkLibrary(libraryName); |
| 275 if (library == null) { | 279 if (library == null) { |
| 276 return null; | 280 return null; |
| 277 } | 281 } |
| 278 String srcPath; | 282 String srcPath; |
| 279 if (relativePath.isEmpty) { | 283 if (relativePath.isEmpty) { |
| 280 srcPath = library.path; | 284 srcPath = library.path; |
| 281 } else { | 285 } else { |
| 282 String libraryPath = library.path; | 286 String libraryPath = library.path; |
| 283 int index = libraryPath.lastIndexOf(resourceProvider.pathContext.separator ); | 287 int index = |
| 288 libraryPath.lastIndexOf(resourceProvider.pathContext.separator); | |
| 284 if (index == -1) { | 289 if (index == -1) { |
| 285 index = libraryPath.lastIndexOf('/'); | 290 index = libraryPath.lastIndexOf('/'); |
| 286 if (index == -1) { | 291 if (index == -1) { |
| 287 return null; | 292 return null; |
| 288 } | 293 } |
| 289 } | 294 } |
| 290 String prefix = libraryPath.substring(0, index + 1); | 295 String prefix = libraryPath.substring(0, index + 1); |
| 291 srcPath = '$prefix$relativePath'; | 296 srcPath = '$prefix$relativePath'; |
| 292 } | 297 } |
| 293 String filePath = srcPath.replaceAll('/', resourceProvider.pathContext.separ ator); | 298 String filePath = |
| 299 srcPath.replaceAll('/', resourceProvider.pathContext.separator); | |
| 294 try { | 300 try { |
| 295 File file = resourceProvider.getFile(filePath); | 301 File file = resourceProvider.getFile(filePath); |
| 296 return file.createSource(parseUriWithException(dartUri)); | 302 return file.createSource(parseUriWithException(dartUri)); |
| 297 } on URISyntaxException { | 303 } on URISyntaxException { |
| 298 return null; | 304 return null; |
| 299 } | 305 } |
| 300 } | 306 } |
| 301 | 307 |
| 302 /** | 308 /** |
| 303 * Install the mapping from [name] to [libDir]/[file]. | 309 * Install the mapping from [name] to [libDir]/[file]. |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 509 .getChildAssumingFile(_LIBRARIES_FILE); | 515 .getChildAssumingFile(_LIBRARIES_FILE); |
| 510 yield libraryDirectory | 516 yield libraryDirectory |
| 511 .getChildAssumingFolder(_INTERNAL_DIR) | 517 .getChildAssumingFolder(_INTERNAL_DIR) |
| 512 .getChildAssumingFile(_LIBRARIES_FILE); | 518 .getChildAssumingFile(_LIBRARIES_FILE); |
| 513 } | 519 } |
| 514 | 520 |
| 515 @override | 521 @override |
| 516 String getRelativePathFromFile(File file) { | 522 String getRelativePathFromFile(File file) { |
| 517 String filePath = file.path; | 523 String filePath = file.path; |
| 518 String libPath = libraryDirectory.path; | 524 String libPath = libraryDirectory.path; |
| 519 if (!filePath.startsWith("$libPath${resourceProvider.pathContext.separator}" )) { | 525 if (!filePath |
| 526 .startsWith("$libPath${resourceProvider.pathContext.separator}")) { | |
| 520 return null; | 527 return null; |
| 521 } | 528 } |
| 522 return filePath.substring(libPath.length + 1); | 529 return filePath.substring(libPath.length + 1); |
| 523 } | 530 } |
| 524 | 531 |
| 525 /** | 532 /** |
| 526 * Return the [PackageBundle] for this SDK, if it exists, or `null` otherwise. | 533 * Return the [PackageBundle] for this SDK, if it exists, or `null` otherwise. |
| 527 * This method should not be used outside of `analyzer` and `analyzer_cli` | 534 * This method should not be used outside of `analyzer` and `analyzer_cli` |
| 528 * packages. | 535 * packages. |
| 529 */ | 536 */ |
| 530 PackageBundle getSummarySdkBundle(bool strongMode) { | 537 PackageBundle getSummarySdkBundle(bool strongMode) { |
| 531 String rootPath = directory.path; | 538 String rootPath = directory.path; |
| 532 String name = strongMode ? 'strong.sum' : 'spec.sum'; | 539 String name = strongMode ? 'strong.sum' : 'spec.sum'; |
| 533 String path = resourceProvider.pathContext.join(rootPath, 'lib', '_internal' , name); | 540 String path = |
| 541 resourceProvider.pathContext.join(rootPath, 'lib', '_internal', name); | |
| 534 try { | 542 try { |
| 535 File file = resourceProvider.getFile(path); | 543 File file = resourceProvider.getFile(path); |
| 536 if (file.exists) { | 544 if (file.exists) { |
| 537 List<int> bytes = file.readAsBytesSync(); | 545 List<int> bytes = file.readAsBytesSync(); |
| 538 return new PackageBundle.fromBuffer(bytes); | 546 return new PackageBundle.fromBuffer(bytes); |
| 539 } | 547 } |
| 540 } catch (exception, stackTrace) { | 548 } catch (exception, stackTrace) { |
| 541 AnalysisEngine.instance.logger.logError( | 549 AnalysisEngine.instance.logger.logError( |
| 542 'Failed to load SDK analysis summary from $path', | 550 'Failed to load SDK analysis summary from $path', |
| 543 new CaughtException(exception, stackTrace)); | 551 new CaughtException(exception, stackTrace)); |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 691 SdkLibrariesReader_LibraryBuilder libraryBuilder = | 699 SdkLibrariesReader_LibraryBuilder libraryBuilder = |
| 692 new SdkLibrariesReader_LibraryBuilder(_useDart2jsPaths); | 700 new SdkLibrariesReader_LibraryBuilder(_useDart2jsPaths); |
| 693 // If any syntactic errors were found then don't try to visit the AST | 701 // If any syntactic errors were found then don't try to visit the AST |
| 694 // structure. | 702 // structure. |
| 695 if (!errorListener.errorReported) { | 703 if (!errorListener.errorReported) { |
| 696 unit.accept(libraryBuilder); | 704 unit.accept(libraryBuilder); |
| 697 } | 705 } |
| 698 return libraryBuilder.librariesMap; | 706 return libraryBuilder.librariesMap; |
| 699 } | 707 } |
| 700 } | 708 } |
| OLD | NEW |