# Analysis Server API Specification

# Version 1.20.5

This document contains a specification of the API provided by the analysis server. The API in this document is currently under development. Changes to the API will be accompanied by an update to the protocol version number according to the principles of semantic versioning (semver.org).

## Overview

The analysis server API is a bi-directional client-server API. The API is independent of the transport mechanism used, but is heavily influenced by a model in which sockets or character streams are used to transport JSON-RPC encoded information.

### Transport Mechanism

The characters passed to the server are expected to be encoded using UTF-8.

When character streams are used as the transport, messages are delineated by newlines. This means, in particular, that the JSON encoding process must not introduce newlines within a message. Note however that newlines are used in this document for readability.

It is the client's responsibility to read output from the server to avoid its blocking.

To ease interoperability with Lisp-based clients (which may not be able to easily distinguish between empty lists, empty maps, and null), client-to-server communication is allowed to replace any instance of "`{}`" or "`[]`" with null. The server will always properly represent empty lists as "`[]`" and empty maps as "`{}`".

### Communication Structure

Clients can make a request of the server and the server will provide a response for each request that it receives. While many of the requests that can be made by a client are informational in nature, we have chosen to always return a response so that clients can know whether the request was received and was correct.

There is no guarantee concerning the order in which responses will be returned, but there is a guarantee that the server will process requests in the order in which they are sent as long as the transport mechanism also makes this guarantee. Responses can be returned in an order that is different from the order in which the requests were received because some requests take longer to process than others.

Every request is required to have two fields and may have two additional optional fields. The first required field is the ‘id’ field, which is only used by the server to associate a response with the request that generated the response. The second required field is the ‘method’ field, which is used to determine what the server is being requested to do. One optional field is the ‘params’ field, whose structure is dependent on the method being requested. The structure of this field is described with each request for which it is required. The other optional field is the 'clientRequestTime' field, which is a number indicating the time at which the client made the request (milliseconds since epoch). Providing clientRequestTime helps us track how responsive analysis server is to client requests and better address any issues that occur.

Every response has up to three fields. The first field is the ‘id’ field, which is always present and whose value is the identifier that was passed to the request that generated the response. The second field is the ‘error’ field, which is only present if an error was encountered while processing the request. The third field is the ‘result’ field, whose structure is dependent on the method being responded to, and is described with each request that will produce it.

The server can also communicate to the clients by sending a notification. The purpose of these notifications is to provide information to clients as it becomes available rather than to require that clients poll for it. Unless explicitly stated, all notifications are designed to return the complete information available at the time the notification is sent; clients are not required to update previously communicated results. Consequently, the server can and should return partial results before all results are available. For example, the syntactic errors for a file can be returned as soon as the syntactic analysis is complete, and both syntactic and semantic errors can be returned together at a later time.

Each notification has two fields. The first field is the ‘event’ field, which identifies the kind of notification. The second field is the ‘params’ field, whose structure is dependent on the kind of notification being sent. The structure of this field is described with each notification.

In order to be backward compatible, clients should ignore fields that were not specified in the version of the API on which they were based. Clients should also use the server.getVersion request to test that the version of the server supports an API before using it.

### Eventual Consistency

The analysis server satisfies requests under the principle of eventual consistency. That is, in some cases it may return responses with the currently available results while it's catching up with unprocessed changes.

### Domains

For convenience, the API is divided into domains. Each domain is specified in a separate section below. The specifications of the API’s refer to data structures beyond the standard JSON primitives. These data structures are documented in the section titled Types.

### Command-line Arguments

The command-line arguments that can be passed to the server.

#### Options

> --client-id

>   Specifies an identifier associated with the client. Used when generating error reports.

>   Clients are strongly encouraged to provide this information in order to improve the quality of information that can be provided to them.

> --client-version

>   Specifies the version of the client that is communicating with the server. Used when generating error reports.

>   Clients are strongly encouraged to provide this information in order to improve the quality of information that can be provided to them.

> --no-error-notification

>   Deprecated: clients should no longer pass this option in

>   Disable notifications about errors (see analysis.error). If this flag is not specified then notifications will be sent for all errors produced for all files in the actual analysis roots.
> --no-index

>   Deprecated: clients should no longer pass this option in

>   This flag used to disable the server from generating an index, but now it has no effect.
> --file-read-mode

>   Deprecated: clients should no longer pass this option in

>   An enumeration of the ways files can be read from disk. Some clients normalize end of line characters which would make the file offset and range information incorrect. The default option is `as-is`, but can also be set to `normalize-eol-always`. The default option (`as-is`) reads files as they are on disk. The `normalize-eol-always` option does the following:
>   - '\r\n' is converted to '\n';
>   - '\r' by itself is converted to '\n';
>   - this happens regardless of the OS editor is running on.

The server domain contains API’s related to the execution of the server.

Return the version number of the analysis server.

String

The version number of the analysis server.

Cleanly shutdown the analysis server. Requests that are received after this request will not be processed. Requests that were received before this request, but for which a response has not yet been sent, will not be responded to. No further responses or notifications will be sent after the response to this request has been sent.

Subscribe for services. All previous subscriptions are replaced by the given set of services.

It is an error if any of the elements in the list are not valid services. If there is an error, then the current subscriptions will remain unchanged.

ServerService

A list of the services being subscribed to.

Reports that the server is running. This notification is issued once after the server has started running but before any requests are processed to let the client know that it started correctly.

It is not possible to subscribe to or unsubscribe from this notification.

String

The version number of the analysis server.

int

The process id of the analysis server process.

String

The session id for this session.

Reports that an unexpected error has occurred while executing the server. This notification is not used for problems with specific requests (which are returned as part of the response) but is used for exceptions that occur while performing other tasks, such as analysis or preparing notifications.

It is not possible to subscribe to or unsubscribe from this notification.

bool

True if the error is a fatal error, meaning that the server will shutdown automatically after sending this notification.

String

The error message indicating what kind of error was encountered.

String

The stack trace associated with the generation of the error, used for debugging the server.

Reports the current status of the server. Parameters are omitted if there has been no change in the status represented by that parameter.

This notification is not subscribed to by default. Clients can subscribe by including the value `"STATUS"` in the list of services passed in a server.setSubscriptions request.

AnalysisStatus

The current status of analysis, including whether analysis is being performed and if so what is being analyzed.

PubStatus

The current status of pub execution, indicating whether we are currently running pub.

