Index: pkg/analysis_server/test/integration/support/integration_test_methods.dart |
diff --git a/pkg/analysis_server/test/integration/support/integration_test_methods.dart b/pkg/analysis_server/test/integration/support/integration_test_methods.dart |
index be714c71e016febca0bd70b9317ec7c615fc75dd..409e4e19f63819a4475cba82b06152f013562021 100644 |
--- a/pkg/analysis_server/test/integration/support/integration_test_methods.dart |
+++ b/pkg/analysis_server/test/integration/support/integration_test_methods.dart |
@@ -235,37 +235,51 @@ abstract class IntegrationTestMixin { |
} |
/** |
- * Return the transitive closure of reachable sources for a given file. |
+ * Return a description of all of the elements referenced in a given region |
+ * of a given file that come from imported libraries. |
* |
- * If a request is made for a file which does not exist, or which is not |
+ * If a request is made for a file that does not exist, or that is not |
* currently subject to analysis (e.g. because it is not associated with any |
- * analysis root specified to analysis.setAnalysisRoots), an error of type |
- * GET_REACHABLE_SOURCES_INVALID_FILE will be generated. |
+ * analysis root specified via analysis.setAnalysisRoots), an error of type |
+ * GET_IMPORTED_ELEMENTS_INVALID_FILE will be generated. |
* |
* Parameters |
* |
* file: FilePath |
* |
- * The file for which reachable source information is being requested. |
+ * The file in which import information is being requested. |
+ * |
+ * offset: int |
+ * |
+ * The offset of the region for which import information is being |
+ * requested. |
+ * |
+ * length: int |
+ * |
+ * The length of the region for which import information is being |
+ * requested. |
* |
* Returns |
* |
- * sources: Map<String, List<String>> |
+ * elements: List<ImportedElements> |
* |
- * A mapping from source URIs to directly reachable source URIs. For |
- * example, a file "foo.dart" that imports "bar.dart" would have the |
- * corresponding mapping { "file:///foo.dart" : ["file:///bar.dart"] }. If |
- * "bar.dart" has further imports (or exports) there will be a mapping from |
- * the URI "file:///bar.dart" to them. To check if a specific URI is |
- * reachable from a given file, clients can check for its presence in the |
- * resulting key set. |
+ * The information about the elements that are referenced in the specified |
+ * region of the specified file that come from imported libraries. |
+ * |
+ * complete: bool |
+ * |
+ * True if all of the elements that are referenced in the specified region |
+ * are included in the list of elements. The list of elements will be |
+ * incomplete if there is an error in the specified region that prevents an |
+ * identifier from being resolved to a single element. |
*/ |
- Future<AnalysisGetReachableSourcesResult> sendAnalysisGetReachableSources( |
- String file) async { |
- var params = new AnalysisGetReachableSourcesParams(file).toJson(); |
- var result = await server.send("analysis.getReachableSources", params); |
+ Future<AnalysisGetImportedElementsResult> sendAnalysisGetImportedElements( |
+ String file, int offset, int length) async { |
+ var params = |
+ new AnalysisGetImportedElementsParams(file, offset, length).toJson(); |
+ var result = await server.send("analysis.getImportedElements", params); |
ResponseDecoder decoder = new ResponseDecoder(null); |
- return new AnalysisGetReachableSourcesResult.fromJson( |
+ return new AnalysisGetImportedElementsResult.fromJson( |
decoder, 'result', result); |
} |
@@ -360,6 +374,41 @@ abstract class IntegrationTestMixin { |
} |
/** |
+ * Return the transitive closure of reachable sources for a given file. |
+ * |
+ * If a request is made for a file which does not exist, or which is not |
+ * currently subject to analysis (e.g. because it is not associated with any |
+ * analysis root specified to analysis.setAnalysisRoots), an error of type |
+ * GET_REACHABLE_SOURCES_INVALID_FILE will be generated. |
+ * |
+ * Parameters |
+ * |
+ * file: FilePath |
+ * |
+ * The file for which reachable source information is being requested. |
+ * |
+ * Returns |
+ * |
+ * sources: Map<String, List<String>> |
+ * |
+ * A mapping from source URIs to directly reachable source URIs. For |
+ * example, a file "foo.dart" that imports "bar.dart" would have the |
+ * corresponding mapping { "file:///foo.dart" : ["file:///bar.dart"] }. If |
+ * "bar.dart" has further imports (or exports) there will be a mapping from |
+ * the URI "file:///bar.dart" to them. To check if a specific URI is |
+ * reachable from a given file, clients can check for its presence in the |
+ * resulting key set. |
+ */ |
+ Future<AnalysisGetReachableSourcesResult> sendAnalysisGetReachableSources( |
+ String file) async { |
+ var params = new AnalysisGetReachableSourcesParams(file).toJson(); |
+ var result = await server.send("analysis.getReachableSources", params); |
+ ResponseDecoder decoder = new ResponseDecoder(null); |
+ return new AnalysisGetReachableSourcesResult.fromJson( |
+ decoder, 'result', result); |
+ } |
+ |
+ /** |
* Force the re-analysis of everything contained in the specified analysis |
* roots. This will cause all previously computed analysis results to be |
* discarded and recomputed, and will cause all subscribed notifications to |
@@ -1572,6 +1621,44 @@ abstract class IntegrationTestMixin { |
} |
/** |
+ * Return a list of edits that would need to be applied in order to ensure |
+ * that all of the elements in the specified list of imported elements are |
+ * accessible within the library. |
+ * |
+ * Parameters |
+ * |
+ * file: FilePath |
+ * |
+ * The file in which the specified elements are to be made accessible. |
+ * |
+ * elements: List<ImportedElements> |
+ * |
+ * The elements to be made accessible in the specified file. |
+ * |
+ * Returns |
+ * |
+ * edits: List<SourceEdit> |
+ * |
+ * The edit(s) to be applied in order to make the specified elements |
+ * accessible. |
+ * |
+ * complete: bool |
+ * |
+ * True if all of the elements that are to be made accessible would be |
+ * accessible if the edits were applied. The edits will not be complete, |
+ * for example, if one of the libraries cannot be referenced in the target |
+ * library or if one of the element names is already imported from a |
+ * different library. |
+ */ |
+ Future<EditImportElementsResult> sendEditImportElements( |
+ String file, List<ImportedElements> elements) async { |
+ var params = new EditImportElementsParams(file, elements).toJson(); |
+ var result = await server.send("edit.importElements", params); |
+ ResponseDecoder decoder = new ResponseDecoder(null); |
+ return new EditImportElementsResult.fromJson(decoder, 'result', result); |
+ } |
+ |
+ /** |
* Sort all of the directives, unit and class members of the given Dart file. |
* |
* If a request is made for a file that does not exist, does not belong to an |