| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 // This code was auto-generated, is not intended to be edited, and is subject to | |
| 6 // significant change. Please see the README file for more information. | |
| 7 | |
| 8 library engine.source; | 5 library engine.source; |
| 9 | 6 |
| 10 import 'dart:collection'; | 7 import 'dart:collection'; |
| 11 import "dart:math" as math; | 8 import "dart:math" as math; |
| 12 | 9 |
| 13 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
| 14 import 'package:analyzer/file_system/physical_file_system.dart'; | 11 import 'package:analyzer/file_system/physical_file_system.dart'; |
| 15 import 'package:analyzer/source/package_map_resolver.dart'; | 12 import 'package:analyzer/source/package_map_resolver.dart'; |
| 16 import 'package:analyzer/src/generated/utilities_dart.dart' as utils; | 13 import 'package:analyzer/src/generated/utilities_dart.dart' as utils; |
| 17 import 'package:analyzer/task/model.dart'; | 14 import 'package:analyzer/task/model.dart'; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 } | 99 } |
| 103 } | 100 } |
| 104 } | 101 } |
| 105 | 102 |
| 106 class CustomUriResolver extends UriResolver { | 103 class CustomUriResolver extends UriResolver { |
| 107 final Map<String, String> _urlMappings; | 104 final Map<String, String> _urlMappings; |
| 108 | 105 |
| 109 CustomUriResolver(this._urlMappings); | 106 CustomUriResolver(this._urlMappings); |
| 110 | 107 |
| 111 @override | 108 @override |
| 112 Source resolveAbsolute(Uri uri) { | 109 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 113 String mapping = _urlMappings[uri.toString()]; | 110 String mapping = _urlMappings[uri.toString()]; |
| 114 if (mapping == null) return null; | 111 if (mapping == null) return null; |
| 115 | 112 |
| 116 Uri fileUri = new Uri.file(mapping); | 113 Uri fileUri = new Uri.file(mapping); |
| 117 if (!fileUri.isAbsolute) return null; | 114 if (!fileUri.isAbsolute) return null; |
| 118 | 115 |
| 119 JavaFile javaFile = new JavaFile.fromUri(fileUri); | 116 JavaFile javaFile = new JavaFile.fromUri(fileUri); |
| 120 return new FileBasedSource(javaFile); | 117 return new FileBasedSource(javaFile, actualUri != null ? actualUri : uri); |
| 121 } | 118 } |
| 122 } | 119 } |
| 123 | 120 |
| 124 /** | 121 /** |
| 125 * Instances of the class `DartUriResolver` resolve `dart` URI's. | 122 * Instances of the class `DartUriResolver` resolve `dart` URI's. |
| 126 */ | 123 */ |
| 127 class DartUriResolver extends UriResolver { | 124 class DartUriResolver extends UriResolver { |
| 128 /** | 125 /** |
| 129 * The name of the `dart` scheme. | 126 * The name of the `dart` scheme. |
| 130 */ | 127 */ |
| (...skipping 18 matching lines...) Expand all Loading... |
| 149 DartUriResolver(this._sdk); | 146 DartUriResolver(this._sdk); |
| 150 | 147 |
| 151 /** | 148 /** |
| 152 * Return the [DartSdk] against which URIs are to be resolved. | 149 * Return the [DartSdk] against which URIs are to be resolved. |
| 153 * | 150 * |
| 154 * @return the [DartSdk] against which URIs are to be resolved. | 151 * @return the [DartSdk] against which URIs are to be resolved. |
| 155 */ | 152 */ |
| 156 DartSdk get dartSdk => _sdk; | 153 DartSdk get dartSdk => _sdk; |
| 157 | 154 |
| 158 @override | 155 @override |
| 159 Source resolveAbsolute(Uri uri) { | 156 Source resolveAbsolute(Uri uri, [Uri actualUri]) { |
| 160 if (!isDartUri(uri)) { | 157 if (!isDartUri(uri)) { |
| 161 return null; | 158 return null; |
| 162 } | 159 } |
| 163 return _sdk.mapDartUri(uri.toString()); | 160 return _sdk.mapDartUri(uri.toString()); |
| 164 } | 161 } |
| 165 | 162 |
| 166 /** | 163 /** |
| 167 * Return `true` if the given URI is a `dart-ext:` URI. | 164 * Return `true` if the given URI is a `dart-ext:` URI. |
| 168 * | 165 * |
| 169 * @param uriContent the textual representation of the URI being tested | 166 * @param uriContent the textual representation of the URI being tested |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 final int columnNumber; | 265 final int columnNumber; |
| 269 | 266 |
| 270 /** | 267 /** |
| 271 * Initialize a newly created location to represent the location of the charac
ter at the given | 268 * Initialize a newly created location to represent the location of the charac
ter at the given |
| 272 * line and column position. | 269 * line and column position. |
| 273 * | 270 * |
| 274 * @param lineNumber the one-based index of the line containing the character | 271 * @param lineNumber the one-based index of the line containing the character |
| 275 * @param columnNumber the one-based index of the column containing the charac
ter | 272 * @param columnNumber the one-based index of the column containing the charac
ter |
| 276 */ | 273 */ |
| 277 LineInfo_Location(this.lineNumber, this.columnNumber); | 274 LineInfo_Location(this.lineNumber, this.columnNumber); |
| 275 |
| 276 @override |
| 277 String toString() => '$lineNumber:$columnNumber'; |
| 278 } | 278 } |
| 279 | 279 |
| 280 /** | 280 /** |
| 281 * Instances of interface `LocalSourcePredicate` are used to determine if the gi
ven | 281 * Instances of interface `LocalSourcePredicate` are used to determine if the gi
ven |
| 282 * [Source] is "local" in some sense, so can be updated. | 282 * [Source] is "local" in some sense, so can be updated. |
| 283 */ | 283 */ |
| 284 abstract class LocalSourcePredicate { | 284 abstract class LocalSourcePredicate { |
| 285 /** | 285 /** |
| 286 * Instance of [LocalSourcePredicate] that always returns `false`. | 286 * Instance of [LocalSourcePredicate] that always returns `false`. |
| 287 */ | 287 */ |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 */ | 598 */ |
| 599 LocalSourcePredicate _localSourcePredicate = LocalSourcePredicate.NOT_SDK; | 599 LocalSourcePredicate _localSourcePredicate = LocalSourcePredicate.NOT_SDK; |
| 600 | 600 |
| 601 /** | 601 /** |
| 602 * Initialize a newly created source factory with the given absolute URI [reso
lvers] and | 602 * Initialize a newly created source factory with the given absolute URI [reso
lvers] and |
| 603 * optional [packages] resolution helper. | 603 * optional [packages] resolution helper. |
| 604 */ | 604 */ |
| 605 SourceFactory(this._resolvers, | 605 SourceFactory(this._resolvers, |
| 606 [this._packages, ResourceProvider resourceProvider]) | 606 [this._packages, ResourceProvider resourceProvider]) |
| 607 : _resourceProvider = resourceProvider != null | 607 : _resourceProvider = resourceProvider != null |
| 608 ? resourceProvider | 608 ? resourceProvider |
| 609 : PhysicalResourceProvider.INSTANCE; | 609 : PhysicalResourceProvider.INSTANCE; |
| 610 | 610 |
| 611 /** | 611 /** |
| 612 * Return the [DartSdk] associated with this [SourceFactory], or `null` if the
re | 612 * Return the [DartSdk] associated with this [SourceFactory], or `null` if the
re |
| 613 * is no such SDK. | 613 * is no such SDK. |
| 614 * | 614 * |
| 615 * @return the [DartSdk] associated with this [SourceFactory], or `null` if | 615 * @return the [DartSdk] associated with this [SourceFactory], or `null` if |
| 616 * there is no such SDK | 616 * there is no such SDK |
| 617 */ | 617 */ |
| 618 DartSdk get dartSdk { | 618 DartSdk get dartSdk { |
| 619 for (UriResolver resolver in _resolvers) { | 619 for (UriResolver resolver in _resolvers) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 635 } | 635 } |
| 636 | 636 |
| 637 /// A table mapping package names to paths of directories containing | 637 /// A table mapping package names to paths of directories containing |
| 638 /// the package (or [null] if there is no registered package URI resolver). | 638 /// the package (or [null] if there is no registered package URI resolver). |
| 639 Map<String, List<Folder>> get packageMap { | 639 Map<String, List<Folder>> get packageMap { |
| 640 // Start by looking in .packages. | 640 // Start by looking in .packages. |
| 641 if (_packages != null) { | 641 if (_packages != null) { |
| 642 Map<String, List<Folder>> packageMap = <String, List<Folder>>{}; | 642 Map<String, List<Folder>> packageMap = <String, List<Folder>>{}; |
| 643 _packages.asMap().forEach((String name, Uri uri) { | 643 _packages.asMap().forEach((String name, Uri uri) { |
| 644 if (uri.scheme == 'file' || uri.scheme == '' /* unspecified */) { | 644 if (uri.scheme == 'file' || uri.scheme == '' /* unspecified */) { |
| 645 packageMap[name] = | 645 packageMap[name] = <Folder>[ |
| 646 <Folder>[_resourceProvider.getFolder(uri.toFilePath())]; | 646 _resourceProvider.getFolder(uri.toFilePath()) |
| 647 ]; |
| 647 } | 648 } |
| 648 }); | 649 }); |
| 649 return packageMap; | 650 return packageMap; |
| 650 } | 651 } |
| 651 | 652 |
| 652 // Default to the PackageMapUriResolver. | 653 // Default to the PackageMapUriResolver. |
| 653 PackageMapUriResolver resolver = _resolvers.firstWhere( | 654 PackageMapUriResolver resolver = _resolvers |
| 654 (r) => r is PackageMapUriResolver, orElse: () => null); | 655 .firstWhere((r) => r is PackageMapUriResolver, orElse: () => null); |
| 655 return resolver != null ? resolver.packageMap : null; | 656 return resolver != null ? resolver.packageMap : null; |
| 656 } | 657 } |
| 657 | 658 |
| 658 /** | 659 /** |
| 659 * Return a source object representing the given absolute URI, or `null` if th
e URI is not a | 660 * Return a source object representing the given absolute URI, or `null` if th
e URI is not a |
| 660 * valid URI or if it is not an absolute URI. | 661 * valid URI or if it is not an absolute URI. |
| 661 * | 662 * |
| 662 * @param absoluteUri the absolute URI to be resolved | 663 * @param absoluteUri the absolute URI to be resolved |
| 663 * @return a source object representing the absolute URI | 664 * @return a source object representing the absolute URI |
| 664 */ | 665 */ |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 * against the source object's URI | 808 * against the source object's URI |
| 808 */ | 809 */ |
| 809 Source _internalResolveUri(Source containingSource, Uri containedUri) { | 810 Source _internalResolveUri(Source containingSource, Uri containedUri) { |
| 810 if (!containedUri.isAbsolute) { | 811 if (!containedUri.isAbsolute) { |
| 811 if (containingSource == null) { | 812 if (containingSource == null) { |
| 812 throw new AnalysisException( | 813 throw new AnalysisException( |
| 813 "Cannot resolve a relative URI without a containing source: $contain
edUri"); | 814 "Cannot resolve a relative URI without a containing source: $contain
edUri"); |
| 814 } | 815 } |
| 815 containedUri = containingSource.resolveRelativeUri(containedUri); | 816 containedUri = containingSource.resolveRelativeUri(containedUri); |
| 816 } | 817 } |
| 817 // Now check .packages. | 818 |
| 819 Uri actualUri = containedUri; |
| 820 |
| 821 // Check .packages and update target and actual URIs as appropriate. |
| 818 if (_packages != null && containedUri.scheme == 'package') { | 822 if (_packages != null && containedUri.scheme == 'package') { |
| 819 Uri packageUri = | 823 Uri packageUri = |
| 820 _packages.resolve(containedUri, notFound: (Uri packageUri) => null); | 824 _packages.resolve(containedUri, notFound: (Uri packageUri) => null); |
| 821 // Ensure scheme is set. | 825 |
| 822 if (packageUri != null && packageUri.scheme == '') { | 826 if (packageUri != null) { |
| 823 packageUri = packageUri.replace(scheme: 'file'); | 827 // Ensure scheme is set. |
| 828 if (packageUri.scheme == '') { |
| 829 packageUri = packageUri.replace(scheme: 'file'); |
| 830 } |
| 831 containedUri = packageUri; |
| 824 } | 832 } |
| 825 containedUri = packageUri; | |
| 826 } | 833 } |
| 834 |
| 827 for (UriResolver resolver in _resolvers) { | 835 for (UriResolver resolver in _resolvers) { |
| 828 Source result = resolver.resolveAbsolute(containedUri); | 836 Source result = resolver.resolveAbsolute(containedUri, actualUri); |
| 829 if (result != null) { | 837 if (result != null) { |
| 830 return result; | 838 return result; |
| 831 } | 839 } |
| 832 } | 840 } |
| 841 |
| 833 return null; | 842 return null; |
| 834 } | 843 } |
| 835 } | 844 } |
| 836 | 845 |
| 837 /** | 846 /** |
| 838 * The enumeration `SourceKind` defines the different kinds of sources that are
known to the | 847 * The enumeration `SourceKind` defines the different kinds of sources that are
known to the |
| 839 * analysis engine. | 848 * analysis engine. |
| 840 */ | 849 */ |
| 841 class SourceKind extends Enum<SourceKind> { | 850 class SourceKind extends Enum<SourceKind> { |
| 842 /** | 851 /** |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1055 * URI's for a source factory. Subclasses of this class are expected to resolve
a single scheme of | 1064 * URI's for a source factory. Subclasses of this class are expected to resolve
a single scheme of |
| 1056 * absolute URI. | 1065 * absolute URI. |
| 1057 */ | 1066 */ |
| 1058 abstract class UriResolver { | 1067 abstract class UriResolver { |
| 1059 /** | 1068 /** |
| 1060 * Resolve the given absolute URI. Return a [Source] representing the file to
which | 1069 * Resolve the given absolute URI. Return a [Source] representing the file to
which |
| 1061 * it was resolved, whether or not the resulting source exists, or `null` if i
t could not be | 1070 * it was resolved, whether or not the resulting source exists, or `null` if i
t could not be |
| 1062 * resolved because the URI is invalid. | 1071 * resolved because the URI is invalid. |
| 1063 * | 1072 * |
| 1064 * @param uri the URI to be resolved | 1073 * @param uri the URI to be resolved |
| 1074 * @param actualUri the actual uri for this source -- if `null`, the value of
[uri] will be used |
| 1065 * @return a [Source] representing the file to which given URI was resolved | 1075 * @return a [Source] representing the file to which given URI was resolved |
| 1066 */ | 1076 */ |
| 1067 Source resolveAbsolute(Uri uri); | 1077 Source resolveAbsolute(Uri uri, [Uri actualUri]); |
| 1068 | 1078 |
| 1069 /** | 1079 /** |
| 1070 * Return an absolute URI that represents the given source, or `null` if a val
id URI cannot | 1080 * Return an absolute URI that represents the given [source], or `null` if a |
| 1071 * be computed. | 1081 * valid URI cannot be computed. |
| 1072 * | 1082 * |
| 1073 * @param source the source to get URI for | 1083 * The computation should be based solely on [source.fullName]. |
| 1074 * @return the absolute URI representing the given source | |
| 1075 */ | 1084 */ |
| 1076 Uri restoreAbsolute(Source source) => null; | 1085 Uri restoreAbsolute(Source source) => null; |
| 1077 } | 1086 } |
| OLD | NEW |