| 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 | 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. | 6 // significant change. Please see the README file for more information. |
| 7 | 7 |
| 8 library engine.source; | 8 library engine.source; |
| 9 | 9 |
| 10 import 'java_core.dart'; | 10 import 'java_core.dart'; |
| 11 import 'sdk.dart' show DartSdk; | 11 import 'sdk.dart' show DartSdk; |
| 12 import 'engine.dart' show AnalysisContext; | 12 import 'engine.dart' show AnalysisContext, TimestampedData; |
| 13 | 13 |
| 14 /** | 14 /** |
| 15 * Instances of interface `LocalSourcePredicate` are used to determine if the gi
ven | 15 * Instances of interface `LocalSourcePredicate` are used to determine if the gi
ven |
| 16 * [Source] is "local" in some sense, so can be updated. | 16 * [Source] is "local" in some sense, so can be updated. |
| 17 * | 17 * |
| 18 * @coverage dart.engine.source | 18 * @coverage dart.engine.source |
| 19 */ | 19 */ |
| 20 abstract class LocalSourcePredicate { | 20 abstract class LocalSourcePredicate { |
| 21 /** | 21 /** |
| 22 * Instance of [LocalSourcePredicate] that always returns `false`. | 22 * Instance of [LocalSourcePredicate] that always returns `false`. |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 * | 61 * |
| 62 * @coverage dart.engine.source | 62 * @coverage dart.engine.source |
| 63 */ | 63 */ |
| 64 class SourceFactory { | 64 class SourceFactory { |
| 65 /** | 65 /** |
| 66 * The analysis context that this source factory is associated with. | 66 * The analysis context that this source factory is associated with. |
| 67 */ | 67 */ |
| 68 AnalysisContext context; | 68 AnalysisContext context; |
| 69 | 69 |
| 70 /** | 70 /** |
| 71 * A cache of content used to override the default content of a source. | |
| 72 */ | |
| 73 ContentCache _contentCache; | |
| 74 | |
| 75 /** | |
| 76 * The resolvers used to resolve absolute URI's. | 71 * The resolvers used to resolve absolute URI's. |
| 77 */ | 72 */ |
| 78 List<UriResolver> _resolvers; | 73 List<UriResolver> _resolvers; |
| 79 | 74 |
| 80 /** | 75 /** |
| 81 * The predicate to determine is [Source] is local. | 76 * The predicate to determine is [Source] is local. |
| 82 */ | 77 */ |
| 83 LocalSourcePredicate _localSourcePredicate; | 78 LocalSourcePredicate _localSourcePredicate = LocalSourcePredicate.NOT_SDK; |
| 84 | |
| 85 /** | |
| 86 * Initialize a newly created source factory. | |
| 87 * | |
| 88 * @param contentCache the cache holding content used to override the default
content of a source | |
| 89 * @param resolvers the resolvers used to resolve absolute URI's | |
| 90 */ | |
| 91 SourceFactory.con1(ContentCache contentCache, List<UriResolver> resolvers) { | |
| 92 this._contentCache = contentCache; | |
| 93 this._resolvers = resolvers; | |
| 94 this._localSourcePredicate = LocalSourcePredicate.NOT_SDK; | |
| 95 } | |
| 96 | 79 |
| 97 /** | 80 /** |
| 98 * Initialize a newly created source factory. | 81 * Initialize a newly created source factory. |
| 99 * | 82 * |
| 100 * @param resolvers the resolvers used to resolve absolute URI's | 83 * @param resolvers the resolvers used to resolve absolute URI's |
| 101 */ | 84 */ |
| 102 SourceFactory.con2(List<UriResolver> resolvers) : this.con1(new ContentCache()
, resolvers); | 85 SourceFactory(List<UriResolver> resolvers) { |
| 86 this._resolvers = resolvers; |
| 87 } |
| 103 | 88 |
| 104 /** | 89 /** |
| 105 * Return a source object representing the given absolute URI, or `null` if th
e URI is not a | 90 * Return a source object representing the given absolute URI, or `null` if th
e URI is not a |
| 106 * valid URI or if it is not an absolute URI. | 91 * valid URI or if it is not an absolute URI. |
| 107 * | 92 * |
| 108 * @param absoluteUri the absolute URI to be resolved | 93 * @param absoluteUri the absolute URI to be resolved |
| 109 * @return a source object representing the absolute URI | 94 * @return a source object representing the absolute URI |
| 110 */ | 95 */ |
| 111 Source forUri(String absoluteUri) { | 96 Source forUri(String absoluteUri) { |
| 112 try { | 97 try { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 131 if (encoding.length < 2) { | 116 if (encoding.length < 2) { |
| 132 throw new IllegalArgumentException("Invalid encoding length"); | 117 throw new IllegalArgumentException("Invalid encoding length"); |
| 133 } | 118 } |
| 134 UriKind kind = UriKind.fromEncoding(encoding.codeUnitAt(0)); | 119 UriKind kind = UriKind.fromEncoding(encoding.codeUnitAt(0)); |
| 135 if (kind == null) { | 120 if (kind == null) { |
| 136 throw new IllegalArgumentException("Invalid source kind in encoding: ${kin
d}"); | 121 throw new IllegalArgumentException("Invalid source kind in encoding: ${kin
d}"); |
| 137 } | 122 } |
| 138 try { | 123 try { |
| 139 Uri uri = parseUriWithException(encoding.substring(1)); | 124 Uri uri = parseUriWithException(encoding.substring(1)); |
| 140 for (UriResolver resolver in _resolvers) { | 125 for (UriResolver resolver in _resolvers) { |
| 141 Source result = resolver.fromEncoding(_contentCache, kind, uri); | 126 Source result = resolver.fromEncoding(kind, uri); |
| 142 if (result != null) { | 127 if (result != null) { |
| 143 return result; | 128 return result; |
| 144 } | 129 } |
| 145 } | 130 } |
| 146 throw new IllegalArgumentException("No resolver for kind: ${kind}"); | 131 throw new IllegalArgumentException("No resolver for kind: ${kind}"); |
| 147 } on JavaException catch (exception) { | 132 } on JavaException catch (exception) { |
| 148 throw new IllegalArgumentException("Invalid URI in encoding"); | 133 throw new IllegalArgumentException("Invalid URI in encoding"); |
| 149 } | 134 } |
| 150 } | 135 } |
| 151 | 136 |
| 152 /** | 137 /** |
| 153 * Return a cache of content used to override the default content of a source. | |
| 154 * | |
| 155 * @return a cache of content used to override the default content of a source | |
| 156 */ | |
| 157 ContentCache get contentCache => _contentCache; | |
| 158 | |
| 159 /** | |
| 160 * Return the [DartSdk] associated with this [SourceFactory], or `null` if the
re | 138 * Return the [DartSdk] associated with this [SourceFactory], or `null` if the
re |
| 161 * is no such SDK. | 139 * is no such SDK. |
| 162 * | 140 * |
| 163 * @return the [DartSdk] associated with this [SourceFactory], or `null` if | 141 * @return the [DartSdk] associated with this [SourceFactory], or `null` if |
| 164 * there is no such SDK | 142 * there is no such SDK |
| 165 */ | 143 */ |
| 166 DartSdk get dartSdk { | 144 DartSdk get dartSdk { |
| 167 for (UriResolver resolver in _resolvers) { | 145 for (UriResolver resolver in _resolvers) { |
| 168 if (resolver is DartUriResolver) { | 146 if (resolver is DartUriResolver) { |
| 169 DartUriResolver dartUriResolver = resolver; | 147 DartUriResolver dartUriResolver = resolver; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 for (UriResolver resolver in _resolvers) { | 191 for (UriResolver resolver in _resolvers) { |
| 214 Uri uri = resolver.restoreAbsolute(source); | 192 Uri uri = resolver.restoreAbsolute(source); |
| 215 if (uri != null) { | 193 if (uri != null) { |
| 216 return uri; | 194 return uri; |
| 217 } | 195 } |
| 218 } | 196 } |
| 219 return null; | 197 return null; |
| 220 } | 198 } |
| 221 | 199 |
| 222 /** | 200 /** |
| 223 * Set the contents of the given source to the given contents. This has the ef
fect of overriding | |
| 224 * the default contents of the source. If the contents are `null` the override
is removed so | |
| 225 * that the default contents will be returned. | |
| 226 * | |
| 227 * @param source the source whose contents are being overridden | |
| 228 * @param contents the new contents of the source | |
| 229 * @return the original cached contents or `null` if none | |
| 230 */ | |
| 231 String setContents(Source source, String contents) => _contentCache.setContent
s(source, contents); | |
| 232 | |
| 233 /** | |
| 234 * Sets the [LocalSourcePredicate]. | 201 * Sets the [LocalSourcePredicate]. |
| 235 * | 202 * |
| 236 * @param localSourcePredicate the predicate to determine is [Source] is local | 203 * @param localSourcePredicate the predicate to determine is [Source] is local |
| 237 */ | 204 */ |
| 238 void set localSourcePredicate(LocalSourcePredicate localSourcePredicate) { | 205 void set localSourcePredicate(LocalSourcePredicate localSourcePredicate) { |
| 239 this._localSourcePredicate = localSourcePredicate; | 206 this._localSourcePredicate = localSourcePredicate; |
| 240 } | 207 } |
| 241 | 208 |
| 242 /** | 209 /** |
| 243 * Return the contents of the given source, or `null` if this factory does not
override the | |
| 244 * contents of the source. | |
| 245 * | |
| 246 * <b>Note:</b> This method is not intended to be used except by | |
| 247 * [FileBasedSource#getContents]. | |
| 248 * | |
| 249 * @param source the source whose content is to be returned | |
| 250 * @return the contents of the given source | |
| 251 */ | |
| 252 String getContents(Source source) => _contentCache.getContents(source); | |
| 253 | |
| 254 /** | |
| 255 * Return the modification stamp of the given source, or `null` if this factor
y does not | |
| 256 * override the contents of the source. | |
| 257 * | |
| 258 * <b>Note:</b> This method is not intended to be used except by | |
| 259 * [FileBasedSource#getModificationStamp]. | |
| 260 * | |
| 261 * @param source the source whose modification stamp is to be returned | |
| 262 * @return the modification stamp of the given source | |
| 263 */ | |
| 264 int getModificationStamp(Source source) => _contentCache.getModificationStamp(
source); | |
| 265 | |
| 266 /** | |
| 267 * Return a source object representing the URI that results from resolving the
given (possibly | 210 * Return a source object representing the URI that results from resolving the
given (possibly |
| 268 * relative) contained URI against the URI associated with an existing source
object, or | 211 * relative) contained URI against the URI associated with an existing source
object, or |
| 269 * `null` if either the contained URI is invalid or if it cannot be resolved a
gainst the | 212 * `null` if either the contained URI is invalid or if it cannot be resolved a
gainst the |
| 270 * source object's URI. | 213 * source object's URI. |
| 271 * | 214 * |
| 272 * @param containingSource the source containing the given URI | 215 * @param containingSource the source containing the given URI |
| 273 * @param containedUri the (possibly relative) URI to be resolved against the
containing source | 216 * @param containedUri the (possibly relative) URI to be resolved against the
containing source |
| 274 * @return the source representing the contained URI | 217 * @return the source representing the contained URI |
| 275 */ | 218 */ |
| 276 Source resolveUri2(Source containingSource, Uri containedUri) { | 219 Source resolveUri2(Source containingSource, Uri containedUri) { |
| 277 if (containedUri.isAbsolute) { | 220 if (containedUri.isAbsolute) { |
| 278 for (UriResolver resolver in _resolvers) { | 221 for (UriResolver resolver in _resolvers) { |
| 279 Source result = resolver.resolveAbsolute(_contentCache, containedUri); | 222 Source result = resolver.resolveAbsolute(containedUri); |
| 280 if (result != null) { | 223 if (result != null) { |
| 281 return result; | 224 return result; |
| 282 } | 225 } |
| 283 } | 226 } |
| 284 return null; | 227 return null; |
| 285 } else { | 228 } else { |
| 286 return containingSource.resolveRelative(containedUri); | 229 return containingSource.resolveRelative(containedUri); |
| 287 } | 230 } |
| 288 } | 231 } |
| 289 } | 232 } |
| 290 | 233 |
| 291 /** | 234 /** |
| 292 * The abstract class `UriResolver` defines the behavior of objects that are use
d to resolve | 235 * The abstract class `UriResolver` defines the behavior of objects that are use
d to resolve |
| 293 * URI's for a source factory. Subclasses of this class are expected to resolve
a single scheme of | 236 * URI's for a source factory. Subclasses of this class are expected to resolve
a single scheme of |
| 294 * absolute URI. | 237 * absolute URI. |
| 295 * | 238 * |
| 296 * @coverage dart.engine.source | 239 * @coverage dart.engine.source |
| 297 */ | 240 */ |
| 298 abstract class UriResolver { | 241 abstract class UriResolver { |
| 299 /** | 242 /** |
| 300 * If this resolver should be used for URI's of the given kind, resolve the gi
ven absolute URI. | 243 * If this resolver should be used for URI's of the given kind, resolve the gi
ven absolute URI. |
| 301 * The URI does not need to have the scheme handled by this resolver if the ki
nd matches. Return a | 244 * The URI does not need to have the scheme handled by this resolver if the ki
nd matches. Return a |
| 302 * [Source] representing the file to which it was resolved, or `null` if it | 245 * [Source] representing the file to which it was resolved, or `null` if it |
| 303 * could not be resolved. | 246 * could not be resolved. |
| 304 * | 247 * |
| 305 * @param contentCache the content cache used to access the contents of the re
turned source | |
| 306 * @param kind the kind of URI that was originally resolved in order to produc
e an encoding with | 248 * @param kind the kind of URI that was originally resolved in order to produc
e an encoding with |
| 307 * the given URI | 249 * the given URI |
| 308 * @param uri the URI to be resolved | 250 * @param uri the URI to be resolved |
| 309 * @return a [Source] representing the file to which given URI was resolved | 251 * @return a [Source] representing the file to which given URI was resolved |
| 310 */ | 252 */ |
| 311 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri); | 253 Source fromEncoding(UriKind kind, Uri uri); |
| 312 | 254 |
| 313 /** | 255 /** |
| 314 * Resolve the given absolute URI. Return a [Source] representing the file to
which | 256 * Resolve the given absolute URI. Return a [Source] representing the file to
which |
| 315 * it was resolved, or `null` if it could not be resolved. | 257 * it was resolved, or `null` if it could not be resolved. |
| 316 * | 258 * |
| 317 * @param contentCache the content cache used to access the contents of the re
turned source | |
| 318 * @param uri the URI to be resolved | 259 * @param uri the URI to be resolved |
| 319 * @return a [Source] representing the file to which given URI was resolved | 260 * @return a [Source] representing the file to which given URI was resolved |
| 320 */ | 261 */ |
| 321 Source resolveAbsolute(ContentCache contentCache, Uri uri); | 262 Source resolveAbsolute(Uri uri); |
| 322 | 263 |
| 323 /** | 264 /** |
| 324 * Return an absolute URI that represents the given source. | 265 * Return an absolute URI that represents the given source. |
| 325 * | 266 * |
| 326 * @param source the source to get URI for | 267 * @param source the source to get URI for |
| 327 * @return the absolute URI representing the given source, may be `null` | 268 * @return the absolute URI representing the given source, may be `null` |
| 328 */ | 269 */ |
| 329 Uri restoreAbsolute(Source source) => null; | 270 Uri restoreAbsolute(Source source) => null; |
| 330 } | 271 } |
| 331 | 272 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 348 * @param object the object to be compared with this object | 289 * @param object the object to be compared with this object |
| 349 * @return `true` if the given object is a source that represents the same sou
rce code as | 290 * @return `true` if the given object is a source that represents the same sou
rce code as |
| 350 * this source | 291 * this source |
| 351 * @see Object#equals(Object) | 292 * @see Object#equals(Object) |
| 352 */ | 293 */ |
| 353 bool operator ==(Object object); | 294 bool operator ==(Object object); |
| 354 | 295 |
| 355 /** | 296 /** |
| 356 * Return `true` if this source exists. | 297 * Return `true` if this source exists. |
| 357 * | 298 * |
| 299 * Clients should consider using the the method [AnalysisContext#exists] becau
se |
| 300 * contexts can have local overrides of the content of a source that the sourc
e is not aware of |
| 301 * and a source with local content is considered to exist even if there is no
file on disk. |
| 302 * |
| 358 * @return `true` if this source exists | 303 * @return `true` if this source exists |
| 359 */ | 304 */ |
| 360 bool exists(); | 305 bool exists(); |
| 361 | 306 |
| 362 /** | 307 /** |
| 363 * Get the contents of this source and pass it to the given receiver. Exactly
one of the methods | 308 * Get the contents and timestamp of this source. |
| 364 * defined on the receiver will be invoked unless an exception is thrown. The
method that will be | 309 * |
| 365 * invoked depends on which of the possible representations of the contents is
the most efficient. | 310 * Clients should consider using the the method [AnalysisContext#getContents] |
| 366 * Whichever method is invoked, it will be invoked before this method returns. | 311 * because contexts can have local overrides of the content of a source that t
he source is not |
| 312 * aware of. |
| 313 * |
| 314 * @return the contents and timestamp of the source |
| 315 * @throws Exception if the contents of this source could not be accessed |
| 316 */ |
| 317 TimestampedData<String> get contents; |
| 318 |
| 319 /** |
| 320 * Get the contents of this source and pass it to the given content receiver. |
| 321 * |
| 322 * Clients should consider using the the method |
| 323 * [AnalysisContext#getContents] because contexts can have local |
| 324 * overrides of the content of a source that the source is not aware of. |
| 367 * | 325 * |
| 368 * @param receiver the content receiver to which the content of this source wi
ll be passed | 326 * @param receiver the content receiver to which the content of this source wi
ll be passed |
| 369 * @throws Exception if the contents of this source could not be accessed | 327 * @throws Exception if the contents of this source could not be accessed |
| 370 */ | 328 */ |
| 371 void getContents(Source_ContentReceiver receiver); | 329 void getContentsToReceiver(Source_ContentReceiver receiver); |
| 372 | 330 |
| 373 /** | 331 /** |
| 374 * Return an encoded representation of this source that can be used to create
a source that is | 332 * Return an encoded representation of this source that can be used to create
a source that is |
| 375 * equal to this source. | 333 * equal to this source. |
| 376 * | 334 * |
| 377 * @return an encoded representation of this source | 335 * @return an encoded representation of this source |
| 378 * @see SourceFactory#fromEncoding(String) | 336 * @see SourceFactory#fromEncoding(String) |
| 379 */ | 337 */ |
| 380 String get encoding; | 338 String get encoding; |
| 381 | 339 |
| 382 /** | 340 /** |
| 383 * Return the full (long) version of the name that can be displayed to the use
r to denote this | 341 * Return the full (long) version of the name that can be displayed to the use
r to denote this |
| 384 * source. For example, for a source representing a file this would typically
be the absolute path | 342 * source. For example, for a source representing a file this would typically
be the absolute path |
| 385 * of the file. | 343 * of the file. |
| 386 * | 344 * |
| 387 * @return a name that can be displayed to the user to denote this source | 345 * @return a name that can be displayed to the user to denote this source |
| 388 */ | 346 */ |
| 389 String get fullName; | 347 String get fullName; |
| 390 | 348 |
| 391 /** | 349 /** |
| 392 * Return the modification stamp for this source. A modification stamp is a no
n-negative integer | 350 * Return the modification stamp for this source. A modification stamp is a no
n-negative integer |
| 393 * with the property that if the contents of the source have not been modified
since the last time | 351 * with the property that if the contents of the source have not been modified
since the last time |
| 394 * the modification stamp was accessed then the same value will be returned, b
ut if the contents | 352 * the modification stamp was accessed then the same value will be returned, b
ut if the contents |
| 395 * of the source have been modified one or more times (even if the net change
is zero) the stamps | 353 * of the source have been modified one or more times (even if the net change
is zero) the stamps |
| 396 * will be different. | 354 * will be different. |
| 397 * | 355 * |
| 356 * Clients should consider using the the method |
| 357 * [AnalysisContext#getModificationStamp] because contexts can have local over
rides |
| 358 * of the content of a source that the source is not aware of. |
| 359 * |
| 398 * @return the modification stamp for this source | 360 * @return the modification stamp for this source |
| 399 */ | 361 */ |
| 400 int get modificationStamp; | 362 int get modificationStamp; |
| 401 | 363 |
| 402 /** | 364 /** |
| 403 * Return a short version of the name that can be displayed to the user to den
ote this source. For | 365 * Return a short version of the name that can be displayed to the user to den
ote this source. For |
| 404 * example, for a source representing a file this would typically be the name
of the file. | 366 * example, for a source representing a file this would typically be the name
of the file. |
| 405 * | 367 * |
| 406 * @return a name that can be displayed to the user to denote this source | 368 * @return a name that can be displayed to the user to denote this source |
| 407 */ | 369 */ |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 /** | 694 /** |
| 733 * Initialize a newly created resolver to resolve Dart URI's against the given
platform within the | 695 * Initialize a newly created resolver to resolve Dart URI's against the given
platform within the |
| 734 * given Dart SDK. | 696 * given Dart SDK. |
| 735 * | 697 * |
| 736 * @param sdk the Dart SDK against which URI's are to be resolved | 698 * @param sdk the Dart SDK against which URI's are to be resolved |
| 737 */ | 699 */ |
| 738 DartUriResolver(DartSdk sdk) { | 700 DartUriResolver(DartSdk sdk) { |
| 739 this._sdk = sdk; | 701 this._sdk = sdk; |
| 740 } | 702 } |
| 741 | 703 |
| 742 Source fromEncoding(ContentCache contentCache, UriKind kind, Uri uri) { | 704 Source fromEncoding(UriKind kind, Uri uri) { |
| 743 if (identical(kind, UriKind.DART_URI)) { | 705 if (identical(kind, UriKind.DART_URI)) { |
| 744 return _sdk.fromEncoding(contentCache, kind, uri); | 706 return _sdk.fromEncoding(kind, uri); |
| 745 } | 707 } |
| 746 return null; | 708 return null; |
| 747 } | 709 } |
| 748 | 710 |
| 749 /** | 711 /** |
| 750 * Return the [DartSdk] against which URIs are to be resolved. | 712 * Return the [DartSdk] against which URIs are to be resolved. |
| 751 * | 713 * |
| 752 * @return the [DartSdk] against which URIs are to be resolved. | 714 * @return the [DartSdk] against which URIs are to be resolved. |
| 753 */ | 715 */ |
| 754 DartSdk get dartSdk => _sdk; | 716 DartSdk get dartSdk => _sdk; |
| 755 | 717 |
| 756 Source resolveAbsolute(ContentCache contentCache, Uri uri) { | 718 Source resolveAbsolute(Uri uri) { |
| 757 if (!isDartUri(uri)) { | 719 if (!isDartUri(uri)) { |
| 758 return null; | 720 return null; |
| 759 } | 721 } |
| 760 return _sdk.mapDartUri(uri.toString()); | 722 return _sdk.mapDartUri(uri.toString()); |
| 761 } | 723 } |
| 762 } | 724 } |
| 763 | 725 |
| 764 /** | 726 /** |
| 765 * Instances of the class `LineInfo` encapsulate information about line and colu
mn information | 727 * Instances of the class `LineInfo` encapsulate information about line and colu
mn information |
| 766 * within a source file. | 728 * within a source file. |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 * A table mapping sources to the modification stamps of those sources. This i
s used when the | 809 * A table mapping sources to the modification stamps of those sources. This i
s used when the |
| 848 * default contents of a source has been overridden. | 810 * default contents of a source has been overridden. |
| 849 */ | 811 */ |
| 850 Map<Source, int> _stampMap = new Map<Source, int>(); | 812 Map<Source, int> _stampMap = new Map<Source, int>(); |
| 851 | 813 |
| 852 /** | 814 /** |
| 853 * Return the contents of the given source, or `null` if this cache does not o
verride the | 815 * Return the contents of the given source, or `null` if this cache does not o
verride the |
| 854 * contents of the source. | 816 * contents of the source. |
| 855 * | 817 * |
| 856 * <b>Note:</b> This method is not intended to be used except by | 818 * <b>Note:</b> This method is not intended to be used except by |
| 857 * [SourceFactory#getContents]. | 819 * [AnalysisContext#getContents]. |
| 858 * | 820 * |
| 859 * @param source the source whose content is to be returned | 821 * @param source the source whose content is to be returned |
| 860 * @return the contents of the given source | 822 * @return the contents of the given source |
| 861 */ | 823 */ |
| 862 String getContents(Source source) => _contentMap[source]; | 824 String getContents(Source source) => _contentMap[source]; |
| 863 | 825 |
| 864 /** | 826 /** |
| 865 * Return the modification stamp of the given source, or `null` if this cache
does not | 827 * Return the modification stamp of the given source, or `null` if this cache
does not |
| 866 * override the contents of the source. | 828 * override the contents of the source. |
| 867 * | 829 * |
| 868 * <b>Note:</b> This method is not intended to be used except by | 830 * <b>Note:</b> This method is not intended to be used except by |
| 869 * [SourceFactory#getModificationStamp]. | 831 * [AnalysisContext#getModificationStamp]. |
| 870 * | 832 * |
| 871 * @param source the source whose modification stamp is to be returned | 833 * @param source the source whose modification stamp is to be returned |
| 872 * @return the modification stamp of the given source | 834 * @return the modification stamp of the given source |
| 873 */ | 835 */ |
| 874 int getModificationStamp(Source source) => _stampMap[source]; | 836 int getModificationStamp(Source source) => _stampMap[source]; |
| 875 | 837 |
| 876 /** | 838 /** |
| 877 * Set the contents of the given source to the given contents. This has the ef
fect of overriding | 839 * Set the contents of the given source to the given contents. This has the ef
fect of overriding |
| 878 * the default contents of the source. If the contents are `null` the override
is removed so | 840 * the default contents of the source. If the contents are `null` the override
is removed so |
| 879 * that the default contents will be returned. | 841 * that the default contents will be returned. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 891 int oldStamp = javaMapPut(_stampMap, source, newStamp); | 853 int oldStamp = javaMapPut(_stampMap, source, newStamp); |
| 892 // Occasionally, if this method is called in rapid succession, the timesta
mps are equal. | 854 // Occasionally, if this method is called in rapid succession, the timesta
mps are equal. |
| 893 // Guard against this by artificially incrementing the new timestamp | 855 // Guard against this by artificially incrementing the new timestamp |
| 894 if (newStamp == oldStamp) { | 856 if (newStamp == oldStamp) { |
| 895 _stampMap[source] = newStamp + 1; | 857 _stampMap[source] = newStamp + 1; |
| 896 } | 858 } |
| 897 return javaMapPut(_contentMap, source, contents); | 859 return javaMapPut(_contentMap, source, contents); |
| 898 } | 860 } |
| 899 } | 861 } |
| 900 } | 862 } |
| OLD | NEW |