Note: this status type is deprecated, and is no longer sent by the server.

The analysis domain contains API’s related to the analysis of files.

Return the errors associated with the given file. If the errors for the given file have not yet been computed, or the most recently computed errors for the given file are out of date, then the response for this request will be delayed until they have been computed. If some or all of the errors for the file cannot be computed, then the subset of the errors that can be computed will be returned and the response will contain an error to indicate why the errors could not be computed. If the content of the file changes after this request was received but before a response could be sent, then an error of type `CONTENT_MODIFIED` will be generated.

This request is intended to be used by clients that cannot asynchronously apply updated error information. Clients that can apply error information as it becomes available should use the information provided by the 'analysis.errors' notification.

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_ERRORS_INVALID_FILE` will be generated.

FilePath

The file for which errors are being requested.

AnalysisError

The errors associated with the file.

Return the hover information associate with the given location. If some or all of the hover information is not available at the time this request is processed the information will be omitted from the response.

FilePath

The file in which hover information is being requested.

int

The offset for which hover information is being requested.

HoverInformation

The hover information associated with the location. The list will be empty if no information could be determined for the location. The list can contain multiple items if the file is being analyzed in multiple contexts in conflicting ways (such as a part that is included in multiple libraries).

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 that does not exist, or that is not currently subject to analysis (e.g. because it is not associated with any analysis root specified via analysis.setAnalysisRoots), an error of type `GET_IMPORTED_ELEMENTS_INVALID_FILE` will be generated.

FilePath

The file in which import information is being requested.

int

The offset of the region for which import information is being requested.

int

The length of the region for which import information is being requested.

ImportedElements

The information about the elements that are referenced in the specified region of the specified file that come from imported libraries.

Return library dependency information for use in client-side indexing and package URI resolution.

Clients that are only using the libraries field should consider using the analyzedFiles notification instead.

FilePath

A list of the paths of library elements referenced by files in existing analysis roots.

String String FilePath

A mapping from context source roots to package maps which map package names to source directories for use in client-side package URI resolution.

Return the navigation information associated with the given region of the given file. If the navigation information for the given file has not yet been computed, or the most recently computed navigation information for the given file is out of date, then the response for this request will be delayed until it has been computed. If the content of the file changes after this request was received but before a response could be sent, then an error of type `CONTENT_MODIFIED` will be generated.

If a navigation region overlaps (but extends either before or after) the given region of the file it will be included in the result. This means that it is theoretically possible to get the same navigation region in response to multiple requests. Clients can avoid this by always choosing a region that starts at the beginning of a line and ends at the end of a (possibly different) line in the 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_NAVIGATION_INVALID_FILE` will be generated.

FilePath

The file in which navigation information is being requested.

int

The offset of the region for which navigation information is being requested.

int

The length of the region for which navigation information is being requested.

FilePath

A list of the paths of files that are referenced by the navigation targets.

NavigationTarget

A list of the navigation targets that are referenced by the navigation regions.

NavigationRegion

A list of the navigation regions within the requested region of the file.

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.

FilePath

The file for which reachable source information is being requested.

String 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.

