Chromium Code Reviews| 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; | 8 library engine; |
| 9 | 9 |
| 10 import "dart:math" as math; | 10 import "dart:math" as math; |
| (...skipping 1519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1530 // First, compute the list of sources that have been removed. | 1530 // First, compute the list of sources that have been removed. |
| 1531 // | 1531 // |
| 1532 List<Source> removedSources = | 1532 List<Source> removedSources = |
| 1533 new List<Source>.from(changeSet.removedSources); | 1533 new List<Source>.from(changeSet.removedSources); |
| 1534 for (SourceContainer container in changeSet.removedContainers) { | 1534 for (SourceContainer container in changeSet.removedContainers) { |
| 1535 _addSourcesInContainer(removedSources, container); | 1535 _addSourcesInContainer(removedSources, container); |
| 1536 } | 1536 } |
| 1537 // | 1537 // |
| 1538 // Then determine which cached results are no longer valid. | 1538 // Then determine which cached results are no longer valid. |
| 1539 // | 1539 // |
| 1540 bool addedDartSource = false; | |
| 1541 for (Source source in changeSet.addedSources) { | 1540 for (Source source in changeSet.addedSources) { |
| 1542 if (_sourceAvailable(source)) { | 1541 _sourceAvailable(source); |
| 1543 addedDartSource = true; | |
| 1544 } | |
| 1545 } | 1542 } |
| 1546 for (Source source in changeSet.changedSources) { | 1543 for (Source source in changeSet.changedSources) { |
| 1547 if (_contentCache.getContents(source) != null) { | 1544 if (_contentCache.getContents(source) != null) { |
| 1548 // This source is overridden in the content cache, so the change will | 1545 // This source is overridden in the content cache, so the change will |
| 1549 // have no effect. Just ignore it to avoid wasting time doing | 1546 // have no effect. Just ignore it to avoid wasting time doing |
| 1550 // re-analysis. | 1547 // re-analysis. |
| 1551 continue; | 1548 continue; |
| 1552 } | 1549 } |
| 1553 _sourceChanged(source); | 1550 _sourceChanged(source); |
| 1554 } | 1551 } |
| 1555 changeSet.changedContents.forEach((Source key, String value) { | 1552 changeSet.changedContents.forEach((Source key, String value) { |
| 1556 _contentsChanged(key, value, false); | 1553 _contentsChanged(key, value, false); |
| 1557 }); | 1554 }); |
| 1558 changeSet.changedRanges.forEach( | 1555 changeSet.changedRanges.forEach( |
| 1559 (Source source, ChangeSet_ContentChange change) { | 1556 (Source source, ChangeSet_ContentChange change) { |
| 1560 _contentRangeChanged( | 1557 _contentRangeChanged( |
| 1561 source, | 1558 source, |
| 1562 change.contents, | 1559 change.contents, |
| 1563 change.offset, | 1560 change.offset, |
| 1564 change.oldLength, | 1561 change.oldLength, |
| 1565 change.newLength); | 1562 change.newLength); |
| 1566 }); | 1563 }); |
| 1567 for (Source source in changeSet.deletedSources) { | 1564 for (Source source in changeSet.deletedSources) { |
| 1568 _sourceDeleted(source); | 1565 _sourceDeleted(source); |
| 1569 } | 1566 } |
| 1570 for (Source source in removedSources) { | 1567 for (Source source in removedSources) { |
| 1571 _sourceRemoved(source); | 1568 _sourceRemoved(source); |
| 1572 } | 1569 } |
| 1573 if (addedDartSource) { | |
| 1574 // TODO(brianwilkerson) This is hugely inefficient, but we need to | |
| 1575 // re-analyze any libraries that might have been referencing the | |
| 1576 // not-yet-existing source that was just added. Longer term we need to | |
| 1577 // keep track of which libraries are referencing non-existing sources and | |
| 1578 // only re-analyze those libraries. | |
| 1579 // logInformation("Added Dart sources, invalidating all resolution informat ion"); | |
| 1580 List<Source> sourcesToInvalidate = new List<Source>(); | |
| 1581 MapIterator<Source, SourceEntry> iterator = _cache.iterator(); | |
| 1582 while (iterator.moveNext()) { | |
| 1583 Source source = iterator.key; | |
| 1584 SourceEntry sourceEntry = iterator.value; | |
| 1585 if (!source.isInSystemLibrary && | |
| 1586 (sourceEntry is DartEntry || sourceEntry is HtmlEntry)) { | |
| 1587 sourcesToInvalidate.add(source); | |
| 1588 } | |
| 1589 } | |
| 1590 int count = sourcesToInvalidate.length; | |
| 1591 for (int i = 0; i < count; i++) { | |
| 1592 Source source = sourcesToInvalidate[i]; | |
| 1593 SourceEntry entry = _getReadableSourceEntry(source); | |
| 1594 if (entry is DartEntry) { | |
| 1595 entry.invalidateParseInformation(); | |
| 1596 _workManager.add(source, _computePriority(entry)); | |
| 1597 } else if (entry is HtmlEntry) { | |
| 1598 entry.invalidateParseInformation(); | |
| 1599 _workManager.add(source, SourcePriority.HTML); | |
| 1600 } | |
| 1601 } | |
| 1602 } | |
| 1603 _onSourcesChangedController.add(new SourcesChangedEvent(changeSet)); | 1570 _onSourcesChangedController.add(new SourcesChangedEvent(changeSet)); |
| 1604 } | 1571 } |
| 1605 | 1572 |
| 1606 @override | 1573 @override |
| 1607 String computeDocumentationComment(Element element) { | 1574 String computeDocumentationComment(Element element) { |
| 1608 if (element == null) { | 1575 if (element == null) { |
| 1609 return null; | 1576 return null; |
| 1610 } | 1577 } |
| 1611 Source source = element.source; | 1578 Source source = element.source; |
| 1612 if (source == null) { | 1579 if (source == null) { |
| (...skipping 2821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4434 */ | 4401 */ |
| 4435 void _notifyErrors(Source source, List<AnalysisError> errors, | 4402 void _notifyErrors(Source source, List<AnalysisError> errors, |
| 4436 LineInfo lineInfo) { | 4403 LineInfo lineInfo) { |
| 4437 int count = _listeners.length; | 4404 int count = _listeners.length; |
| 4438 for (int i = 0; i < count; i++) { | 4405 for (int i = 0; i < count; i++) { |
| 4439 _listeners[i].computedErrors(this, source, errors, lineInfo); | 4406 _listeners[i].computedErrors(this, source, errors, lineInfo); |
| 4440 } | 4407 } |
| 4441 } | 4408 } |
| 4442 | 4409 |
| 4443 /** | 4410 /** |
| 4444 * Record the results produced by performing a [task] and return the cache | 4411 * Given that the given [source] (with the corresponding [sourceEntry]) has |
| 4445 * entry associated with the results. | 4412 * been invalidated, invalidate all of the libraries that depend on it. |
| 4446 */ | 4413 */ |
| 4447 DartEntry _recordBuildUnitElementTask(BuildUnitElementTask task) { | 4414 void _propagateInvalidation(Source source, SourceEntry sourceEntry) { |
| 4448 Source source = task.source; | 4415 if (sourceEntry is HtmlEntry) { |
| 4449 Source library = task.library; | 4416 HtmlEntry htmlEntry = sourceEntry; |
| 4450 DartEntry dartEntry = _cache.get(source); | 4417 htmlEntry.modificationTime = getModificationStamp(source); |
| 4451 CaughtException thrownException = task.exception; | 4418 htmlEntry.invalidateAllInformation(); |
| 4452 if (thrownException != null) { | 4419 _cache.removedAst(source); |
| 4453 dartEntry.recordBuildElementErrorInLibrary(library, thrownException); | 4420 _workManager.add(source, SourcePriority.HTML); |
| 4454 throw new AnalysisException('<rethrow>', thrownException); | 4421 } else if (sourceEntry is DartEntry) { |
| 4422 List<Source> containingLibraries = getLibrariesContaining(source); | |
| 4423 List<Source> dependentLibraries = getLibrariesDependingOn(source); | |
| 4424 HashSet<Source> librariesToInvalidate = new HashSet<Source>(); | |
| 4425 for (Source containingLibrary in containingLibraries) { | |
| 4426 _computeAllLibrariesDependingOn( | |
| 4427 containingLibrary, | |
| 4428 librariesToInvalidate); | |
| 4429 } | |
| 4430 for (Source dependentLibrary in dependentLibraries) { | |
| 4431 _computeAllLibrariesDependingOn( | |
| 4432 dependentLibrary, | |
| 4433 librariesToInvalidate); | |
| 4434 } | |
| 4435 for (Source library in librariesToInvalidate) { | |
| 4436 _invalidateLibraryResolution(library); | |
| 4437 } | |
| 4438 DartEntry dartEntry = _cache.get(source); | |
| 4439 _removeFromParts(source, dartEntry); | |
| 4440 dartEntry.modificationTime = getModificationStamp(source); | |
| 4441 dartEntry.invalidateAllInformation(); | |
| 4442 _cache.removedAst(source); | |
| 4443 _workManager.add(source, SourcePriority.UNKNOWN); | |
| 4455 } | 4444 } |
| 4456 dartEntry.setValueInLibrary(DartEntry.BUILT_UNIT, library, task.unit); | 4445 // reset unit in the notification, it is out of date now |
| 4457 dartEntry.setValueInLibrary( | 4446 ChangeNoticeImpl notice = _pendingNotices[source]; |
| 4458 DartEntry.BUILT_ELEMENT, | 4447 if (notice != null) { |
| 4459 library, | 4448 notice.resolvedDartUnit = null; |
| 4460 task.unitElement); | 4449 notice.resolvedHtmlUnit = null; |
| 4461 ChangeNoticeImpl notice = _getNotice(source); | 4450 } |
| 4462 LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO); | |
| 4463 notice.setErrors(dartEntry.allErrors, lineInfo); | |
| 4464 return dartEntry; | |
| 4465 } | 4451 } |
| 4466 | 4452 |
| 4467 // /** | 4453 // /** |
| 4468 // * Notify all of the analysis listeners that the given source is no longer i ncluded in the set of | 4454 // * Notify all of the analysis listeners that the given source is no longer i ncluded in the set of |
| 4469 // * sources that are being analyzed. | 4455 // * sources that are being analyzed. |
| 4470 // * | 4456 // * |
| 4471 // * @param source the source that is no longer being analyzed | 4457 // * @param source the source that is no longer being analyzed |
| 4472 // */ | 4458 // */ |
| 4473 // void _notifyExcludedSource(Source source) { | 4459 // void _notifyExcludedSource(Source source) { |
| 4474 // int count = _listeners.length; | 4460 // int count = _listeners.length; |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4536 // * @param unit the result of resolving the source | 4522 // * @param unit the result of resolving the source |
| 4537 // */ | 4523 // */ |
| 4538 // void _notifyResolvedHtml(Source source, ht.HtmlUnit unit) { | 4524 // void _notifyResolvedHtml(Source source, ht.HtmlUnit unit) { |
| 4539 // int count = _listeners.length; | 4525 // int count = _listeners.length; |
| 4540 // for (int i = 0; i < count; i++) { | 4526 // for (int i = 0; i < count; i++) { |
| 4541 // _listeners[i].resolvedHtml(this, source, unit); | 4527 // _listeners[i].resolvedHtml(this, source, unit); |
| 4542 // } | 4528 // } |
| 4543 // } | 4529 // } |
| 4544 | 4530 |
| 4545 /** | 4531 /** |
| 4532 * Record the results produced by performing a [task] and return the cache | |
| 4533 * entry associated with the results. | |
| 4534 */ | |
| 4535 DartEntry _recordBuildUnitElementTask(BuildUnitElementTask task) { | |
| 4536 Source source = task.source; | |
| 4537 Source library = task.library; | |
| 4538 DartEntry dartEntry = _cache.get(source); | |
| 4539 CaughtException thrownException = task.exception; | |
| 4540 if (thrownException != null) { | |
| 4541 dartEntry.recordBuildElementErrorInLibrary(library, thrownException); | |
| 4542 throw new AnalysisException('<rethrow>', thrownException); | |
| 4543 } | |
| 4544 dartEntry.setValueInLibrary(DartEntry.BUILT_UNIT, library, task.unit); | |
| 4545 dartEntry.setValueInLibrary( | |
| 4546 DartEntry.BUILT_ELEMENT, | |
| 4547 library, | |
| 4548 task.unitElement); | |
| 4549 ChangeNoticeImpl notice = _getNotice(source); | |
| 4550 LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO); | |
| 4551 notice.setErrors(dartEntry.allErrors, lineInfo); | |
| 4552 return dartEntry; | |
| 4553 } | |
| 4554 | |
| 4555 /** | |
| 4546 * Given a cache entry and a library element, record the library element and o ther information | 4556 * Given a cache entry and a library element, record the library element and o ther information |
| 4547 * gleaned from the element in the cache entry. | 4557 * gleaned from the element in the cache entry. |
| 4548 * | 4558 * |
| 4549 * @param dartCopy the cache entry in which data is to be recorded | 4559 * @param dartCopy the cache entry in which data is to be recorded |
| 4550 * @param library the library element used to record information | 4560 * @param library the library element used to record information |
| 4551 * @param librarySource the source for the library used to record information | 4561 * @param librarySource the source for the library used to record information |
| 4552 * @param htmlSource the source for the HTML library | 4562 * @param htmlSource the source for the HTML library |
| 4553 */ | 4563 */ |
| 4554 void _recordElementData(DartEntry dartEntry, LibraryElement library, | 4564 void _recordElementData(DartEntry dartEntry, LibraryElement library, |
| 4555 Source librarySource, Source htmlSource) { | 4565 Source librarySource, Source htmlSource) { |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4941 if (_priorityOrder[i] != source) { | 4951 if (_priorityOrder[i] != source) { |
| 4942 newOrder.add(_priorityOrder[i]); | 4952 newOrder.add(_priorityOrder[i]); |
| 4943 } | 4953 } |
| 4944 } | 4954 } |
| 4945 if (newOrder.length < count) { | 4955 if (newOrder.length < count) { |
| 4946 analysisPriorityOrder = newOrder; | 4956 analysisPriorityOrder = newOrder; |
| 4947 } | 4957 } |
| 4948 } | 4958 } |
| 4949 | 4959 |
| 4950 /** | 4960 /** |
| 4951 * Create an entry for the newly added source. Return `true` if the new source is a Dart | 4961 * Create an entry for the newly added source. Return `true` if the new source is a Dart |
|
scheglov
2015/02/12 16:54:50
Update the comment, remove the @return line.
Brian Wilkerson
2015/02/12 19:03:37
Done
| |
| 4952 * file. | 4962 * file. |
| 4953 * | 4963 * |
| 4954 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. | 4964 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. |
| 4955 * | 4965 * |
| 4956 * @param source the source that has been added | 4966 * @param source the source that has been added |
| 4957 * @return `true` if the new source is a Dart file | 4967 * @return `true` if the new source is a Dart file |
| 4958 */ | 4968 */ |
| 4959 bool _sourceAvailable(Source source) { | 4969 void _sourceAvailable(Source source) { |
| 4960 SourceEntry sourceEntry = _cache.get(source); | 4970 SourceEntry sourceEntry = _cache.get(source); |
| 4961 if (sourceEntry == null) { | 4971 if (sourceEntry == null) { |
| 4962 sourceEntry = _createSourceEntry(source, true); | 4972 sourceEntry = _createSourceEntry(source, true); |
| 4963 } else { | 4973 } else { |
| 4964 _sourceChanged(source); | 4974 _propagateInvalidation(source, sourceEntry); |
| 4965 sourceEntry = _cache.get(source); | 4975 sourceEntry = _cache.get(source); |
| 4966 } | 4976 } |
| 4967 if (sourceEntry is HtmlEntry) { | 4977 if (sourceEntry is HtmlEntry) { |
| 4968 _workManager.add(source, SourcePriority.HTML); | 4978 _workManager.add(source, SourcePriority.HTML); |
| 4969 } else if (sourceEntry is DartEntry) { | 4979 } else if (sourceEntry is DartEntry) { |
| 4970 _workManager.add(source, _computePriority(sourceEntry as DartEntry)); | 4980 _workManager.add(source, _computePriority(sourceEntry as DartEntry)); |
| 4971 } | 4981 } |
| 4972 return sourceEntry is DartEntry; | |
| 4973 } | 4982 } |
| 4974 | 4983 |
| 4975 /** | 4984 /** |
| 4976 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. | 4985 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. |
| 4977 * | 4986 * |
| 4978 * @param source the source that has been changed | 4987 * @param source the source that has been changed |
| 4979 */ | 4988 */ |
| 4980 void _sourceChanged(Source source) { | 4989 void _sourceChanged(Source source) { |
| 4981 SourceEntry sourceEntry = _cache.get(source); | 4990 SourceEntry sourceEntry = _cache.get(source); |
| 4982 if (sourceEntry == null || | 4991 if (sourceEntry == null || |
| 4983 sourceEntry.modificationTime == getModificationStamp(source)) { | 4992 sourceEntry.modificationTime == getModificationStamp(source)) { |
| 4984 // Either we have removed this source, in which case we don't care that | 4993 // Either we have removed this source, in which case we don't care that |
| 4985 // it is changed, or we have already invalidated the cache and don't need | 4994 // it is changed, or we have already invalidated the cache and don't need |
| 4986 // to invalidate it again. | 4995 // to invalidate it again. |
| 4987 return; | 4996 return; |
| 4988 } | 4997 } |
| 4989 if (sourceEntry is HtmlEntry) { | 4998 _propagateInvalidation(source, sourceEntry); |
| 4990 HtmlEntry htmlEntry = sourceEntry; | |
| 4991 htmlEntry.modificationTime = getModificationStamp(source); | |
| 4992 htmlEntry.invalidateAllInformation(); | |
| 4993 _cache.removedAst(source); | |
| 4994 _workManager.add(source, SourcePriority.HTML); | |
| 4995 } else if (sourceEntry is DartEntry) { | |
| 4996 List<Source> containingLibraries = getLibrariesContaining(source); | |
| 4997 HashSet<Source> librariesToInvalidate = new HashSet<Source>(); | |
| 4998 for (Source containingLibrary in containingLibraries) { | |
| 4999 _computeAllLibrariesDependingOn( | |
| 5000 containingLibrary, | |
| 5001 librariesToInvalidate); | |
| 5002 } | |
| 5003 for (Source library in librariesToInvalidate) { | |
| 5004 _invalidateLibraryResolution(library); | |
| 5005 } | |
| 5006 DartEntry dartEntry = _cache.get(source); | |
| 5007 _removeFromParts(source, dartEntry); | |
| 5008 dartEntry.modificationTime = getModificationStamp(source); | |
| 5009 dartEntry.invalidateAllInformation(); | |
| 5010 _cache.removedAst(source); | |
| 5011 _workManager.add(source, SourcePriority.UNKNOWN); | |
| 5012 } | |
| 5013 // reset unit in the notification, it is out of date now | |
| 5014 ChangeNoticeImpl notice = _pendingNotices[source]; | |
| 5015 if (notice != null) { | |
| 5016 notice.resolvedDartUnit = null; | |
| 5017 notice.resolvedHtmlUnit = null; | |
| 5018 } | |
| 5019 } | 4999 } |
| 5020 | 5000 |
| 5021 /** | 5001 /** |
| 5022 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. | 5002 * <b>Note:</b> This method must only be invoked while we are synchronized on [cacheLock]. |
| 5023 * | 5003 * |
| 5024 * @param source the source that has been deleted | 5004 * @param source the source that has been deleted |
| 5025 */ | 5005 */ |
| 5026 void _sourceDeleted(Source source) { | 5006 void _sourceDeleted(Source source) { |
| 5027 SourceEntry sourceEntry = _cache.get(source); | 5007 SourceEntry sourceEntry = _cache.get(source); |
| 5028 if (sourceEntry is HtmlEntry) { | 5008 if (sourceEntry is HtmlEntry) { |
| (...skipping 6808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11837 throw new ArgumentError("Invalid descriptor: $descriptor"); | 11817 throw new ArgumentError("Invalid descriptor: $descriptor"); |
| 11838 } | 11818 } |
| 11839 _validateStateChange(descriptor, CacheState.VALID); | 11819 _validateStateChange(descriptor, CacheState.VALID); |
| 11840 CachedResult result = | 11820 CachedResult result = |
| 11841 resultMap.putIfAbsent(descriptor, () => new CachedResult(descriptor)); | 11821 resultMap.putIfAbsent(descriptor, () => new CachedResult(descriptor)); |
| 11842 countTransition(descriptor, result); | 11822 countTransition(descriptor, result); |
| 11843 result.state = CacheState.VALID; | 11823 result.state = CacheState.VALID; |
| 11844 result.value = value == null ? descriptor.defaultValue : value; | 11824 result.value = value == null ? descriptor.defaultValue : value; |
| 11845 } | 11825 } |
| 11846 | 11826 |
| 11847 /** | |
| 11848 * Increment the count of the number of times that data represented by the | |
| 11849 * given [descriptor] was transitioned from the current state (as found in the | |
| 11850 * given [result] to a valid state. | |
| 11851 */ | |
| 11852 static void countTransition(DataDescriptor descriptor, CachedResult result) { | |
| 11853 Map<CacheState, int> countMap = | |
| 11854 transitionMap.putIfAbsent(descriptor, () => new HashMap<CacheState, int> ()); | |
| 11855 int count = countMap[result.state]; | |
| 11856 countMap[result.state] = count == null ? 1 : count + 1; | |
| 11857 } | |
| 11858 | |
| 11859 @override | 11827 @override |
| 11860 String toString() { | 11828 String toString() { |
| 11861 StringBuffer buffer = new StringBuffer(); | 11829 StringBuffer buffer = new StringBuffer(); |
| 11862 _writeOn(buffer); | 11830 _writeOn(buffer); |
| 11863 return buffer.toString(); | 11831 return buffer.toString(); |
| 11864 } | 11832 } |
| 11865 | 11833 |
| 11866 /** | 11834 /** |
| 11867 * Flush the value of the data described by the [descriptor]. | 11835 * Flush the value of the data described by the [descriptor]. |
| 11868 */ | 11836 */ |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11999 * the given [buffer]. | 11967 * the given [buffer]. |
| 12000 */ | 11968 */ |
| 12001 void _writeStateOn(StringBuffer buffer, String label, | 11969 void _writeStateOn(StringBuffer buffer, String label, |
| 12002 DataDescriptor descriptor) { | 11970 DataDescriptor descriptor) { |
| 12003 CachedResult result = resultMap[descriptor]; | 11971 CachedResult result = resultMap[descriptor]; |
| 12004 buffer.write("; "); | 11972 buffer.write("; "); |
| 12005 buffer.write(label); | 11973 buffer.write(label); |
| 12006 buffer.write(" = "); | 11974 buffer.write(" = "); |
| 12007 buffer.write(result == null ? CacheState.INVALID : result.state); | 11975 buffer.write(result == null ? CacheState.INVALID : result.state); |
| 12008 } | 11976 } |
| 11977 | |
| 11978 /** | |
| 11979 * Increment the count of the number of times that data represented by the | |
| 11980 * given [descriptor] was transitioned from the current state (as found in the | |
| 11981 * given [result] to a valid state. | |
| 11982 */ | |
| 11983 static void countTransition(DataDescriptor descriptor, CachedResult result) { | |
| 11984 Map<CacheState, int> countMap = | |
| 11985 transitionMap.putIfAbsent(descriptor, () => new HashMap<CacheState, int> ()); | |
| 11986 int count = countMap[result.state]; | |
| 11987 countMap[result.state] = count == null ? 1 : count + 1; | |
| 11988 } | |
| 12009 } | 11989 } |
| 12010 | 11990 |
| 12011 /** | 11991 /** |
| 12012 * The enumerated type `Priority` defines the priority levels used to return sou rces in an | 11992 * The enumerated type `Priority` defines the priority levels used to return sou rces in an |
| 12013 * optimal order. A smaller ordinal value equates to a higher priority. | 11993 * optimal order. A smaller ordinal value equates to a higher priority. |
| 12014 */ | 11994 */ |
| 12015 class SourcePriority extends Enum<SourcePriority> { | 11995 class SourcePriority extends Enum<SourcePriority> { |
| 12016 /** | 11996 /** |
| 12017 * Used for a Dart source that is known to be a part contained in a library th at was recently | 11997 * Used for a Dart source that is known to be a part contained in a library th at was recently |
| 12018 * resolved. These parts are given a higher priority because there is a high p robability that | 11998 * resolved. These parts are given a higher priority because there is a high p robability that |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 12435 if (element.id == _id) { | 12415 if (element.id == _id) { |
| 12436 result = element; | 12416 result = element; |
| 12437 throw new _ElementByIdFinderException(); | 12417 throw new _ElementByIdFinderException(); |
| 12438 } | 12418 } |
| 12439 super.visitElement(element); | 12419 super.visitElement(element); |
| 12440 } | 12420 } |
| 12441 } | 12421 } |
| 12442 | 12422 |
| 12443 class _ElementByIdFinderException { | 12423 class _ElementByIdFinderException { |
| 12444 } | 12424 } |
| OLD | NEW |