OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 test.src.serialization.elements_test; | 5 library test.src.serialization.elements_test; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
9 import 'package:analyzer/dart/constant/value.dart'; | 9 import 'package:analyzer/dart/constant/value.dart'; |
10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 } | 139 } |
140 | 140 |
141 /** | 141 /** |
142 * Verify that the [resynthesizer] didn't do any unnecessary work when | 142 * Verify that the [resynthesizer] didn't do any unnecessary work when |
143 * resynthesizing [library]. | 143 * resynthesizing [library]. |
144 */ | 144 */ |
145 void checkMinimalResynthesisWork( | 145 void checkMinimalResynthesisWork( |
146 TestSummaryResynthesizer resynthesizer, LibraryElement library) { | 146 TestSummaryResynthesizer resynthesizer, LibraryElement library) { |
147 // Check that no other summaries needed to be resynthesized to resynthesize | 147 // Check that no other summaries needed to be resynthesized to resynthesize |
148 // the library element. | 148 // the library element. |
149 expect(resynthesizer.resynthesisCount, 1); | 149 expect(resynthesizer.resynthesisCount, 3); |
150 // Check that the only linked summary consulted was that for [uri]. | 150 // Check that the only linked summary consulted was that for [uri]. |
151 expect(resynthesizer.linkedSummariesRequested, hasLength(1)); | 151 expect(resynthesizer.linkedSummariesRequested, hasLength(1)); |
152 expect(resynthesizer.linkedSummariesRequested.first, | 152 expect(resynthesizer.linkedSummariesRequested.first, |
153 library.source.uri.toString()); | 153 library.source.uri.toString()); |
154 // Check that the only unlinked summaries consulted were those for the | 154 // Check that the only unlinked summaries consulted were those for the |
155 // library in question. | 155 // library in question. |
156 Set<String> expectedCompilationUnitUris = library.units | 156 Set<String> expectedCompilationUnitUris = library.units |
157 .map((CompilationUnitElement unit) => unit.source.uri.toString()) | 157 .map((CompilationUnitElement unit) => unit.source.uri.toString()) |
158 .toSet(); | 158 .toSet(); |
159 for (String requestedUri in resynthesizer.unlinkedSummariesRequested) { | 159 for (String requestedUri in resynthesizer.unlinkedSummariesRequested) { |
(...skipping 4721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4881 * element from the resynthesized summary. | 4881 * element from the resynthesized summary. |
4882 */ | 4882 */ |
4883 Element validateGetElement(String text, Element original) { | 4883 Element validateGetElement(String text, Element original) { |
4884 SummaryResynthesizer resynthesizer = | 4884 SummaryResynthesizer resynthesizer = |
4885 encodeDecodeLibrarySource(original.library.source); | 4885 encodeDecodeLibrarySource(original.library.source); |
4886 ElementLocationImpl location = original.location; | 4886 ElementLocationImpl location = original.location; |
4887 Element result = resynthesizer.getElement(location); | 4887 Element result = resynthesizer.getElement(location); |
4888 checkMinimalResynthesisWork(resynthesizer, original.library); | 4888 checkMinimalResynthesisWork(resynthesizer, original.library); |
4889 // Check that no other summaries needed to be resynthesized to resynthesize | 4889 // Check that no other summaries needed to be resynthesized to resynthesize |
4890 // the library element. | 4890 // the library element. |
4891 expect(resynthesizer.resynthesisCount, 1); | 4891 expect(resynthesizer.resynthesisCount, 3); |
4892 expect(result.location, location); | 4892 expect(result.location, location); |
4893 return result; | 4893 return result; |
4894 } | 4894 } |
4895 } | 4895 } |
4896 | 4896 |
4897 class TestSummaryResynthesizer extends SummaryResynthesizer { | 4897 class TestSummaryResynthesizer extends SummaryResynthesizer { |
4898 final Map<String, UnlinkedUnit> unlinkedSummaries; | 4898 final Map<String, UnlinkedUnit> unlinkedSummaries; |
4899 final Map<String, LinkedLibrary> linkedSummaries; | 4899 final Map<String, LinkedLibrary> linkedSummaries; |
4900 final bool allowMissingFiles; | 4900 final bool allowMissingFiles; |
4901 | 4901 |
4902 /** | 4902 /** |
4903 * The set of uris for which unlinked summaries have been requested using | 4903 * The set of uris for which unlinked summaries have been requested using |
4904 * [getUnlinkedSummary]. | 4904 * [getUnlinkedSummary]. |
4905 */ | 4905 */ |
4906 final Set<String> unlinkedSummariesRequested = new Set<String>(); | 4906 final Set<String> unlinkedSummariesRequested = new Set<String>(); |
4907 | 4907 |
4908 /** | 4908 /** |
4909 * The set of uris for which linked summaries have been requested using | 4909 * The set of uris for which linked summaries have been requested using |
4910 * [getLinkedSummary]. | 4910 * [getLinkedSummary]. |
4911 */ | 4911 */ |
4912 final Set<String> linkedSummariesRequested = new Set<String>(); | 4912 final Set<String> linkedSummariesRequested = new Set<String>(); |
4913 | 4913 |
4914 TestSummaryResynthesizer(SummaryResynthesizer parent, AnalysisContext context, | 4914 TestSummaryResynthesizer(SummaryResynthesizer parent, AnalysisContext context, |
4915 this.unlinkedSummaries, this.linkedSummaries, this.allowMissingFiles) | 4915 this.unlinkedSummaries, this.linkedSummaries, this.allowMissingFiles) |
4916 : super(parent, context, context.typeProvider, context.sourceFactory, | 4916 : super(parent, context, context.sourceFactory, |
4917 context.analysisOptions.strongMode); | 4917 context.analysisOptions.strongMode) { |
| 4918 // Clear after resynthesizing TypeProvider in super(). |
| 4919 unlinkedSummariesRequested.clear(); |
| 4920 linkedSummariesRequested.clear(); |
| 4921 } |
4918 | 4922 |
4919 @override | 4923 @override |
4920 LinkedLibrary getLinkedSummary(String uri) { | 4924 LinkedLibrary getLinkedSummary(String uri) { |
4921 linkedSummariesRequested.add(uri); | 4925 linkedSummariesRequested.add(uri); |
4922 LinkedLibrary serializedLibrary = linkedSummaries[uri]; | 4926 LinkedLibrary serializedLibrary = linkedSummaries[uri]; |
4923 if (serializedLibrary == null && !allowMissingFiles) { | 4927 if (serializedLibrary == null && !allowMissingFiles) { |
4924 fail('Unexpectedly tried to get linked summary for $uri'); | 4928 fail('Unexpectedly tried to get linked summary for $uri'); |
4925 } | 4929 } |
4926 return serializedLibrary; | 4930 return serializedLibrary; |
4927 } | 4931 } |
4928 | 4932 |
4929 @override | 4933 @override |
4930 UnlinkedUnit getUnlinkedSummary(String uri) { | 4934 UnlinkedUnit getUnlinkedSummary(String uri) { |
4931 unlinkedSummariesRequested.add(uri); | 4935 unlinkedSummariesRequested.add(uri); |
4932 UnlinkedUnit serializedUnit = unlinkedSummaries[uri]; | 4936 UnlinkedUnit serializedUnit = unlinkedSummaries[uri]; |
4933 if (serializedUnit == null && !allowMissingFiles) { | 4937 if (serializedUnit == null && !allowMissingFiles) { |
4934 fail('Unexpectedly tried to get unlinked summary for $uri'); | 4938 fail('Unexpectedly tried to get unlinked summary for $uri'); |
4935 } | 4939 } |
4936 return serializedUnit; | 4940 return serializedUnit; |
4937 } | 4941 } |
4938 | 4942 |
4939 @override | 4943 @override |
4940 bool hasLibrarySummary(String uri) { | 4944 bool hasLibrarySummary(String uri) { |
4941 return true; | 4945 return true; |
4942 } | 4946 } |
4943 } | 4947 } |
OLD | NEW |