Return the signature information associated with the given location in the given file. If the signature information for the given file has not yet been computed, or the most recently computed signature information for the given file is out of date, then the response for this request will be delayed until it has been computed. 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_SIGNATURE_INVALID_FILE` will be generated. If the location given is not inside the argument list for a function (including method and constructor) invocation, then an error of type `GET_SIGNATURE_INVALID_OFFSET` will be generated. If the location is inside an argument list but the function is not defined or cannot be determined (such as a method invocation where the target has type 'dynamic') then an error of type `GET_SIGNATURE_UNKNOWN_FUNCTION` will be generated.

FilePath

The file in which signature information is being requested.

int

The location for which signature information is being requested.

String

The name of the function being invoked at the given offset.

String

The dartdoc associated with the function being invoked. Other than the removal of the comment delimiters, including leading asterisks in the case of a block comment, the dartdoc is unprocessed markdown. This data is omitted if there is no referenced element, or if the element has no dartdoc.

ParameterInfo

A list of information about each of the parameters of the function being invoked.

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 be re-sent.

If no analysis roots are provided, then all current analysis roots will be re-analyzed. If an empty list of analysis roots is provided, then nothing will be re-analyzed. If the list contains one or more paths that are not currently analysis roots, then an error of type `INVALID_ANALYSIS_ROOT` will be generated.

FilePath

A list of the analysis roots that are to be re-analyzed.

Sets the root paths used to determine which files to analyze. The set of files to be analyzed are all of the files in one of the root paths that are not either explicitly or implicitly excluded. A file is explicitly excluded if it is in one of the excluded paths. A file is implicitly excluded if it is in a subdirectory of one of the root paths where the name of the subdirectory starts with a period (that is, a hidden directory).

Note that this request determines the set of requested analysis roots. The actual set of analysis roots at any given time is the intersection of this set with the set of files and directories actually present on the filesystem. When the filesystem changes, the actual set of analysis roots is automatically updated, but the set of requested analysis roots is unchanged. This means that if the client sets an analysis root before the root becomes visible to server in the filesystem, there is no error; once the server sees the root in the filesystem it will start analyzing it. Similarly, server will stop analyzing files that are removed from the file system but they will remain in the set of requested roots.

If an included path represents a file, then server will look in the directory containing the file for a pubspec.yaml file. If none is found, then the parents of the directory will be searched until such a file is found or the root of the file system is reached. If such a file is found, it will be used to resolve package: URI’s within the file.

FilePath

A list of the files and directories that should be analyzed.

FilePath

A list of the files and directories within the included directories that should not be analyzed.

FilePath FilePath

A mapping from source directories to package roots that should override the normal package: URI resolution mechanism.

If a package root is a directory, then the analyzer will behave as though the associated source directory in the map contains a special pubspec.yaml file which resolves any package: URI to the corresponding path within that package root directory. The effect is the same as specifying the package root directory as a "--package_root" parameter to the Dart VM when executing any Dart file inside the source directory.

If a package root is a file, then the analyzer will behave as though that file is a ".packages" file in the source directory. The effect is the same as specifying the file as a "--packages" parameter to the Dart VM when executing any Dart file inside the source directory.

Files in any directories that are not overridden by this mapping have their package: URI's resolved using the normal pubspec.yaml mechanism. If this field is absent, or the empty map is specified, that indicates that the normal pubspec.yaml mechanism should always be used.

Subscribe for general services (that is, services that are not specific to individual files). All previous subscriptions are replaced by the given set of services.

It is an error if any of the elements in the list are not valid services. If there is an error, then the current subscriptions will remain unchanged.

GeneralAnalysisService

A list of the services being subscribed to.

Set the priority files to the files in the given list. A priority file is a file that is given priority when scheduling which analysis work to do first. The list typically contains those files that are visible to the user and those for which analysis results will have the biggest impact on the user experience. The order of the files within the list is significant: the first file will be given higher priority than the second, the second higher priority than the third, and so on.

Note that this request determines the set of requested priority files. The actual set of priority files is the intersection of the requested set of priority files with the set of files currently subject to analysis. (See analysis.setSubscriptions for a description of files that are subject to analysis.)

If a requested priority file is a directory it is ignored, but remains in the set of requested priority files so that if it later becomes a file it can be included in the set of actual priority files.

FilePath

The files that are to be a priority for analysis.

Subscribe for services that are specific to individual files. All previous subscriptions are replaced by the current set of subscriptions. If a given service is not included as a key in the map then no files will be subscribed to the service, exactly as if the service had been included in the map with an explicit empty list of files.

Note that this request determines the set of requested subscriptions. The actual set of subscriptions at any given time is the intersection of this set with the set of files currently subject to analysis. The files currently subject to analysis are the set of files contained within an actual analysis root but not excluded, plus all of the files transitively reachable from those files via import, export and part directives. (See analysis.setAnalysisRoots for an explanation of how the actual analysis roots are determined.) When the actual analysis roots change, the actual set of subscriptions is automatically updated, but the set of requested subscriptions is unchanged.

If a requested subscription is a directory it is ignored, but remains in the set of requested subscriptions so that if it later becomes a file it can be included in the set of actual subscriptions.

It is an error if any of the keys in the map are not valid services. If there is an error, then the existing subscriptions will remain unchanged.

AnalysisService FilePath

A table mapping services to a list of the files being subscribed to the service.

Update the content of one or more files. Files that were previously updated but not included in this update remain unchanged. This effectively represents an overlay of the filesystem. The files whose content is overridden are therefore seen by server as being files with the given content, even if the files do not exist on the filesystem or if the file path represents the path to a directory on the filesystem.

FilePath AddContentOverlay ChangeContentOverlay RemoveContentOverlay

A table mapping the files whose content has changed to a description of the content change.

Deprecated: all of the options can be set by users in an analysis options file.

Update the options controlling analysis based on the given set of options. Any options that are not included in the analysis options will not be changed. If there are options in the analysis options that are not valid, they will be silently ignored.

AnalysisOptions

The options that are to be used to control analysis.

Reports the paths of the files that are being analyzed.

This notification is not subscribed to by default. Clients can subscribe by including the value `"ANALYZED_FILES"` in the list of services passed in an analysis.setGeneralSubscriptions request.

FilePath

A list of the paths of the files that are being analyzed.

Reports closing labels relevant to a given file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"CLOSING_LABELS"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file the closing labels relate to.

ClosingLabel

Closing labels relevant to the file. Each item represents a useful label associated with some range with may be useful to display to the user within the editor at the end of the range to indicate what construct is closed at that location. Closing labels include constructor/method calls and List arguments that span multiple lines. Note that the ranges that are returned can overlap each other because they may be associated with constructs that can be nested.

Reports the errors associated with a given file. The set of errors included in the notification is always a complete list that supersedes any previously reported errors.

FilePath

The file containing the errors.

AnalysisError

The errors contained in the file.

Reports that any analysis results that were previously associated with the given files should be considered to be invalid because those files are no longer being analyzed, either because the analysis root that contained it is no longer being analyzed or because the file no longer exists.

If a file is included in this notification and at some later time a notification with results for the file is received, clients should assume that the file is once again being analyzed and the information should be processed.

It is not possible to subscribe to or unsubscribe from this notification.

FilePath

The files that are no longer being analyzed.

Reports the folding regions associated with a given file. Folding regions can be nested, but will not be overlapping. Nesting occurs when a foldable element, such as a method, is nested inside another foldable element such as a class.

This notification is not subscribed to by default. Clients can subscribe by including the value `"FOLDING"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file containing the folding regions.

FoldingRegion

The folding regions contained in the file.

Reports the highlight regions associated with a given file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"HIGHLIGHTS"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file containing the highlight regions.

HighlightRegion

The highlight regions contained in the file. Each highlight region represents a particular syntactic or semantic meaning associated with some range. Note that the highlight regions that are returned can overlap other highlight regions if there is more than one meaning associated with a particular region.

Reports the classes that are implemented or extended and class members that are implemented or overridden in a file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"IMPLEMENTED"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file with which the implementations are associated.

ImplementedClass

The classes defined in the file that are implemented or extended.

ImplementedMember

The member defined in the file that are implemented or overridden.

Reports that the navigation information associated with a region of a single file has become invalid and should be re-requested.

This notification is not subscribed to by default. Clients can subscribe by including the value `"INVALIDATE"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file whose information has been invalidated.

int

The offset of the invalidated region.

int

The length of the invalidated region.

int

The delta to be applied to the offsets in information that follows the invalidated region in order to update it so that it doesn't need to be re-requested.

Reports the navigation targets associated with a given file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"NAVIGATION"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file containing the navigation regions.

NavigationRegion

The navigation regions contained in the file. The regions are sorted by their offsets. Each navigation region represents a list of targets associated with some range. The lists will usually contain a single target, but can contain more in the case of a part that is included in multiple libraries or in Dart code that is compiled against multiple versions of a package. Note that the navigation regions that are returned do not overlap other navigation regions.

NavigationTarget

The navigation targets referenced in the file. They are referenced by `NavigationRegion`s by their index in this array.

FilePath

The files containing navigation targets referenced in the file. They are referenced by `NavigationTarget`s by their index in this array.

Reports the occurrences of references to elements within a single file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"OCCURRENCES"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file in which the references occur.

Occurrences

The occurrences of references to elements within the file.

Reports the outline associated with a single file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"OUTLINE"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file with which the outline is associated.

FileKind

The kind of the file.

String

The name of the library defined by the file using a "library" directive, or referenced by a "part of" directive. If both "library" and "part of" directives are present, then the "library" directive takes precedence. This field will be omitted if the file has neither "library" nor "part of" directives.

Outline

The outline associated with the file.

Reports the overriding members in a file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"OVERRIDES"` in the list of services passed in an analysis.setSubscriptions request.

