Flutter Engine
The Flutter Engine
AnalysisServer.java
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
3 * for details. All rights reserved. Use of this source code is governed by a
4 * BSD-style license that can be found in the LICENSE file.
5 *
6 * This file has been automatically generated. Please do not edit it manually.
7 * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
8 */
9package com.google.dart.server.generated;
10
11import com.google.dart.server.*;
12import org.dartlang.analysis.server.protocol.*;
13
14import java.util.List;
15import java.util.Map;
16
17/**
18 * The interface {@code AnalysisServer} defines the behavior of objects that interface to an
19 * analysis server.
20 *
21 * @coverage dart.server
22 */
23public interface AnalysisServer {
24
25 /**
26 * Add the given listener to the list of listeners that will receive notification when new
27 * analysis results become available.
28 *
29 * @param listener the listener to be added
30 */
31 public void addAnalysisServerListener(AnalysisServerListener listener);
32
33 /**
34 * Add the given listener to the list of listeners that will receive notification when
35 * requests are made by an analysis server client.
36 *
37 * @param listener the listener to be added
38 */
39 public void addRequestListener(RequestListener listener);
40
41 /**
42 * Add the given listener to the list of listeners that will receive notification when
43 * responses are received by an analysis server client.
44 *
45 * @param listener the listener to be added
46 */
47 public void addResponseListener(ResponseListener listener);
48
49 /**
50 * Add the given listener to the list of listeners that will receive notification when the server
51 * is not active
52 *
53 * @param listener the listener to be added
54 */
55 public void addStatusListener(AnalysisServerStatusListener listener);
56
57 /**
58 * {@code analysis.getErrors}
59 *
60 * Return the errors associated with the given file. If the errors for the given file have not yet
61 * been computed, or the most recently computed errors for the given file are out of date, then the
62 * response for this request will be delayed until they have been computed. If some or all of the
63 * errors for the file cannot be computed, then the subset of the errors that can be computed will
64 * be returned and the response will contain an error to indicate why the errors could not be
65 * computed. If the content of the file changes after this request was received but before a
66 * response could be sent, then an error of type CONTENT_MODIFIED will be generated.
67 *
68 * This request is intended to be used by clients that cannot asynchronously apply updated error
69 * information. Clients that can apply error information as it becomes available should use the
70 * information provided by the 'analysis.errors' notification.
71 *
72 * If a request is made for a file which does not exist, or which is not currently subject to
73 * analysis (e.g. because it is not associated with any analysis root specified to
74 * analysis.setAnalysisRoots), an error of type GET_ERRORS_INVALID_FILE will be generated.
75 *
76 * @param file The file for which errors are being requested.
77 */
78 public void analysis_getErrors(String file, GetErrorsConsumer consumer);
79
80 /**
81 * {@code analysis.getHover}
82 *
83 * Return the hover information associate with the given location. If some or all of the hover
84 * information is not available at the time this request is processed the information will be
85 * omitted from the response.
86 *
87 * @param file The file in which hover information is being requested.
88 * @param offset The offset for which hover information is being requested.
89 */
90 public void analysis_getHover(String file, int offset, GetHoverConsumer consumer);
91
92 /**
93 * {@code analysis.getImportedElements}
94 *
95 * Return a description of all of the elements referenced in a given region of a given file that
96 * come from imported libraries.
97 *
98 * If a request is made for a file that does not exist, or that is not currently subject to
99 * analysis (e.g. because it is not associated with any analysis root specified via
100 * analysis.setAnalysisRoots), an error of type GET_IMPORTED_ELEMENTS_INVALID_FILE will be
101 * generated.
102 *
103 * @param file The file in which import information is being requested.
104 * @param offset The offset of the region for which import information is being requested.
105 * @param length The length of the region for which import information is being requested.
106 */
107 public void analysis_getImportedElements(String file, int offset, int length, GetImportedElementsConsumer consumer);
108
109 /**
110 * {@code analysis.getLibraryDependencies}
111 *
112 * Return library dependency information for use in client-side indexing and package URI
113 * resolution.
114 *
115 * Clients that are only using the libraries field should consider using the analyzedFiles
116 * notification instead.
117 */
118 public void analysis_getLibraryDependencies(GetLibraryDependenciesConsumer consumer);
119
120 /**
121 * {@code analysis.getNavigation}
122 *
123 * Return the navigation information associated with the given region of the given file. If the
124 * navigation information for the given file has not yet been computed, or the most recently
125 * computed navigation information for the given file is out of date, then the response for this
126 * request will be delayed until it has been computed. If the content of the file changes after
127 * this request was received but before a response could be sent, then an error of type
128 * CONTENT_MODIFIED will be generated.
129 *
130 * If a navigation region overlaps (but extends either before or after) the given region of the
131 * file it will be included in the result. This means that it is theoretically possible to get the
132 * same navigation region in response to multiple requests. Clients can avoid this by always
133 * choosing a region that starts at the beginning of a line and ends at the end of a (possibly
134 * different) line in the file.
135 *
136 * If a request is made for a file which does not exist, or which is not currently subject to
137 * analysis (e.g. because it is not associated with any analysis root specified to
138 * analysis.setAnalysisRoots), an error of type GET_NAVIGATION_INVALID_FILE will be generated.
139 *
140 * @param file The file in which navigation information is being requested.
141 * @param offset The offset of the region for which navigation information is being requested.
142 * @param length The length of the region for which navigation information is being requested.
143 */
144 public void analysis_getNavigation(String file, int offset, int length, GetNavigationConsumer consumer);
145
146 /**
147 * {@code analysis.getReachableSources}
148 *
149 * Return the transitive closure of reachable sources for a given file.
150 *
151 * If a request is made for a file which does not exist, or which is not currently subject to
152 * analysis (e.g. because it is not associated with any analysis root specified to
153 * analysis.setAnalysisRoots), an error of type GET_REACHABLE_SOURCES_INVALID_FILE will be
154 * generated.
155 *
156 * @param file The file for which reachable source information is being requested.
157 *
158 * @deprecated
159 */
160 public void analysis_getReachableSources(String file, GetReachableSourcesConsumer consumer);
161
162 /**
163 * {@code analysis.getSignature}
164 *
165 * Return the signature information associated with the given location in the given file. If the
166 * signature information for the given file has not yet been computed, or the most recently
167 * computed signature information for the given file is out of date, then the response for this
168 * request will be delayed until it has been computed. If a request is made for a file which does
169 * not exist, or which is not currently subject to analysis (e.g. because it is not associated with
170 * any analysis root specified to analysis.setAnalysisRoots), an error of type
171 * GET_SIGNATURE_INVALID_FILE will be generated. If the location given is not inside the argument
172 * list for a function (including method and constructor) invocation, then an error of type
173 * GET_SIGNATURE_INVALID_OFFSET will be generated. If the location is inside an argument list but
174 * the function is not defined or cannot be determined (such as a method invocation where the
175 * target has type 'dynamic') then an error of type GET_SIGNATURE_UNKNOWN_FUNCTION will be
176 * generated.
177 *
178 * @param file The file in which signature information is being requested.
179 * @param offset The location for which signature information is being requested.
180 */
181 public void analysis_getSignature(String file, int offset, GetSignatureConsumer consumer);
182
183 /**
184 * {@code analysis.reanalyze}
185 *
186 * Force re-reading of all potentially changed files, re-resolving of all referenced URIs, and
187 * corresponding re-analysis of everything affected in the current analysis roots.
188 */
189 public void analysis_reanalyze();
190
191 /**
192 * {@code analysis.setAnalysisRoots}
193 *
194 * Sets the root paths used to determine which files to analyze. The set of files to be analyzed
195 * are all of the files in one of the root paths that are not either explicitly or implicitly
196 * excluded. A file is explicitly excluded if it is in one of the excluded paths. A file is
197 * implicitly excluded if it is in a subdirectory of one of the root paths where the name of the
198 * subdirectory starts with a period (that is, a hidden directory).
199 *
200 * Note that this request determines the set of requested analysis roots. The actual set of
201 * analysis roots at any given time is the intersection of this set with the set of files and
202 * directories actually present on the filesystem. When the filesystem changes, the actual set of
203 * analysis roots is automatically updated, but the set of requested analysis roots is unchanged.
204 * This means that if the client sets an analysis root before the root becomes visible to server in
205 * the filesystem, there is no error; once the server sees the root in the filesystem it will start
206 * analyzing it. Similarly, server will stop analyzing files that are removed from the file system
207 * but they will remain in the set of requested roots.
208 *
209 * If an included path represents a file, then server will look in the directory containing the
210 * file for a pubspec.yaml file. If none is found, then the parents of the directory will be
211 * searched until such a file is found or the root of the file system is reached. If such a file is
212 * found, it will be used to resolve package: URI's within the file.
213 *
214 * @param included A list of the files and directories that should be analyzed.
215 * @param excluded A list of the files and directories within the included directories that should
216 * not be analyzed.
217 * @param packageRoots A mapping from source directories to package roots that should override the
218 * normal package: URI resolution mechanism. If a package root is a file, then the analyzer
219 * will behave as though that file is a ".dart_tool/package_config.json" file in the source
220 * directory. The effect is the same as specifying the file as a "--packages" parameter to
221 * the Dart VM when executing any Dart file inside the source directory. Files in any
222 * directories that are not overridden by this mapping have their package: URI's resolved
223 * using the normal pubspec.yaml mechanism. If this field is absent, or the empty map is
224 * specified, that indicates that the normal pubspec.yaml mechanism should always be used.
225 */
226 public void analysis_setAnalysisRoots(List<String> included, List<String> excluded, Map<String, String> packageRoots);
227
228 /**
229 * {@code analysis.setGeneralSubscriptions}
230 *
231 * Subscribe for general services (that is, services that are not specific to individual files).
232 * All previous subscriptions are replaced by the given set of services.
233 *
234 * It is an error if any of the elements in the list are not valid services. If there is an error,
235 * then the current subscriptions will remain unchanged.
236 *
237 * @param subscriptions A list of the services being subscribed to.
238 */
240
241 /**
242 * {@code analysis.setPriorityFiles}
243 *
244 * Set the priority files to the files in the given list. A priority file is a file that is given
245 * priority when scheduling which analysis work to do first. The list typically contains those
246 * files that are visible to the user and those for which analysis results will have the biggest
247 * impact on the user experience. The order of the files within the list is significant: the first
248 * file will be given higher priority than the second, the second higher priority than the third,
249 * and so on.
250 *
251 * Note that this request determines the set of requested priority files. The actual set of
252 * priority files is the intersection of the requested set of priority files with the set of files
253 * currently subject to analysis. (See analysis.setSubscriptions for a description of files that
254 * are subject to analysis.)
255 *
256 * If a requested priority file is a directory it is ignored, but remains in the set of requested
257 * priority files so that if it later becomes a file it can be included in the set of actual
258 * priority files.
259 *
260 * @param files The files that are to be a priority for analysis.
261 */
263
264 /**
265 * {@code analysis.setSubscriptions}
266 *
267 * Subscribe for services that are specific to individual files. All previous subscriptions are
268 * replaced by the current set of subscriptions. If a given service is not included as a key in the
269 * map then no files will be subscribed to the service, exactly as if the service had been included
270 * in the map with an explicit empty list of files.
271 *
272 * Note that this request determines the set of requested subscriptions. The actual set of
273 * subscriptions at any given time is the intersection of this set with the set of files currently
274 * subject to analysis. The files currently subject to analysis are the set of files contained
275 * within an actual analysis root but not excluded, plus all of the files transitively reachable
276 * from those files via import, export and part directives. (See analysis.setAnalysisRoots for an
277 * explanation of how the actual analysis roots are determined.) When the actual analysis roots
278 * change, the actual set of subscriptions is automatically updated, but the set of requested
279 * subscriptions is unchanged.
280 *
281 * If a requested subscription is a directory it is ignored, but remains in the set of requested
282 * subscriptions so that if it later becomes a file it can be included in the set of actual
283 * subscriptions.
284 *
285 * It is an error if any of the keys in the map are not valid services. If there is an error, then
286 * the existing subscriptions will remain unchanged.
287 *
288 * @param subscriptions A table mapping services to a list of the files being subscribed to the
289 * service.
290 */
291 public void analysis_setSubscriptions(Map<String, List<String>> subscriptions);
292
293 /**
294 * {@code analysis.updateContent}
295 *
296 * Update the content of one or more files. Files that were previously updated but not included in
297 * this update remain unchanged. This effectively represents an overlay of the filesystem. The
298 * files whose content is overridden are therefore seen by server as being files with the given
299 * content, even if the files do not exist on the filesystem or if the file path represents the
300 * path to a directory on the filesystem.
301 *
302 * @param files A table mapping the files whose content has changed to a description of the content
303 * change.
304 */
305 public void analysis_updateContent(Map<String, Object> files, UpdateContentConsumer consumer);
306
307 /**
308 * {@code analysis.updateOptions}
309 *
310 * Deprecated: all of the options can be set by users in an analysis options file.
311 *
312 * Update the options controlling analysis based on the given set of options. Any options that are
313 * not included in the analysis options will not be changed. If there are options in the analysis
314 * options that are not valid, they will be silently ignored.
315 *
316 * @param options The options that are to be used to control analysis.
317 *
318 * @deprecated
319 */
321
322 /**
323 * {@code analytics.enable}
324 *
325 * Deprecated: this option is no longer supported.
326 *
327 * Enable or disable the sending of analytics data. Note that there are other ways for users to
328 * change this setting, so clients cannot assume that they have complete control over this setting.
329 * In particular, there is no guarantee that the result returned by the isEnabled request will
330 * match the last value set via this request.
331 *
332 * @param value Enable or disable analytics.
333 *
334 * @deprecated
335 */
336 public void analytics_enable(boolean value);
337
338 /**
339 * {@code analytics.isEnabled}
340 *
341 * Deprecated: this flag is no longer supported.
342 *
343 * Query whether analytics is enabled.
344 *
345 * This flag controls whether the analysis server sends any analytics data to the cloud. If
346 * disabled, the analysis server does not send any analytics data, and any data sent to it by
347 * clients (from sendEvent and sendTiming) will be ignored.
348 *
349 * The value of this flag can be changed by other tools outside of the analysis server's process.
350 * When you query the flag, you get the value of the flag at a given moment. Clients should not use
351 * the value returned to decide whether or not to send the sendEvent and sendTiming requests. Those
352 * requests should be used unconditionally and server will determine whether or not it is
353 * appropriate to forward the information to the cloud at the time each request is received.
354 *
355 * @deprecated
356 */
357 public void analytics_isEnabled(IsEnabledConsumer consumer);
358
359 /**
360 * {@code analytics.sendEvent}
361 *
362 * Send information about client events.
363 *
364 * Ask the analysis server to include the fact that an action was performed in the client as part
365 * of the analytics data being sent. The data will only be included if the sending of analytics
366 * data is enabled at the time the request is processed. The action that was performed is indicated
367 * by the value of the action field.
368 *
369 * The value of the action field should not include the identity of the client. The analytics data
370 * sent by server will include the client id passed in using the --client-id command-line argument.
371 * The request will be ignored if the client id was not provided when server was started.
372 *
373 * @param action The value used to indicate which action was performed.
374 */
375 public void analytics_sendEvent(String action);
376
377 /**
378 * {@code analytics.sendTiming}
379 *
380 * Send timing information for client events (e.g. code completions).
381 *
382 * Ask the analysis server to include the fact that a timed event occurred as part of the analytics
383 * data being sent. The data will only be included if the sending of analytics data is enabled at
384 * the time the request is processed.
385 *
386 * The value of the event field should not include the identity of the client. The analytics data
387 * sent by server will include the client id passed in using the --client-id command-line argument.
388 * The request will be ignored if the client id was not provided when server was started.
389 *
390 * @param event The name of the event.
391 * @param millis The duration of the event in milliseconds.
392 */
393 public void analytics_sendTiming(String event, int millis);
394
395 /**
396 * {@code completion.getSuggestionDetails2}
397 *
398 * Clients must make this request when the user has selected a completion suggestion with the
399 * isNotImported field set to true. The server will respond with the text to insert, as well as any
400 * SourceChange that needs to be applied in case the completion requires an additional import to be
401 * added. The text to insert might be different from the original suggestion to include an import
402 * prefix if the library will be imported with a prefix to avoid shadowing conflicts in the file.
403 *
404 * @param file The path of the file into which this completion is being inserted.
405 * @param offset The offset in the file where the completion will be inserted.
406 * @param completion The completion from the selected CompletionSuggestion. It could be a name of a
407 * class, or a name of a constructor in form "typeName.constructorName()", or an enumeration
408 * constant in form "enumName.constantName", etc.
409 * @param libraryUri The URI of the library to import, so that the element referenced in the
410 * completion becomes accessible.
411 */
412 public void completion_getSuggestionDetails2(String file, int offset, String completion, String libraryUri, GetSuggestionDetails2Consumer consumer);
413
414 /**
415 * {@code completion.getSuggestions2}
416 *
417 * Request that completion suggestions for the given offset in the given file be returned. The
418 * suggestions will be filtered using fuzzy matching with the already existing prefix.
419 *
420 * @param file The file containing the point at which suggestions are to be made.
421 * @param offset The offset within the file at which suggestions are to be made.
422 * @param maxResults The maximum number of suggestions to return. If the number of suggestions
423 * after filtering is greater than the maxResults, then isIncomplete is set to true.
424 * @param completionCaseMatchingMode The mode of code completion being invoked. If no value is
425 * provided, MATCH_FIRST_CHAR will be assumed.
426 * @param completionMode The mode of code completion being invoked. If no value is provided, BASIC
427 * will be assumed. BASIC is also the only currently supported.
428 * @param invocationCount The number of times that the user has invoked code completion at the same
429 * code location, counting from 1. If no value is provided, 1 will be assumed.
430 * @param timeout The approximate time in milliseconds that the server should spend. The server
431 * will perform some steps anyway, even if it takes longer than the specified timeout. This
432 * field is intended to be used for benchmarking, and usually should not be provided, so
433 * that the default timeout is used.
434 */
435 public void completion_getSuggestions2(String file, int offset, int maxResults, String completionCaseMatchingMode, String completionMode, int invocationCount, int timeout, GetSuggestions2Consumer consumer);
436
437 /**
438 * {@code completion.registerLibraryPaths}
439 *
440 * The client can make this request to express interest in certain libraries to receive completion
441 * suggestions from based on the client path. If this request is received before the client has
442 * used 'completion.setSubscriptions' to subscribe to the AVAILABLE_SUGGESTION_SETS service, then
443 * an error of type NOT_SUBSCRIBED_TO_AVAILABLE_SUGGESTION_SETS will be generated. All previous
444 * paths are replaced by the given set of paths.
445 *
446 * @param paths A list of objects each containing a path and the additional libraries from which
447 * the client is interested in receiving completion suggestions. If one configured path is
448 * beneath another, the descendant will override the ancestors' configured libraries of
449 * interest.
450 *
451 * @deprecated
452 */
454
455 /**
456 * {@code diagnostic.getDiagnostics}
457 *
458 * Return server diagnostics.
459 */
460 public void diagnostic_getDiagnostics(GetDiagnosticsConsumer consumer);
461
462 /**
463 * {@code diagnostic.getServerPort}
464 *
465 * Return the port of the diagnostic web server. If the server is not running this call will start
466 * the server. If unable to start the diagnostic web server, this call will return an error of
467 * DEBUG_PORT_COULD_NOT_BE_OPENED.
468 */
469 public void diagnostic_getServerPort(GetServerPortConsumer consumer);
470
471 /**
472 * {@code edit.bulkFixes}
473 *
474 * Analyze the specified sources for fixes that can be applied in bulk and return a set of
475 * suggested edits for those sources. These edits may include changes to sources outside the set of
476 * specified sources if a change in a specified source requires it.
477 *
478 * @param included A list of the files and directories for which edits should be suggested. If a
479 * request is made with a path that is invalid, e.g. is not absolute and normalized, an
480 * error of type INVALID_FILE_PATH_FORMAT will be generated. If a request is made for a file
481 * which does not exist, or which is not currently subject to analysis (e.g. because it is
482 * not associated with any analysis root specified to analysis.setAnalysisRoots), an error
483 * of type FILE_NOT_ANALYZED will be generated.
484 * @param inTestMode A flag indicating whether the bulk fixes are being run in test mode. The only
485 * difference is that in test mode the fix processor will look for a configuration file that
486 * can modify the content of the data file used to compute the fixes when data-driven fixes
487 * are being considered. If this field is omitted the flag defaults to false.
488 * @param updatePubspec A flag indicating whether to validate that the dependencies used by the
489 * included files are listed in the pubspec file. If specified, the fix processor will
490 * compute the set of packages imported in the source and check to see if they are listed in
491 * the corresponding pubspec file, and compute the fixes, if any. If this field is omitted
492 * the flag defaults to false.
493 * @param codes A list of diagnostic codes to be fixed.
494 */
495 public void edit_bulkFixes(List<String> included, boolean inTestMode, boolean updatePubspec, List<String> codes, BulkFixesConsumer consumer);
496
497 /**
498 * {@code edit.format}
499 *
500 * Format the contents of a single file. The currently selected region of text is passed in so that
501 * the selection can be preserved across the formatting operation. The updated selection will be as
502 * close to matching the original as possible, but whitespace at the beginning or end of the
503 * selected region will be ignored. If preserving selection information is not required, zero (0)
504 * can be specified for both the selection offset and selection length.
505 *
506 * If a request is made for a file which does not exist, or which is not currently subject to
507 * analysis (e.g. because it is not associated with any analysis root specified to
508 * analysis.setAnalysisRoots), an error of type FORMAT_INVALID_FILE will be generated. If the
509 * source contains syntax errors, an error of type FORMAT_WITH_ERRORS will be generated.
510 *
511 * @param file The file containing the code to be formatted.
512 * @param selectionOffset The offset of the current selection in the file.
513 * @param selectionLength The length of the current selection in the file.
514 * @param lineLength The line length to be used by the formatter.
515 */
516 public void edit_format(String file, int selectionOffset, int selectionLength, int lineLength, FormatConsumer consumer);
517
518 /**
519 * {@code edit.formatIfEnabled}
520 *
521 * Format the contents of the files in one or more directories, but only if the analysis options
522 * file for those files has enabled the 'format' option.
523 *
524 * If any of the specified directories does not exist, that directory will be ignored. If any of
525 * the files that are eligible for being formatted cannot be formatted because of a syntax error in
526 * the file, that file will be ignored.
527 *
528 * @param directories The paths of the directories containing the code to be formatted.
529 */
530 public void edit_formatIfEnabled(List<String> directories, FormatIfEnabledConsumer consumer);
531
532 /**
533 * {@code edit.getAssists}
534 *
535 * Return the set of assists that are available at the given location. An assist is distinguished
536 * from a refactoring primarily by the fact that it affects a single file and does not require user
537 * input in order to be performed.
538 *
539 * @param file The file containing the code for which assists are being requested.
540 * @param offset The offset of the code for which assists are being requested.
541 * @param length The length of the code for which assists are being requested.
542 */
543 public void edit_getAssists(String file, int offset, int length, GetAssistsConsumer consumer);
544
545 /**
546 * {@code edit.getAvailableRefactorings}
547 *
548 * Get a list of the kinds of refactorings that are valid for the given selection in the given
549 * file.
550 *
551 * @param file The file containing the code on which the refactoring would be based.
552 * @param offset The offset of the code on which the refactoring would be based.
553 * @param length The length of the code on which the refactoring would be based.
554 */
555 public void edit_getAvailableRefactorings(String file, int offset, int length, GetAvailableRefactoringsConsumer consumer);
556
557 /**
558 * {@code edit.getFixes}
559 *
560 * Return the set of fixes that are available for the errors at a given offset in a given file.
561 *
562 * If a request is made for a file which does not exist, or which is not currently subject to
563 * analysis (e.g. because it is not associated with any analysis root specified to
564 * analysis.setAnalysisRoots), an error of type GET_FIXES_INVALID_FILE will be generated.
565 *
566 * @param file The file containing the errors for which fixes are being requested.
567 * @param offset The offset used to select the errors for which fixes will be returned.
568 */
569 public void edit_getFixes(String file, int offset, GetFixesConsumer consumer);
570
571 /**
572 * {@code edit.getPostfixCompletion}
573 *
574 * Get the changes required to convert the postfix template at the given location into the
575 * template's expanded form.
576 *
577 * @param file The file containing the postfix template to be expanded.
578 * @param key The unique name that identifies the template in use.
579 * @param offset The offset used to identify the code to which the template will be applied.
580 */
581 public void edit_getPostfixCompletion(String file, String key, int offset, GetPostfixCompletionConsumer consumer);
582
583 /**
584 * {@code edit.getRefactoring}
585 *
586 * Get the changes required to perform a refactoring.
587 *
588 * If another refactoring request is received during the processing of this one, an error of type
589 * REFACTORING_REQUEST_CANCELLED will be generated.
590 *
591 * @param kind The kind of refactoring to be performed.
592 * @param file The file containing the code involved in the refactoring.
593 * @param offset The offset of the region involved in the refactoring.
594 * @param length The length of the region involved in the refactoring.
595 * @param validateOnly True if the client is only requesting that the values of the options be
596 * validated and no change be generated.
597 * @param options Data used to provide values provided by the user. The structure of the data is
598 * dependent on the kind of refactoring being performed. The data that is expected is
599 * documented in the section titled Refactorings, labeled as "Options". This field can be
600 * omitted if the refactoring does not require any options or if the values of those options
601 * are not known.
602 */
603 public void edit_getRefactoring(String kind, String file, int offset, int length, boolean validateOnly, RefactoringOptions options, GetRefactoringConsumer consumer);
604
605 /**
606 * {@code edit.getStatementCompletion}
607 *
608 * Get the changes required to convert the partial statement at the given location into a
609 * syntactically valid statement. If the current statement is already valid the change will insert
610 * a newline plus appropriate indentation at the end of the line containing the offset. If a change
611 * that makes the statement valid cannot be determined (perhaps because it has not yet been
612 * implemented) the statement will be considered already valid and the appropriate change returned.
613 *
614 * @param file The file containing the statement to be completed.
615 * @param offset The offset used to identify the statement to be completed.
616 */
617 public void edit_getStatementCompletion(String file, int offset, GetStatementCompletionConsumer consumer);
618
619 /**
620 * {@code edit.importElements}
621 *
622 * Return a list of edits that would need to be applied in order to ensure that all of the elements
623 * in the specified list of imported elements are accessible within the library.
624 *
625 * If a request is made for a file that does not exist, or that is not currently subject to
626 * analysis (e.g. because it is not associated with any analysis root specified via
627 * analysis.setAnalysisRoots), an error of type IMPORT_ELEMENTS_INVALID_FILE will be generated.
628 *
629 * @param file The file in which the specified elements are to be made accessible.
630 * @param elements The elements to be made accessible in the specified file.
631 * @param offset The offset at which the specified elements need to be made accessible. If
632 * provided, this is used to guard against adding imports for text that would be inserted
633 * into a comment, string literal, or other location where the imports would not be
634 * necessary.
635 */
636 public void edit_importElements(String file, List<ImportedElements> elements, int offset, ImportElementsConsumer consumer);
637
638 /**
639 * {@code edit.isPostfixCompletionApplicable}
640 *
641 * Determine if the request postfix completion template is applicable at the given location in the
642 * given file.
643 *
644 * @param file The file containing the postfix template to be expanded.
645 * @param key The unique name that identifies the template in use.
646 * @param offset The offset used to identify the code to which the template will be applied.
647 */
648 public void edit_isPostfixCompletionApplicable(String file, String key, int offset, IsPostfixCompletionApplicableConsumer consumer);
649
650 /**
651 * {@code edit.listPostfixCompletionTemplates}
652 *
653 * Return a list of all postfix templates currently available.
654 */
655 public void edit_listPostfixCompletionTemplates(ListPostfixCompletionTemplatesConsumer consumer);
656
657 /**
658 * {@code edit.organizeDirectives}
659 *
660 * Organizes all of the directives - removes unused imports and sorts directives of the given Dart
661 * file according to the Dart Style Guide.
662 *
663 * If a request is made for a file that does not exist, does not belong to an analysis root or is
664 * not a Dart file, FILE_NOT_ANALYZED will be generated.
665 *
666 * If directives of the Dart file cannot be organized, for example because it has scan or parse
667 * errors, or by other reasons, ORGANIZE_DIRECTIVES_ERROR will be generated. The message will
668 * provide details about the reason.
669 *
670 * @param file The Dart file to organize directives in.
671 */
672 public void edit_organizeDirectives(String file, OrganizeDirectivesConsumer consumer);
673
674 /**
675 * {@code edit.sortMembers}
676 *
677 * Sort all of the directives, unit and class members of the given Dart file.
678 *
679 * If a request is made for a file that does not exist, does not belong to an analysis root or is
680 * not a Dart file, SORT_MEMBERS_INVALID_FILE will be generated.
681 *
682 * If the Dart file has scan or parse errors, SORT_MEMBERS_PARSE_ERRORS will be generated.
683 *
684 * @param file The Dart file to sort.
685 */
686 public void edit_sortMembers(String file, SortMembersConsumer consumer);
687
688 /**
689 * {@code execution.createContext}
690 *
691 * Create an execution context for the executable file with the given path. The context that is
692 * created will persist until execution.deleteContext is used to delete it. Clients, therefore, are
693 * responsible for managing the lifetime of execution contexts.
694 *
695 * @param contextRoot The path of the Dart or HTML file that will be launched, or the path of the
696 * directory containing the file.
697 */
698 public void execution_createContext(String contextRoot, CreateContextConsumer consumer);
699
700 /**
701 * {@code execution.deleteContext}
702 *
703 * Delete the execution context with the given identifier. The context id is no longer valid after
704 * this command. The server is allowed to re-use ids when they are no longer valid.
705 *
706 * @param id The identifier of the execution context that is to be deleted.
707 */
708 public void execution_deleteContext(String id);
709
710 /**
711 * {@code execution.getSuggestions}
712 *
713 * Request completion suggestions for the given runtime context.
714 *
715 * It might take one or two requests of this type to get completion suggestions. The first request
716 * should have only "code", "offset", and "variables", but not "expressions". If there are
717 * sub-expressions that can have different runtime types, and are considered to be safe to evaluate
718 * at runtime (e.g. getters), so using their actual runtime types can improve completion results,
719 * the server will not include the "suggestions" field in the response, and instead will return the
720 * "expressions" field. The client will use debug API to get current runtime types for these
721 * sub-expressions and send another request, this time with "expressions". If there are no
722 * interesting sub-expressions to get runtime types for, or when the "expressions" field is
723 * provided by the client, the server will return "suggestions" in the response.
724 *
725 * @param code The code to get suggestions in.
726 * @param offset The offset within the code to get suggestions at.
727 * @param contextFile The path of the context file, e.g. the file of the current debugger frame.
728 * The combination of the context file and context offset can be used to ensure that all
729 * variables of the context are available for completion (with their static types).
730 * @param contextOffset The offset in the context file, e.g. the line offset in the current
731 * debugger frame.
732 * @param variables The runtime context variables that are potentially referenced in the code.
733 * @param expressions The list of sub-expressions in the code for which the client wants to provide
734 * runtime types. It does not have to be the full list of expressions requested by the
735 * server, for missing expressions their static types will be used. When this field is
736 * omitted, the server will return completion suggestions only when there are no interesting
737 * sub-expressions in the given code. The client may provide an empty list, in this case the
738 * server will return completion suggestions.
739 */
740 public void execution_getSuggestions(String code, int offset, String contextFile, int contextOffset, List<RuntimeCompletionVariable> variables, List<RuntimeCompletionExpression> expressions, GetSuggestionsConsumer consumer);
741
742 /**
743 * {@code execution.mapUri}
744 *
745 * Map a URI from the execution context to the file that it corresponds to, or map a file to the
746 * URI that it corresponds to in the execution context.
747 *
748 * Exactly one of the file and uri fields must be provided. If both fields are provided, then an
749 * error of type INVALID_PARAMETER will be generated. Similarly, if neither field is provided, then
750 * an error of type INVALID_PARAMETER will be generated.
751 *
752 * If the file field is provided and the value is not the path of a file (either the file does not
753 * exist or the path references something other than a file), then an error of type
754 * INVALID_PARAMETER will be generated.
755 *
756 * If the uri field is provided and the value is not a valid URI or if the URI references something
757 * that is not a file (either a file that does not exist or something other than a file), then an
758 * error of type INVALID_PARAMETER will be generated.
759 *
760 * If the contextRoot used to create the execution context does not exist, then an error of type
761 * INVALID_EXECUTION_CONTEXT will be generated.
762 *
763 * @param id The identifier of the execution context in which the URI is to be mapped.
764 * @param file The path of the file to be mapped into a URI.
765 * @param uri The URI to be mapped into a file path.
766 */
767 public void execution_mapUri(String id, String file, String uri, MapUriConsumer consumer);
768
769 /**
770 * {@code execution.setSubscriptions}
771 *
772 * Deprecated: the analysis server no longer fires LAUNCH_DATA events.
773 *
774 * Subscribe for services. All previous subscriptions are replaced by the given set of services.
775 *
776 * It is an error if any of the elements in the list are not valid services. If there is an error,
777 * then the current subscriptions will remain unchanged.
778 *
779 * @param subscriptions A list of the services being subscribed to.
780 *
781 * @deprecated
782 */
783 public void execution_setSubscriptions(List<String> subscriptions);
784
785 /**
786 * {@code flutter.getWidgetDescription}
787 *
788 * Return the description of the widget instance at the given location.
789 *
790 * If the location does not have a support widget, an error of type
791 * FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET will be generated.
792 *
793 * If a change to a file happens while widget descriptions are computed, an error of type
794 * FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED will be generated.
795 *
796 * @param file The file where the widget instance is created.
797 * @param offset The offset in the file where the widget instance is created.
798 */
799 public void flutter_getWidgetDescription(String file, int offset, GetWidgetDescriptionConsumer consumer);
800
801 /**
802 * {@code flutter.setSubscriptions}
803 *
804 * Subscribe for services that are specific to individual files. All previous subscriptions are
805 * replaced by the current set of subscriptions. If a given service is not included as a key in the
806 * map then no files will be subscribed to the service, exactly as if the service had been included
807 * in the map with an explicit empty list of files.
808 *
809 * Note that this request determines the set of requested subscriptions. The actual set of
810 * subscriptions at any given time is the intersection of this set with the set of files currently
811 * subject to analysis. The files currently subject to analysis are the set of files contained
812 * within an actual analysis root but not excluded, plus all of the files transitively reachable
813 * from those files via import, export and part directives. (See analysis.setAnalysisRoots for an
814 * explanation of how the actual analysis roots are determined.) When the actual analysis roots
815 * change, the actual set of subscriptions is automatically updated, but the set of requested
816 * subscriptions is unchanged.
817 *
818 * If a requested subscription is a directory it is ignored, but remains in the set of requested
819 * subscriptions so that if it later becomes a file it can be included in the set of actual
820 * subscriptions.
821 *
822 * It is an error if any of the keys in the map are not valid services. If there is an error, then
823 * the existing subscriptions will remain unchanged.
824 *
825 * @param subscriptions A table mapping services to a list of the files being subscribed to the
826 * service.
827 */
828 public void flutter_setSubscriptions(Map<String, List<String>> subscriptions);
829
830 /**
831 * {@code flutter.setWidgetPropertyValue}
832 *
833 * Set the value of a property, or remove it.
834 *
835 * The server will generate a change that the client should apply to the project to get the value
836 * of the property set to the new value. The complexity of the change might be from updating a
837 * single literal value in the code, to updating multiple files to get libraries imported, and new
838 * intermediate widgets instantiated.
839 *
840 * @param id The identifier of the property, previously returned as a part of a
841 * FlutterWidgetProperty. An error of type FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID is
842 * generated if the identifier is not valid.
843 * @param value The new value to set for the property. If absent, indicates that the property
844 * should be removed. If the property corresponds to an optional parameter, the
845 * corresponding named argument is removed. If the property isRequired is true,
846 * FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED error is generated. If the expression is
847 * not a syntactically valid Dart code, then
848 * FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION is reported.
849 */
850 public void flutter_setWidgetPropertyValue(int id, FlutterWidgetPropertyValue value, SetWidgetPropertyValueConsumer consumer);
851
852 /**
853 * Return {@code true} if the socket is open.
854 */
855 public boolean isSocketOpen();
856
857 /**
858 * {@code lsp.handle}
859 *
860 * Call an LSP handler. Message can be requests or notifications.
861 *
862 * @param lspMessage The LSP RequestMessage.
863 */
864 public void lsp_handle(Object lspMessage, HandleConsumer consumer);
865
866 /**
867 * Remove the given listener from the list of listeners that will receive notification when new
868 * analysis results become available.
869 *
870 * @param listener the listener to be removed
871 */
872 public void removeAnalysisServerListener(AnalysisServerListener listener);
873
874 /**
875 * Remove the given listener from the list of listeners that will receive notification when
876 * requests are made by an analysis server client.
877 *
878 * @param listener the listener to be removed
879 */
880 public void removeRequestListener(RequestListener listener);
881
882 /**
883 * Remove the given listener from the list of listeners that will receive notification when
884 * responses are received by an analysis server client.
885 *
886 * @param listener the listener to be removed
887 */
888 public void removeResponseListener(ResponseListener listener);
889
890 /**
891 * {@code search.findElementReferences}
892 *
893 * Perform a search for references to the element defined or referenced at the given offset in the
894 * given file.
895 *
896 * An identifier is returned immediately, and individual results will be returned via the
897 * search.results notification as they become available.
898 *
899 * @param file The file containing the declaration of or reference to the element used to define
900 * the search.
901 * @param offset The offset within the file of the declaration of or reference to the element.
902 * @param includePotential True if potential matches are to be included in the results.
903 */
904 public void search_findElementReferences(String file, int offset, boolean includePotential, FindElementReferencesConsumer consumer);
905
906 /**
907 * {@code search.findMemberDeclarations}
908 *
909 * Perform a search for declarations of members whose name is equal to the given name.
910 *
911 * An identifier is returned immediately, and individual results will be returned via the
912 * search.results notification as they become available.
913 *
914 * @param name The name of the declarations to be found.
915 */
916 public void search_findMemberDeclarations(String name, FindMemberDeclarationsConsumer consumer);
917
918 /**
919 * {@code search.findMemberReferences}
920 *
921 * Perform a search for references to members whose name is equal to the given name. This search
922 * does not check to see that there is a member defined with the given name, so it is able to find
923 * references to undefined members as well.
924 *
925 * An identifier is returned immediately, and individual results will be returned via the
926 * search.results notification as they become available.
927 *
928 * @param name The name of the references to be found.
929 */
930 public void search_findMemberReferences(String name, FindMemberReferencesConsumer consumer);
931
932 /**
933 * {@code search.findTopLevelDeclarations}
934 *
935 * Perform a search for declarations of top-level elements (classes, typedefs, getters, setters,
936 * functions and fields) whose name matches the given pattern.
937 *
938 * An identifier is returned immediately, and individual results will be returned via the
939 * search.results notification as they become available.
940 *
941 * @param pattern The regular expression used to match the names of the declarations to be found.
942 */
943 public void search_findTopLevelDeclarations(String pattern, FindTopLevelDeclarationsConsumer consumer);
944
945 /**
946 * {@code search.getElementDeclarations}
947 *
948 * Return top-level and class member declarations.
949 *
950 * @param file If this field is provided, return only declarations in this file. If this field is
951 * missing, return declarations in all files.
952 * @param pattern The regular expression used to match the names of declarations. If this field is
953 * missing, return all declarations.
954 * @param maxResults The maximum number of declarations to return. If this field is missing, return
955 * all matching declarations.
956 */
957 public void search_getElementDeclarations(String file, String pattern, int maxResults, GetElementDeclarationsConsumer consumer);
958
959 /**
960 * {@code search.getTypeHierarchy}
961 *
962 * Return the type hierarchy of the class declared or referenced at the given location.
963 *
964 * @param file The file containing the declaration or reference to the type for which a hierarchy
965 * is being requested.
966 * @param offset The offset of the name of the type within the file.
967 * @param superOnly True if the client is only requesting superclasses and interfaces hierarchy.
968 */
969 public void search_getTypeHierarchy(String file, int offset, boolean superOnly, GetTypeHierarchyConsumer consumer);
970
971 /**
972 * {@code server.cancelRequest}
973 *
974 * Requests cancellation of a request sent by the client by id. This is provided on a best-effort
975 * basis and there is no guarantee the server will be able to cancel any specific request. The
976 * server will still always produce a response to the request even in the case of cancellation, but
977 * clients should discard any results of any cancelled request because they may be incomplete or
978 * inaccurate. This request always completes without error regardless of whether the request is
979 * successfully cancelled.
980 *
981 * @param id The id of the request that should be cancelled.
982 */
983 public void server_cancelRequest(String id);
984
985 /**
986 * {@code server.getVersion}
987 *
988 * Return the version number of the analysis server.
989 */
990 public void server_getVersion(GetVersionConsumer consumer);
991
992 /**
993 * {@code server.openUrlRequest}
994 *
995 * Note: This is a request from the server to the client.
996 *
997 * Request that a URL be opened.
998 *
999 * The client is expected to open the URL, either within the client's UI or in the default browser.
1000 *
1001 * The request will only be sent from the server to the client if the client has indicated that it
1002 * supports this request by using the setClientCapabilities request.
1003 *
1004 * @param url The URL to be opened.
1005 */
1006 public void server_openUrlRequest(String url);
1007
1008 /**
1009 * {@code server.setClientCapabilities}
1010 *
1011 * Record the capabilities supported by the client. The default values, documented below, will be
1012 * assumed until this request is received.
1013 *
1014 * @param requests The names of the requests that the server can safely send to the client. Only
1015 * requests whose name is in the list will be sent. A request should only be included in the
1016 * list if the client will unconditionally honor the request. The default, used before this
1017 * request is received, is an empty list. The following is a list of the names of the
1018 * requests that can be specified:
1019 * - openUrlRequest
1020 * - showMessageRequest
1021 * @param supportsUris True if the client supports the server sending URIs in place of file paths.
1022 * In this mode, the server will use URIs in all protocol fields with the type FilePath.
1023 * Returned URIs may be `file://` URIs or custom schemes. The client can fetch the file
1024 * contents for URIs with custom schemes (and receive modification events) through the LSP
1025 * protocol (see the "lsp" domain). LSP notifications are automatically enabled when the
1026 * client sets this capability.
1027 */
1028 public void server_setClientCapabilities(List<String> requests, boolean supportsUris);
1029
1030 /**
1031 * {@code server.setSubscriptions}
1032 *
1033 * Subscribe for services. All previous subscriptions are replaced by the given set of services.
1034 *
1035 * It is an error if any of the elements in the list are not valid services. If there is an error,
1036 * then the current subscriptions will remain unchanged.
1037 *
1038 * @param subscriptions A list of the services being subscribed to.
1039 */
1040 public void server_setSubscriptions(List<String> subscriptions);
1041
1042 /**
1043 * {@code server.showMessageRequest}
1044 *
1045 * Note: This is a request from the server to the client.
1046 *
1047 * Request that a message be displayed to the user.
1048 *
1049 * The client is expected to display the message to the user with one or more buttons with the
1050 * specified labels, and to return a response consisting of the label of the button that was
1051 * clicked.
1052 *
1053 * The request will only be sent from the server to the client if the client has indicated that it
1054 * supports this request by using the setClientCapabilities request.
1055 *
1056 * This request is modeled after the same request from the LSP specification.
1057 *
1058 * @param type The type of the message.
1059 * @param message The message to be displayed.
1060 * @param actions The labels of the buttons by which the user can dismiss the message.
1061 */
1062 public void server_showMessageRequest(String type, String message, List<MessageAction> actions, ShowMessageRequestConsumer consumer);
1063
1064 /**
1065 * {@code server.shutdown}
1066 *
1067 * Cleanly shutdown the analysis server. Requests that are received after this request will not be
1068 * processed. Requests that were received before this request, but for which a response has not yet
1069 * been sent, will not be responded to. No further responses or notifications will be sent after
1070 * the response to this request has been sent.
1071 */
1072 public void server_shutdown();
1073
1074 /**
1075 * Start the analysis server.
1076 */
1077 public void start() throws Exception;
1078
1079}
const char * options
GLenum type
FlKeyEvent * event
uint8_t value
void edit_isPostfixCompletionApplicable(String file, String key, int offset, IsPostfixCompletionApplicableConsumer consumer)
void analytics_isEnabled(IsEnabledConsumer consumer)
void removeRequestListener(RequestListener listener)
void analysis_getImportedElements(String file, int offset, int length, GetImportedElementsConsumer consumer)
void completion_getSuggestionDetails2(String file, int offset, String completion, String libraryUri, GetSuggestionDetails2Consumer consumer)
void addAnalysisServerListener(AnalysisServerListener listener)
void edit_organizeDirectives(String file, OrganizeDirectivesConsumer consumer)
void edit_getAvailableRefactorings(String file, int offset, int length, GetAvailableRefactoringsConsumer consumer)
void server_showMessageRequest(String type, String message, List< MessageAction > actions, ShowMessageRequestConsumer consumer)
void server_setClientCapabilities(List< String > requests, boolean supportsUris)
void diagnostic_getServerPort(GetServerPortConsumer consumer)
void analysis_setSubscriptions(Map< String, List< String > > subscriptions)
void completion_getSuggestions2(String file, int offset, int maxResults, String completionCaseMatchingMode, String completionMode, int invocationCount, int timeout, GetSuggestions2Consumer consumer)
void analysis_getNavigation(String file, int offset, int length, GetNavigationConsumer consumer)
void analysis_getSignature(String file, int offset, GetSignatureConsumer consumer)
void addResponseListener(ResponseListener listener)
void execution_setSubscriptions(List< String > subscriptions)
void execution_createContext(String contextRoot, CreateContextConsumer consumer)
void search_findTopLevelDeclarations(String pattern, FindTopLevelDeclarationsConsumer consumer)
void search_getTypeHierarchy(String file, int offset, boolean superOnly, GetTypeHierarchyConsumer consumer)
void addStatusListener(AnalysisServerStatusListener listener)
void analysis_getErrors(String file, GetErrorsConsumer consumer)
void flutter_setWidgetPropertyValue(int id, FlutterWidgetPropertyValue value, SetWidgetPropertyValueConsumer consumer)
void diagnostic_getDiagnostics(GetDiagnosticsConsumer consumer)
void analysis_updateContent(Map< String, Object > files, UpdateContentConsumer consumer)
void search_findMemberDeclarations(String name, FindMemberDeclarationsConsumer consumer)
void removeResponseListener(ResponseListener listener)
void edit_listPostfixCompletionTemplates(ListPostfixCompletionTemplatesConsumer consumer)
void analysis_setPriorityFiles(List< String > files)
void edit_getAssists(String file, int offset, int length, GetAssistsConsumer consumer)
void edit_getPostfixCompletion(String file, String key, int offset, GetPostfixCompletionConsumer consumer)
void edit_getFixes(String file, int offset, GetFixesConsumer consumer)
void edit_importElements(String file, List< ImportedElements > elements, int offset, ImportElementsConsumer consumer)
void lsp_handle(Object lspMessage, HandleConsumer consumer)
void server_getVersion(GetVersionConsumer consumer)
void edit_format(String file, int selectionOffset, int selectionLength, int lineLength, FormatConsumer consumer)
void search_getElementDeclarations(String file, String pattern, int maxResults, GetElementDeclarationsConsumer consumer)
void analysis_setGeneralSubscriptions(List< String > subscriptions)
void search_findElementReferences(String file, int offset, boolean includePotential, FindElementReferencesConsumer consumer)
void analytics_sendTiming(String event, int millis)
void analysis_getLibraryDependencies(GetLibraryDependenciesConsumer consumer)
void edit_formatIfEnabled(List< String > directories, FormatIfEnabledConsumer consumer)
void analysis_getHover(String file, int offset, GetHoverConsumer consumer)
void execution_getSuggestions(String code, int offset, String contextFile, int contextOffset, List< RuntimeCompletionVariable > variables, List< RuntimeCompletionExpression > expressions, GetSuggestionsConsumer consumer)
void edit_getStatementCompletion(String file, int offset, GetStatementCompletionConsumer consumer)
void analysis_setAnalysisRoots(List< String > included, List< String > excluded, Map< String, String > packageRoots)
void removeAnalysisServerListener(AnalysisServerListener listener)
void flutter_setSubscriptions(Map< String, List< String > > subscriptions)
void server_setSubscriptions(List< String > subscriptions)
void search_findMemberReferences(String name, FindMemberReferencesConsumer consumer)
void execution_mapUri(String id, String file, String uri, MapUriConsumer consumer)
void edit_sortMembers(String file, SortMembersConsumer consumer)
void addRequestListener(RequestListener listener)
void edit_getRefactoring(String kind, String file, int offset, int length, boolean validateOnly, RefactoringOptions options, GetRefactoringConsumer consumer)
void completion_registerLibraryPaths(List< LibraryPathSet > paths)
void analysis_getReachableSources(String file, GetReachableSourcesConsumer consumer)
void analysis_updateOptions(AnalysisOptions options)
void edit_bulkFixes(List< String > included, boolean inTestMode, boolean updatePubspec, List< String > codes, BulkFixesConsumer consumer)
void flutter_getWidgetDescription(String file, int offset, GetWidgetDescriptionConsumer consumer)
size_t length
Win32Message message
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32
def timeout(deadline, cmd)
SeparatedVector2 offset