FilePath

The file with which the overrides are associated.

Override

The overrides associated with the file.

The code completion domain contains commands related to getting code completion suggestions.

Request that completion suggestions for the given offset in the given file be returned.

FilePath

The file containing the point at which suggestions are to be made.

int

The offset within the file at which suggestions are to be made.

CompletionId

The identifier used to associate results with this completion request.

Reports the completion suggestions that should be presented to the user. The set of suggestions included in the notification is always a complete list that supersedes any previously reported suggestions.

CompletionId

The id associated with the completion.

int

The offset of the start of the text to be replaced. This will be different than the offset used to request the completion suggestions if there was a portion of an identifier before the original offset. In particular, the replacementOffset will be the offset of the beginning of said identifier.

int

The length of the text to be replaced if the remainder of the identifier containing the cursor is to be replaced when the suggestion is applied (that is, the number of characters in the existing identifier).

CompletionSuggestion

The completion suggestions being reported. The notification contains all possible completions at the requested cursor position, even those that do not match the characters the user has already typed. This allows the client to respond to further keystrokes from the user without having to make additional requests.

bool

True if this is that last set of results that will be returned for the indicated completion.

The search domain contains commands related to searches that can be performed against the code base.

Perform a search for references to the element defined or referenced at the given offset in the given file.

An identifier is returned immediately, and individual results will be returned via the search.results notification as they become available.

FilePath

The file containing the declaration of or reference to the element used to define the search.

int

The offset within the file of the declaration of or reference to the element.

bool

True if potential matches are to be included in the results.

SearchId

The identifier used to associate results with this search request.

If no element was found at the given location, this field will be absent, and no results will be reported via the search.results notification.

Element

The element referenced or defined at the given offset and whose references will be returned in the search results.

If no element was found at the given location, this field will be absent.

Perform a search for declarations of members whose name is equal to the given name.

An identifier is returned immediately, and individual results will be returned via the search.results notification as they become available.

String

The name of the declarations to be found.

SearchId

The identifier used to associate results with this search request.

Perform a search for references to members whose name is equal to the given name. This search does not check to see that there is a member defined with the given name, so it is able to find references to undefined members as well.

An identifier is returned immediately, and individual results will be returned via the search.results notification as they become available.

String

The name of the references to be found.

SearchId

The identifier used to associate results with this search request.

Perform a search for declarations of top-level elements (classes, typedefs, getters, setters, functions and fields) whose name matches the given pattern.

An identifier is returned immediately, and individual results will be returned via the search.results notification as they become available.

String

The regular expression used to match the names of the declarations to be found.

SearchId

The identifier used to associate results with this search request.

Return top-level and class member declarations.

FilePath

If this field is provided, return only declarations in this file. If this field is missing, return declarations in all files.

String

The regular expression used to match the names of declarations. If this field is missing, return all declarations.

int

The maximum number of declarations to return. If this field is missing, return all matching declarations.

ElementDeclaration

The list of declarations.

FilePath

The list of the paths of files with declarations.

Return the type hierarchy of the class declared or referenced at the given location.

FilePath

The file containing the declaration or reference to the type for which a hierarchy is being requested.

int

The offset of the name of the type within the file.

bool

True if the client is only requesting superclasses and interfaces hierarchy.

TypeHierarchyItem

A list of the types in the requested hierarchy. The first element of the list is the item representing the type for which the hierarchy was requested. The index of other elements of the list is unspecified, but correspond to the integers used to reference supertype and subtype items within the items.

This field will be absent if the code at the given file and offset does not represent a type, or if the file has not been sufficiently analyzed to allow a type hierarchy to be produced.

Reports some or all of the results of performing a requested search. Unlike other notifications, this notification contains search results that should be added to any previously received search results associated with the same search id.

SearchId

The id associated with the search.

SearchResult

The search results being reported.

bool

True if this is that last set of results that will be returned for the indicated search.

The edit domain contains commands related to edits that can be applied to the code.

Format the contents of a single file. The currently selected region of text is passed in so that the selection can be preserved across the formatting operation. The updated selection will be as close to matching the original as possible, but whitespace at the beginning or end of the selected region will be ignored. If preserving selection information is not required, zero (0) can be specified for both the selection offset and selection length.

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 `FORMAT_INVALID_FILE` will be generated. If the source contains syntax errors, an error of type `FORMAT_WITH_ERRORS` will be generated.

FilePath

The file containing the code to be formatted.

int

The offset of the current selection in the file.

int

The length of the current selection in the file.

int

The line length to be used by the formatter.

SourceEdit

The edit(s) to be applied in order to format the code. The list will be empty if the code was already formatted (there are no changes).

int

The offset of the selection after formatting the code.

int

The length of the selection after formatting the code.

Return the set of assists that are available at the given location. An assist is distinguished from a refactoring primarily by the fact that it affects a single file and does not require user input in order to be performed.

FilePath

The file containing the code for which assists are being requested.

int

The offset of the code for which assists are being requested.

int

The length of the code for which assists are being requested.

SourceChange

The assists that are available at the given location.

Get a list of the kinds of refactorings that are valid for the given selection in the given file.

FilePath

The file containing the code on which the refactoring would be based.

int

The offset of the code on which the refactoring would be based.

int

The length of the code on which the refactoring would be based.

RefactoringKind

The kinds of refactorings that are valid for the given selection.

Return the set of fixes that are available for the errors at a given offset in a given file.

FilePath

The file containing the errors for which fixes are being requested.

int

The offset used to select the errors for which fixes will be returned.

AnalysisErrorFixes

The fixes that are available for the errors at the given offset.

Get the changes required to convert the postfix template at the given location into the template's expanded form.

FilePath

The file containing the postfix template to be expanded.

String

The unique name that identifies the template in use.

int

The offset used to identify the code to which the template will be applied.

SourceChange

The change to be applied in order to complete the statement.

Get the changes required to perform a refactoring.

If another refactoring request is received during the processing of this one, an error of type `REFACTORING_REQUEST_CANCELLED` will be generated.

RefactoringKind

The kind of refactoring to be performed.

FilePath

The file containing the code involved in the refactoring.

int

The offset of the region involved in the refactoring.

int

The length of the region involved in the refactoring.

bool

True if the client is only requesting that the values of the options be validated and no change be generated.

RefactoringOptions

Data used to provide values provided by the user. The structure of the data is dependent on the kind of refactoring being performed. The data that is expected is documented in the section titled Refactorings, labeled as "Options". This field can be omitted if the refactoring does not require any options or if the values of those options are not known.

RefactoringProblem

The initial status of the refactoring, i.e. problems related to the context in which the refactoring is requested. The array will be empty if there are no known problems.

RefactoringProblem

The options validation status, i.e. problems in the given options, such as light-weight validation of a new name, flags compatibility, etc. The array will be empty if there are no known problems.

RefactoringProblem

The final status of the refactoring, i.e. problems identified in the result of a full, potentially expensive validation and / or change creation. The array will be empty if there are no known problems.

RefactoringFeedback

Data used to provide feedback to the user. The structure of the data is dependent on the kind of refactoring being created. The data that is returned is documented in the section titled Refactorings, labeled as "Feedback".

SourceChange

The changes that are to be applied to affect the refactoring. This field will be omitted if there are problems that prevent a set of changes from being computed, such as having no options specified for a refactoring that requires them, or if only validation was requested.

String

The ids of source edits that are not known to be valid. An edit is not known to be valid if there was insufficient type information for the server to be able to determine whether or not the code needs to be modified, such as when a member is being renamed and there is a reference to a member from an unknown type. This field will be omitted if the change field is omitted or if there are no potential edits for the refactoring.

Get the changes required to convert the partial statement at the given location into a syntactically valid statement. If the current statement is already valid the change will insert a newline plus appropriate indentation at the end of the line containing the offset. If a change that makes the statement valid cannot be determined (perhaps because it has not yet been implemented) the statement will be considered already valid and the appropriate change returned.

FilePath

The file containing the statement to be completed.

int

The offset used to identify the statement to be completed.

SourceChange

The change to be applied in order to complete the statement.

bool

Will be true if the change contains nothing but whitespace characters, or is empty.

Determine if the request postfix completion template is applicable at the given location in the given file.

FilePath

The file containing the postfix template to be expanded.

String

The unique name that identifies the template in use.

int

The offset used to identify the code to which the template will be applied.

bool

True if the template can be expanded at the given location.

Return a list of all postfix templates currently available.

PostfixTemplateDescriptor

The list of available templates.

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.

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 via analysis.setAnalysisRoots), an error of type `IMPORT_ELEMENTS_INVALID_FILE` will be generated.

FilePath

The file in which the specified elements are to be made accessible.

ImportedElements

The elements to be made accessible in the specified file.

SourceFileEdit

The edits to be applied in order to make the specified elements accessible. The file to be edited will be the defining compilation unit of the library containing the file specified in the request, which can be different than the file specified in the request if the specified file is a part file. This field will be omitted if there are no edits that need to be applied.

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 analysis root or is not a Dart file, `SORT_MEMBERS_INVALID_FILE` will be generated.

If the Dart file has scan or parse errors, `SORT_MEMBERS_PARSE_ERRORS` will be generated.

FilePath

The Dart file to sort.

SourceFileEdit

The file edit that is to be applied to the given file to effect the sorting.

Organizes all of the directives - removes unused imports and sorts directives of the given Dart file according to the Dart Style Guide.

If a request is made for a file that does not exist, does not belong to an analysis root or is not a Dart file, `FILE_NOT_ANALYZED` will be generated.

If directives of the Dart file cannot be organized, for example because it has scan or parse errors, or by other reasons, `ORGANIZE_DIRECTIVES_ERROR` will be generated. The message will provide details about the reason.

FilePath

The Dart file to organize directives in.

SourceFileEdit

The file edit that is to be applied to the given file to effect the organizing.

The execution domain contains commands related to providing an execution or debugging experience.

Create an execution context for the executable file with the given path. The context that is created will persist until execution.deleteContext is used to delete it. Clients, therefore, are responsible for managing the lifetime of execution contexts.

FilePath

The path of the Dart or HTML file that will be launched, or the path of the directory containing the file.

ExecutionContextId

The identifier used to refer to the execution context that was created.

Delete the execution context with the given identifier. The context id is no longer valid after this command. The server is allowed to re-use ids when they are no longer valid.

ExecutionContextId

The identifier of the execution context that is to be deleted.

Request completion suggestions for the given runtime context.

It might take one or two requests of this type to get completion suggestions. The first request should have only "code", "offset", and "variables", but not "expressions". If there are sub-expressions that can have different runtime types, and are considered to be safe to evaluate at runtime (e.g. getters), so using their actual runtime types can improve completion results, the server will not include the "suggestions" field in the response, and instead will return the "expressions" field. The client will use debug API to get current runtime types for these sub-expressions and send another request, this time with "expressions". If there are no interesting sub-expressions to get runtime types for, or when the "expressions" field is provided by the client, the server will return "suggestions" in the response.

String

The code to get suggestions in.

int

The offset within the code to get suggestions at.

FilePath

The path of the context file, e.g. the file of the current debugger frame. The combination of the context file and context offset can be used to ensure that all variables of the context are available for completion (with their static types).

int

The offset in the context file, e.g. the line offset in the current debugger frame.

RuntimeCompletionVariable

The runtime context variables that are potentially referenced in the code.

RuntimeCompletionExpression

The list of sub-expressions in the code for which the client wants to provide runtime types. It does not have to be the full list of expressions requested by the server, for missing expressions their static types will be used.

When this field is omitted, the server will return completion suggestions only when there are no interesting sub-expressions in the given code. The client may provide an empty list, in this case the server will return completion suggestions.

CompletionSuggestion

The completion suggestions. In contrast to usual completion request, suggestions for private elements also will be provided.

If there are sub-expressions that can have different runtime types, and are considered to be safe to evaluate at runtime (e.g. getters), so using their actual runtime types can improve completion results, the server omits this field in the response, and instead will return the "expressions" field.

RuntimeCompletionExpression

The list of sub-expressions in the code for which the server would like to know runtime types to provide better completion suggestions.

This field is omitted the field "suggestions" is returned.

Map a URI from the execution context to the file that it corresponds to, or map a file to the URI that it corresponds to in the execution context.

Exactly one of the file and uri fields must be provided. If both fields are provided, then an error of type `INVALID_PARAMETER` will be generated. Similarly, if neither field is provided, then an error of type `INVALID_PARAMETER` will be generated.

If the file field is provided and the value is not the path of a file (either the file does not exist or the path references something other than a file), then an error of type `INVALID_PARAMETER` will be generated.

If the uri field is provided and the value is not a valid URI or if the URI references something that is not a file (either a file that does not exist or something other than a file), then an error of type `INVALID_PARAMETER` will be generated.

If the contextRoot used to create the execution context does not exist, then an error of type `INVALID_EXECUTION_CONTEXT` will be generated.

ExecutionContextId

The identifier of the execution context in which the URI is to be mapped.

FilePath

The path of the file to be mapped into a URI.

String

The URI to be mapped into a file path.

FilePath

The file to which the URI was mapped. This field is omitted if the uri field was not given in the request.

String

The URI to which the file path was mapped. This field is omitted if the file field was not given in the request.

Deprecated: the analysis server no longer fires `LAUNCH_DATA` events.

Subscribe for services. All previous subscriptions are replaced by the given set of services.

It is an error if any of the elements in the list are not valid services. If there is an error, then the current subscriptions will remain unchanged.

ExecutionService

A list of the services being subscribed to.

Reports information needed to allow a single file to be launched.

This notification is not subscribed to by default. Clients can subscribe by including the value "LAUNCH_DATA" in the list of services passed in an `execution.setSubscriptions` request.

FilePath

The file for which launch data is being provided. This will either be a Dart library or an HTML file.

ExecutableKind

The kind of the executable file. This field is omitted if the file is not a Dart file.

FilePath

A list of the Dart files that are referenced by the file. This field is omitted if the file is not an HTML file.

The diagnostic domain contains server diagnostics APIs.

Return server diagnostics.

ContextData

The list of analysis contexts.

Return the port of the diagnostic web server. If the server is not running this call will start the server. If unable to start the diagnostic web server, this call will return an error of `DEBUG_PORT_COULD_NOT_BE_OPENED`.

int

The diagnostic server port.

The analytics domain contains APIs related to reporting analytics.

This API allows clients to expose a UI option to enable and disable the analysis server's reporting of analytics. This value is shared with other tools and can change outside of this API; because of this, clients should use the analysis server's flag as the system of record. Clients can choose to send in additional analytics (see `sendEvent` and `sendTiming`) if they so choose. Dart command-line tools provide a disclaimer similar to: `Dart SDK tools anonymously report feature usage statistics and basic crash reports to help improve Dart tools over time. See Google's privacy policy: https://www.google.com/intl/en/policies/privacy/.`

The analysis server will send it's own analytics data (for example, operations performed, operating system type, SDK version). No data (from the analysis server or from clients) will be sent if analytics is disabled.

Query whether analytics is enabled.

This flag controls whether the analysis server sends any analytics data to the cloud. If disabled, the analysis server does not send any analytics data, and any data sent to it by clients (from `sendEvent` and `sendTiming`) will be ignored.

The value of this flag can be changed by other tools outside of the analysis server's process. When you query the flag, you get the value of the flag at a given moment. Clients should not use the value returned to decide whether or not to send the `sendEvent` and `sendTiming` requests. Those requests should be used unconditionally and server will determine whether or not it is appropriate to forward the information to the cloud at the time each request is received.

bool

Whether sending analytics is enabled or not.

Enable or disable the sending of analytics data. Note that there are other ways for users to change this setting, so clients cannot assume that they have complete control over this setting. In particular, there is no guarantee that the result returned by the `isEnabled` request will match the last value set via this request.

bool

Enable or disable analytics.

Send information about client events.

Ask the analysis server to include the fact that an action was performed in the client as part of the analytics data being sent. The data will only be included if the sending of analytics data is enabled at the time the request is processed. The action that was performed is indicated by the value of the `action` field.

The value of the action field should not include the identity of the client. The analytics data sent by server will include the client id passed in using the `--client-id` command-line argument. The request will be ignored if the client id was not provided when server was started.

String

The value used to indicate which action was performed.

Send timing information for client events (e.g. code completions).

Ask the analysis server to include the fact that a timed event occurred as part of the analytics data being sent. The data will only be included if the sending of analytics data is enabled at the time the request is processed.

The value of the event field should not include the identity of the client. The analytics data sent by server will include the client id passed in using the `--client-id` command-line argument. The request will be ignored if the client id was not provided when server was started.

String

The name of the event.

int

The duration of the event in milliseconds.

The kythe domain contains APIs related to generating Dart content in the Kythe format.

Return the list of `KytheEntry` objects for some file, given the current state of the file system populated by "analysis.updateContent".

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_KYTHE_ENTRIES_INVALID_FILE` will be generated.

FilePath

The file containing the code for which the Kythe Entry objects are being requested.

KytheEntry

The list of `KytheEntry` objects for the queried file.

FilePath

The set of files paths that were required, but not in the file system, to give a complete and accurate Kythe graph for the file. This could be due to a referenced file that does not exist or generated files not being generated or passed before the call to "getKytheEntries".

The analysis domain contains API’s related to Flutter support.

Return the change that adds the forDesignTime() constructor for the widget class at the given offset.

FilePath

The file containing the code of the class.

int

The offset of the class in the code.

SourceChange

The change that adds the forDesignTime() constructor. If the change cannot be produced, an error is returned.

Subscribe for services that are specific to individual files. All previous subscriptions are replaced by the current set of subscriptions. If a given service is not included as a key in the map then no files will be subscribed to the service, exactly as if the service had been included in the map with an explicit empty list of files.

Note that this request determines the set of requested subscriptions. The actual set of subscriptions at any given time is the intersection of this set with the set of files currently subject to analysis. The files currently subject to analysis are the set of files contained within an actual analysis root but not excluded, plus all of the files transitively reachable from those files via import, export and part directives. (See analysis.setAnalysisRoots for an explanation of how the actual analysis roots are determined.) When the actual analysis roots change, the actual set of subscriptions is automatically updated, but the set of requested subscriptions is unchanged.

If a requested subscription is a directory it is ignored, but remains in the set of requested subscriptions so that if it later becomes a file it can be included in the set of actual subscriptions.

It is an error if any of the keys in the map are not valid services. If there is an error, then the existing subscriptions will remain unchanged.

FlutterService FilePath

A table mapping services to a list of the files being subscribed to the service.

Reports the Flutter outline associated with a single file.

This notification is not subscribed to by default. Clients can subscribe by including the value `"OUTLINE"` in the list of services passed in an flutter.setSubscriptions request.

FilePath

The file with which the outline is associated.

FlutterOutline

The outline associated with the file.

String

If the file has Flutter widgets that can be rendered, this field has the instrumented content of the file, that allows associating widgets with corresponding outline nodes. If there are no widgets to render, this field is absent.

## Types

This section contains descriptions of the data types referenced in the API’s of the various domains.

A list of fixes associated with a specific error.

Deprecated: the only reference to this type has been deprecated.

A set of options controlling what kind of analysis is to be performed. If the value of a field is omitted the value of the option will not be changed.

An enumeration of the services provided by the analysis domain that are related to a specific list of files.

`CLOSING_LABELS` `FOLDING` `HIGHLIGHTS` `IMPLEMENTED` `INVALIDATE`

This service is not currently implemented and will become a GeneralAnalysisService in a future release.

`NAVIGATION` `OCCURRENCES` `OUTLINE` `OVERRIDES`

An indication of the current state of analysis.

A label that is associated with a range of code that may be useful to render at the end of the range to aid code readability. For example, a constructor call that spans multiple lines may result in a closing label to allow the constructor type/name to be rendered alongside the closing parenthesis.

String

An identifier used to associate completion results with a completion request.

Information about an analysis context.

A declaration - top-level (class, field, etc) or a class member (method, field, etc).

A description of an executable file.

An enumeration of the kinds of executable files.

`CLIENT` `EITHER` `NOT_EXECUTABLE` `SERVER` String

The identifier for a execution context.

An expression for which we want to know its runtime type. In expressions like `a.b.c.where((e) => e.^)` we want to know the runtime type of `a.b.c` to enforce it statically at the time when we compute completion suggestions, and get better type for `e`.

A variable in a runtime context.

A type at runtime.

An enumeration of the kinds of runtime expression types.

`DYNAMIC` `FUNCTION` `INTERFACE`

An enumeration of the services provided by the execution domain.

`LAUNCH_DATA`

An enumeration of the kinds of files.

`LIBRARY` `PART`

An enumeration of the services provided by the flutter domain that are related to a specific list of files.

`OUTLINE`

An node in the Flutter specific outline structure of a file.

An attribute for a FlutterOutline.

An enumeration of the kinds of FlutterOutline elements. The list of kinds might be expanded with time, clients must be able to handle new kinds in some general way.

`DART_ELEMENT`

A dart element declaration.

`GENERIC`

A generic Flutter element, without additional information.

`NEW_INSTANCE`

A new instance creation.

`INVOCATION`

An invocation of a method, a top-level function, a function expression, etc.

`VARIABLE`

A reference to a local variable, or a field.

`PLACEHOLDER`

The parent node has a required Widget. The node works as a placeholder child to drop a new Widget to.

An enumeration of the services provided by the analysis domain that are general in nature (that is, are not specific to some list of files).

`ANALYZED_FILES`

The hover information associated with a specific location.

A description of a class that is implemented or extended.

A description of a class member that is implemented or overridden.

A description of the elements that are referenced in a region of a file that come from a single imported library.

A description of a member that overrides an inherited member.

A description of a member that is being overridden.

The description of a postfix completion template.

An indication of the current state of pub execution.

An abstract superclass of all refactoring feedbacks.

An abstract superclass of all refactoring options.

An indication of a problem with the execution of the server, typically in response to a request.

An enumeration of the types of errors that can occur in the execution of the server.

`CONTENT_MODIFIED`

An "analysis.getErrors" or "analysis.getNavigation" request could not be satisfied because the content of the file changed before the requested results could be computed.

`DEBUG_PORT_COULD_NOT_BE_OPENED`

The server was unable to open a port for the diagnostic server.

`FILE_NOT_ANALYZED`

A request specified a FilePath which does not match a file in an analysis root, or the requested operation is not available for the file.

`FORMAT_INVALID_FILE`

An "edit.format" request specified a FilePath which does not match a Dart file in an analysis root.

`FORMAT_WITH_ERRORS`

An "edit.format" request specified a file that contains syntax errors.

`GET_ERRORS_INVALID_FILE`

An "analysis.getErrors" request specified a FilePath which does not match a file currently subject to analysis.

`GET_IMPORTED_ELEMENTS_INVALID_FILE`

An "analysis.getImportedElements" request specified a FilePath that does not match a file currently subject to analysis.

`GET_KYTHE_ENTRIES_INVALID_FILE`

An "analysis.getKytheEntries" request specified a FilePath that does not match a file that is currently subject to analysis.

`GET_NAVIGATION_INVALID_FILE`

An "analysis.getNavigation" request specified a FilePath which does not match a file currently subject to analysis.

`GET_REACHABLE_SOURCES_INVALID_FILE`

An "analysis.getReachableSources" request specified a FilePath which does not match a file currently subject to analysis.

`GET_SIGNATURE_INVALID_FILE`

An "analysis.getSignature" request specified a FilePath which does not match a file currently subject to analysis.

`GET_SIGNATURE_INVALID_OFFSET`

An "analysis.getSignature" request specified an offset which is not a valid location within for the contents of the file specified FilePath.

`GET_SIGNATURE_UNKNOWN_FUNCTION`

An "analysis.getSignature" request specified an offset that could not be matched to a function call.

`IMPORT_ELEMENTS_INVALID_FILE`

An "edit.importElements" request specified a FilePath that does not match a file currently subject to analysis.

`INVALID_ANALYSIS_ROOT`

A path passed as an argument to a request (such as analysis.reanalyze) is required to be an analysis root, but isn't.

`INVALID_EXECUTION_CONTEXT`

The context root used to create an execution context does not exist.

`INVALID_FILE_PATH_FORMAT`

The format of the given file path is invalid, e.g. is not absolute and normalized.

`INVALID_OVERLAY_CHANGE`

An "analysis.updateContent" request contained a ChangeContentOverlay object which can't be applied, due to an edit having an offset or length that is out of range.

`INVALID_PARAMETER`

One of the method parameters was invalid.

`INVALID_REQUEST`

A malformed request was received.

`ORGANIZE_DIRECTIVES_ERROR`

An "edit.organizeDirectives" request specified a Dart file that cannot be analyzed. The reason is described in the message.

`REFACTORING_REQUEST_CANCELLED`

Another refactoring request was received during processing of this one.

`SERVER_ALREADY_STARTED`

The analysis server has already been started (and hence won't accept new connections).

This error is included for future expansion; at present the analysis server can only speak to one client at a time so this error will never occur.

`SERVER_ERROR`

An internal error occurred in the analysis server. Also see the server.error notification.

`SORT_MEMBERS_INVALID_FILE`

An "edit.sortMembers" request specified a FilePath which does not match a Dart file in an analysis root.

`SORT_MEMBERS_PARSE_ERRORS`

An "edit.sortMembers" request specified a Dart file that has scan or parse errors.

`UNANALYZED_PRIORITY_FILES`

An "analysis.setPriorityFiles" request includes one or more files that are not being analyzed.

This is a legacy error; it will be removed before the API reaches version 1.0.

`UNKNOWN_REQUEST`

A request was received which the analysis server does not recognize, or cannot handle in its current configuration.

`UNKNOWN_SOURCE`

The analysis server was requested to perform an action on a source that does not exist.

`UNSUPPORTED_FEATURE`

The analysis server was requested to perform an action which is not supported.

This is a legacy error; it will be removed before the API reaches version 1.0.

String

An identifier used to associate search results with a search request.

A single result from a search request.

An enumeration of the kinds of search results returned by the search domain.

`DECLARATION`

The declaration of an element.

`INVOCATION`

The invocation of a function or method.

`READ`

A reference to a field, parameter or variable where it is being read.

`READ_WRITE`

A reference to a field, parameter or variable where it is being read and written.

`REFERENCE`

A reference to an element.

`UNKNOWN`

Some other kind of search result.

`WRITE`

A reference to a field, parameter or variable where it is being written.

An enumeration of the services provided by the server domain.

`STATUS`

A representation of a class in a type hierarchy.

## Refactorings

This section contains additional information for each kind of refactoring. In addition to a brief description of the refactoring, there is a specification of the feedback that is provided when a refactoring is requested using the edit.getRefactoring request (designed to improve the UX) and the options that may be provided to edit.getRefactoring.

Convert a getter into a method by removing the keyword get and adding an empty parameter list.

It is an error if the range contains anything other than all or part of the name of a single getter.

Convert a method into a getter by adding the keyword get and removing the parameter list.

It is an error if the range contains anything other than all or part of the name of a single method or if the method has a non-empty parameter list.

Create a local variable initialized by the expression that covers the specified selection.

It is an error if the selection range is not covered by a complete expression.

int

The offsets of the expressions that cover the specified selection, from the down most to the up most.

int

The lengths of the expressions that cover the specified selection, from the down most to the up most.

String

The proposed names for the local variable.

int

The offsets of the expressions that would be replaced by a reference to the variable.

int

The lengths of the expressions that would be replaced by a reference to the variable. The lengths correspond to the offsets. In other words, for a given expression, if the offset of that expression is `offsets[i]`, then the length of that expression is `lengths[i]`.

String

The name that the local variable should be given.

bool

True if all occurrences of the expression within the scope in which the variable will be defined should be replaced by a reference to the local variable. The expression used to initiate the refactoring will always be replaced.

Create a method whose body is the specified expression or list of statements, possibly augmented with a return statement.

It is an error if the range contains anything other than a complete expression (no partial expressions are allowed) or a complete sequence of statements.

int

The offset to the beginning of the expression or statements that will be extracted.

int

The length of the expression or statements that will be extracted.

String

The proposed return type for the method. If the returned element does not have a declared return type, this field will contain an empty string.

String

The proposed names for the method.

bool

True if a getter could be created rather than a method.

RefactoringMethodParameter

The proposed parameters for the method.

int

The offsets of the expressions or statements that would be replaced by an invocation of the method.

int

The lengths of the expressions or statements that would be replaced by an invocation of the method. The lengths correspond to the offsets. In other words, for a given expression (or block of statements), if the offset of that expression is `offsets[i]`, then the length of that expression is `lengths[i]`.

String

The return type that should be defined for the method.

bool

True if a getter should be created rather than a method. It is an error if this field is true and the list of parameters is non-empty.

String

The name that the method should be given.

RefactoringMethodParameter

The parameters that should be defined for the method.

It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL parameter. It is an error if a REQUIRED or POSITIONAL parameter follows a NAMED parameter.

- To change the order and/or update proposed parameters, add parameters with the same identifiers as proposed.
- To add new parameters, omit their identifier.
- To remove some parameters, omit them in this list.

bool

True if all occurrences of the expression or statements should be replaced by an invocation of the method. The expression or statements used to initiate the refactoring will always be replaced.

Create a new class that extends StatelessWidget, whose build() method is the widget creation expression, or a method returning a Flutter widget, at the specified offset.

String

The name that the widget class should be given.

Inline the initializer expression of a local variable in place of any references to that variable.

It is an error if the range contains anything other than all or part of the name of a single local variable.

String

The name of the variable being inlined.

int

The number of times the variable occurs.

Inline a method in place of one or all references to that method.

It is an error if the range contains anything other than all or part of the name of a single method.

String

The name of the class enclosing the method being inlined. If not a class member is being inlined, this field will be absent.

String

The name of the method (or function) being inlined.

bool

True if the declaration of the method is selected. So all references should be inlined.

bool

True if the method being inlined should be removed. It is an error if this field is true and inlineAll is false.

bool

True if all invocations of the method should be inlined, or false if only the invocation site used to create this refactoring should be inlined.

Move the given file and update all of the references to that file and from it. The move operation is supported in general case - for renaming a file in the same folder, moving it to a different folder or both.

The refactoring must be activated before an actual file moving operation is performed.

The "offset" and "length" fields from the request are ignored, but the file specified in the request specifies the file to be moved.

FilePath

The new file path to which the given file is being moved.

Rename a given element and all of the references to that element.

It is an error if the range contains anything other than all or part of the name of a single function (including methods, getters and setters), variable (including fields, parameters and local variables), class or function type.

int

The offset to the beginning of the name selected to be renamed, or -1 if the name does not exist yet.

int

The length of the name selected to be renamed.

String

The human-readable description of the kind of element being renamed (such as "class" or "function type alias").

String

The old name of the element before the refactoring.

String

The name that the element should have after the refactoring.

## Errors

This section contains a list of all of the errors that are produced by the server and the data that is returned with each.

TODO: TBD

## Index