blob: 412fcb754498e4279220c2424fcf6920244c3723 [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Common Types</title>
</head>
<body>
<h1>Common Types</h1>
<version>1.4.4</version>
<p>
This document contains a specification of the types that are common between
the analysis server wire protocol and the analysis server plugin wire
protocol. While those protocols are versioned, the common types are not
versioned separately.
</p>
<p>
When those protocols have identical definitions of a type, the type definition
should be removed from the two individual specifications and added to this
document. Two definitions of a type are identical if the HTML that defines the
types is identical and if all of the types referenced by those two types are
identical.
</p>
<p>
When it becomes necessary to change the definition of a common type in one
protocol such that the type will no longer be common, that type and any types
that reference that type must be removed from this document and added to both
of the documents that include this document.
</p>
<types>
<type name="AddContentOverlay">
<p>
A directive to begin overlaying the contents of a file. The supplied
content will be used for analysis in place of the file contents in the
filesystem.
</p>
<p>
If this directive is used on a file that already has a file content
overlay, the old overlay is discarded and replaced with the new one.
</p>
<object>
<field name="type" value="add">
<ref>String</ref>
</field>
<field name="content">
<ref>String</ref>
<p>
The new content of the file.
</p>
</field>
</object>
</type>
<type name="AnalysisError">
<p>
An indication of an error, warning, or hint that was produced by the
analysis.
</p>
<object>
<field name="severity">
<ref>AnalysisErrorSeverity</ref>
<p>
The severity of the error.
</p>
</field>
<field name="type">
<ref>AnalysisErrorType</ref>
<p>
The type of the error.
</p>
</field>
<field name="location">
<ref>Location</ref>
<p>
The location associated with the error.
</p>
</field>
<field name="message">
<ref>String</ref>
<p>
The message to be displayed for this error. The message should
indicate what is wrong with the code and why it is wrong.
</p>
</field>
<field name="correction" optional="true">
<ref>String</ref>
<p>
The correction message to be displayed for this error. The correction
message should indicate how the user can fix the error. The field is
omitted if there is no correction message associated with the error
code.
</p>
</field>
<field name="code">
<ref>String</ref>
<p>
The name, as a string, of the error code associated with this error.
</p>
</field>
<field name="url" optional="true">
<ref>String</ref>
<p>
The URL of a page containing documentation associated with this error.
</p>
</field>
<field name="contextMessages" optional="true">
<list>
<ref>DiagnosticMessage</ref>
</list>
<p>
Additional messages associated with this diagnostic that provide
context to help the user understand the diagnostic.
</p>
</field>
<field name="hasFix" optional="true">
<ref>bool</ref>
<p>
A hint to indicate to interested clients that this error has an
associated fix (or fixes). The absence of this field implies there
are not known to be fixes. Note that since the operation to calculate
whether fixes apply needs to be performant it is possible that
complicated tests will be skipped and a false negative returned. For
this reason, this attribute should be treated as a "hint". Despite the
possibility of false negatives, no false positives should be returned.
If a client sees this flag set they can proceed with the confidence
that there are in fact associated fixes.
</p>
</field>
</object>
</type>
<type name="AnalysisErrorSeverity">
<p>
An enumeration of the possible severities of analysis errors.
</p>
<enum>
<value><code>INFO</code></value>
<value><code>WARNING</code></value>
<value><code>ERROR</code></value>
</enum>
</type>
<type name="AnalysisErrorType">
<p>
An enumeration of the possible types of analysis errors.
</p>
<enum>
<value><code>CHECKED_MODE_COMPILE_TIME_ERROR</code></value>
<value><code>COMPILE_TIME_ERROR</code></value>
<value><code>HINT</code></value>
<value><code>LINT</code></value>
<value><code>STATIC_TYPE_WARNING</code></value>
<value><code>STATIC_WARNING</code></value>
<value><code>SYNTACTIC_ERROR</code></value>
<value><code>TODO</code></value>
</enum>
</type>
<type name="ChangeContentOverlay">
<p>
A directive to modify an existing file content overlay. One or more ranges
of text are deleted from the old file content overlay and replaced with
new text.
</p>
<p>
The edits are applied in the order in which they occur in the list. This
means that the offset of each edit must be correct under the assumption
that all previous edits have been applied.
</p>
<p>
It is an error to use this overlay on a file that does not yet have a file
content overlay or that has had its overlay removed via
<a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>.
</p>
<p>
If any of the edits cannot be applied due to its offset or length being
out of range, an <tt>INVALID_OVERLAY_CHANGE</tt> error will be reported.
</p>
<object>
<field name="type" value="change">
<ref>String</ref>
</field>
<field name="edits">
<list>
<ref>SourceEdit</ref>
</list>
<p>
The edits to be applied to the file.
</p>
</field>
</object>
</type>
<type name="CompletionSuggestion">
<p>
A suggestion for how to complete partially entered text. Many of the
fields are optional, depending on the kind of element being suggested.
</p>
<object>
<field name="kind">
<ref>CompletionSuggestionKind</ref>
<p>
The kind of element being suggested.
</p>
</field>
<field name="relevance">
<ref>int</ref>
<p>
The relevance of this completion suggestion where a higher number
indicates a higher relevance.
</p>
</field>
<field name="completion">
<ref>String</ref>
<p>
The identifier to be inserted if the suggestion is selected. If the
suggestion is for a method or function, the client might want to
additionally insert a template for the parameters. The information
required in order to do so is contained in other fields.
</p>
</field>
<field name="displayText" optional="true">
<ref>String</ref>
<p>
Text to be displayed in, for example, a completion pop-up. This field
is only defined if the displayed text should be different than the
completion. Otherwise it is omitted.
</p>
</field>
<field name="replacementOffset" optional="true">
<ref>int</ref>
<p>
The offset of the start of the text to be
replaced. If supplied, this should be used in
preference to the offset provided on the
containing completion results.
This value may be provided independently of
replacementLength (for example if only one
differs from the completion result value).
</p>
</field>
<field name="replacementLength" optional="true">
<ref>int</ref>
<p>
The length of the text to be replaced.
If supplied, this should be used in preference
to the offset provided on the
containing completion results.
This value may be provided independently of
replacementOffset (for example if only one
differs from the completion result value).
</p>
</field>
<field name="selectionOffset">
<ref>int</ref>
<p>
The offset, relative to the beginning of the completion, of where the
selection should be placed after insertion.
</p>
</field>
<field name="selectionLength">
<ref>int</ref>
<p>
The number of characters that should be selected after insertion.
</p>
</field>
<field name="isDeprecated">
<ref>bool</ref>
<p>
True if the suggested element is deprecated.
</p>
</field>
<field name="isPotential">
<ref>bool</ref>
<p>
True if the element is not known to be valid for the target. This
happens if the type of the target is dynamic.
</p>
</field>
<field name="docSummary" optional="true">
<ref>String</ref>
<p>
An abbreviated version of the Dartdoc associated with the element
being suggested. This field is omitted if there is no Dartdoc
associated with the element.
</p>
</field>
<field name="docComplete" optional="true">
<ref>String</ref>
<p>
The Dartdoc associated with the element being suggested. This field is
omitted if there is no Dartdoc associated with the element.
</p>
</field>
<field name="declaringType" optional="true">
<ref>String</ref>
<p>
The class that declares the element being suggested. This field is
omitted if the suggested element is not a member of a class.
</p>
</field>
<field name="defaultArgumentListString" optional="true">
<ref>String</ref>
<p>
A default String for use in generating argument list source contents
on the client side.
</p>
</field>
<field name="defaultArgumentListTextRanges" optional="true">
<list>
<ref>int</ref>
</list>
<p>
Pairs of offsets and lengths describing 'defaultArgumentListString'
text ranges suitable for use by clients to set up linked edits of
default argument source contents. For example, given an argument list
string 'x, y', the corresponding text range [0, 1, 3, 1], indicates
two text ranges of length 1, starting at offsets 0 and 3. Clients can
use these ranges to treat the 'x' and 'y' values specially for linked
edits.
</p>
</field>
<field name="element" optional="true">
<ref>Element</ref>
<p>
Information about the element reference being suggested.
</p>
</field>
<field name="returnType" optional="true">
<ref>String</ref>
<p>
The return type of the getter, function or method or the type of the
field being suggested. This field is omitted if the suggested element
is not a getter, function or method.
</p>
</field>
<field name="parameterNames" optional="true">
<list>
<ref>String</ref>
</list>
<p>
The names of the parameters of the function or method being suggested.
This field is omitted if the suggested element is not a setter,
function or method.
</p>
</field>
<field name="parameterTypes" optional="true">
<list>
<ref>String</ref>
</list>
<p>
The types of the parameters of the function or method being suggested.
This field is omitted if the parameterNames field is omitted.
</p>
</field>
<field name="requiredParameterCount" optional="true">
<ref>int</ref>
<p>
The number of required parameters for the function or method being
suggested. This field is omitted if the parameterNames field is
omitted.
</p>
</field>
<field name="hasNamedParameters" optional="true">
<ref>bool</ref>
<p>
True if the function or method being suggested has at least one named
parameter. This field is omitted if the parameterNames field is
omitted.
</p>
</field>
<field name="parameterName" optional="true">
<ref>String</ref>
<p>
The name of the optional parameter being suggested. This field is
omitted if the suggestion is not the addition of an optional argument
within an argument list.
</p>
</field>
<field name="parameterType" optional="true">
<ref>String</ref>
<p>
The type of the options parameter being suggested. This field is
omitted if the parameterName field is omitted.
</p>
</field>
</object>
</type>
<type name="CompletionSuggestionKind">
<p>
An enumeration of the kinds of elements that can be included in a
completion suggestion.
</p>
<enum>
<value>
<code>ARGUMENT_LIST</code>
<p>
A list of arguments for the method or function that is being
invoked. For this suggestion kind, the completion field is a
textual representation of the invocation and the parameterNames,
parameterTypes, and requiredParameterCount attributes are defined.
</p>
</value>
<value><code>IMPORT</code></value>
<value>
<code>IDENTIFIER</code>
<p>
The element identifier should be inserted at the completion
location. For example "someMethod" in <tt>import 'myLib.dart' show
someMethod;</tt>. For suggestions of this kind, the element
attribute is defined and the completion field is the element's
identifier.
</p>
</value>
<value>
<code>INVOCATION</code>
<p>
The element is being invoked at the completion location. For
example, 'someMethod' in <tt>x.someMethod();</tt>. For suggestions
of this kind, the element attribute is defined and the completion
field is the element's identifier.
</p>
</value>
<value>
<code>KEYWORD</code>
<p>
A keyword is being suggested. For suggestions of this kind, the
completion is the keyword.
</p>
</value>
<value>
<code>NAMED_ARGUMENT</code>
<p>
A named argument for the current call site is being suggested. For
suggestions of this kind, the completion is the named argument
identifier including a trailing ':' and a space.
</p>
</value>
<value><code>OPTIONAL_ARGUMENT</code></value>
<value>
<code>OVERRIDE</code>
<p>
An overriding implementation of a class member is being suggested.
</p>
</value>
<value><code>PARAMETER</code></value>
<value>
<code>PACKAGE_NAME</code>
<p>The name of a pub package is being suggested.</p>
</value>
</enum>
</type>
<type name="DiagnosticMessage">
<p>
A message associated with a diagnostic.
</p>
<p>
For example, if the diagnostic is reporting that a variable has been
referenced before it was declared, it might have a diagnostic message that
indicates where the variable is declared.
</p>
<object>
<field name="message">
<ref>String</ref>
<p>
The message to be displayed to the user.
</p>
</field>
<field name="location">
<ref>Location</ref>
<p>
The location associated with or referenced by the message. Clients
should provide the ability to navigate to the location.
</p>
</field>
</object>
</type>
<type name="Element">
<p>
Information about an element (something that can be declared in code).
</p>
<object>
<field name="kind">
<ref>ElementKind</ref>
<p>
The kind of the element.
</p>
</field>
<field name="name">
<ref>String</ref>
<p>
The name of the element. This is typically used as the label in the
outline.
</p>
</field>
<field name="location" optional="true">
<ref>Location</ref>
<p>
The location of the name in the declaration of the element.
</p>
</field>
<field name="flags">
<ref>int</ref>
<p>
A bit-map containing the following flags:
</p>
<ul>
<li>
0x01 - set if the element is explicitly or implicitly abstract
</li>
<li>
0x02 - set if the element was declared to be ‘const’
</li>
<li>
0x04 - set if the element was declared to be ‘final’
</li>
<li>
0x08 - set if the element is a static member of a class or is a
top-level function or field
</li>
<li>
0x10 - set if the element is private
</li>
<li>
0x20 - set if the element is deprecated
</li>
</ul>
</field>
<field name="parameters" optional="true">
<ref>String</ref>
<p>
The parameter list for the element. If the element is not a method or
function this field will not be defined. If the element doesn't have
parameters (e.g. getter), this field will not be defined. If the
element has zero parameters, this field will have a value of "()".
</p>
</field>
<field name="returnType" optional="true">
<ref>String</ref>
<p>
The return type of the element. If the element is not a method or
function this field will not be defined. If the element does not have
a declared return type, this field will contain an empty string.
</p>
</field>
<field name="typeParameters" optional="true">
<ref>String</ref>
<p>
The type parameter list for the element. If the element doesn't have
type parameters, this field will not be defined.
</p>
</field>
<field name="aliasedType" optional="true">
<ref>String</ref>
<p>
If the element is a type alias, this field is the aliased type.
Otherwise this field will not be defined.
</p>
</field>
</object>
</type>
<type name="ElementKind">
<p>
An enumeration of the kinds of elements.
</p>
<enum>
<value><code>CLASS</code></value>
<value><code>CLASS_TYPE_ALIAS</code></value>
<value><code>COMPILATION_UNIT</code></value>
<value><code>CONSTRUCTOR</code></value>
<value><code>CONSTRUCTOR_INVOCATION</code></value>
<value><code>ENUM</code></value>
<value><code>ENUM_CONSTANT</code></value>
<value><code>EXTENSION</code></value>
<value><code>FIELD</code></value>
<value><code>FILE</code></value>
<value><code>FUNCTION</code></value>
<value><code>FUNCTION_INVOCATION</code></value>
<value><code>FUNCTION_TYPE_ALIAS</code></value>
<value><code>GETTER</code></value>
<value><code>LABEL</code></value>
<value><code>LIBRARY</code></value>
<value><code>LOCAL_VARIABLE</code></value>
<value><code>METHOD</code></value>
<value><code>MIXIN</code></value>
<value><code>PARAMETER</code></value>
<value><code>PREFIX</code></value>
<value><code>SETTER</code></value>
<value><code>TOP_LEVEL_VARIABLE</code></value>
<value><code>TYPE_ALIAS</code></value>
<value><code>TYPE_PARAMETER</code></value>
<value><code>UNIT_TEST_GROUP</code></value>
<value><code>UNIT_TEST_TEST</code></value>
<value><code>UNKNOWN</code></value>
</enum>
</type>
<type name="FilePath">
<ref>String</ref>
<p>
The absolute, normalized path of a file.
</p>
<p>
If the format of a file path in a request is not valid, e.g. the path is
not absolute or is not normalized, then an error of type
<tt>INVALID_FILE_PATH_FORMAT</tt> will be generated.
</p>
</type>
<type name="FoldingKind">
<p>
An enumeration of the kinds of folding regions.
</p>
<enum>
<value><code>ANNOTATIONS</code></value>
<value><code>BLOCK</code></value>
<value><code>CLASS_BODY</code></value>
<value><code>COMMENT</code></value>
<value><code>DIRECTIVES</code></value>
<value><code>DOCUMENTATION_COMMENT</code></value>
<value><code>FILE_HEADER</code></value>
<value><code>FUNCTION_BODY</code></value>
<value><code>INVOCATION</code></value>
<value><code>LITERAL</code></value>
<value><code>PARAMETERS</code></value>
</enum>
</type>
<type name="FoldingRegion">
<p>
A description of a region that can be folded.
</p>
<object>
<field name="kind">
<ref>FoldingKind</ref>
<p>
The kind of the region.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the region to be folded.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the region to be folded.
</p>
</field>
</object>
</type>
<type name="HighlightRegion">
<p>
A description of a region that could have special highlighting associated
with it.
</p>
<object>
<field name="type">
<ref>HighlightRegionType</ref>
<p>
The type of highlight associated with the region.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the region to be highlighted.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the region to be highlighted.
</p>
</field>
</object>
</type>
<type name="HighlightRegionType">
<p>
An enumeration of the kinds of highlighting that can be applied to files.
</p>
<enum>
<value><code>ANNOTATION</code></value>
<value><code>BUILT_IN</code></value>
<value><code>CLASS</code></value>
<value><code>COMMENT_BLOCK</code></value>
<value><code>COMMENT_DOCUMENTATION</code></value>
<value><code>COMMENT_END_OF_LINE</code></value>
<value><code>CONSTRUCTOR</code></value>
<value><code>DIRECTIVE</code></value>
<value>
<code>DYNAMIC_TYPE</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>DYNAMIC_LOCAL_VARIABLE_DECLARATION</code>
</value>
<value>
<code>DYNAMIC_LOCAL_VARIABLE_REFERENCE</code>
</value>
<value>
<code>DYNAMIC_PARAMETER_DECLARATION</code>
</value>
<value>
<code>DYNAMIC_PARAMETER_REFERENCE</code>
</value>
<value><code>ENUM</code></value>
<value><code>ENUM_CONSTANT</code></value>
<value>
<code>FIELD</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>FIELD_STATIC</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>FUNCTION</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>FUNCTION_DECLARATION</code>
<p>Deprecated - no longer sent.</p>
</value>
<value><code>FUNCTION_TYPE_ALIAS</code></value>
<value>
<code>GETTER_DECLARATION</code>
<p>Deprecated - no longer sent.</p>
</value>
<value><code>IDENTIFIER_DEFAULT</code></value>
<value><code>IMPORT_PREFIX</code></value>
<value>
<code>INSTANCE_FIELD_DECLARATION</code>
</value>
<value>
<code>INSTANCE_FIELD_REFERENCE</code>
</value>
<value>
<code>INSTANCE_GETTER_DECLARATION</code>
</value>
<value>
<code>INSTANCE_GETTER_REFERENCE</code>
</value>
<value>
<code>INSTANCE_METHOD_DECLARATION</code>
</value>
<value>
<code>INSTANCE_METHOD_REFERENCE</code>
</value>
<value>
<code>INSTANCE_SETTER_DECLARATION</code>
</value>
<value>
<code>INSTANCE_SETTER_REFERENCE</code>
</value>
<value>
<code>INVALID_STRING_ESCAPE</code>
</value>
<value><code>KEYWORD</code></value>
<value><code>LABEL</code></value>
<value>
<code>LIBRARY_NAME</code>
</value>
<value><code>LITERAL_BOOLEAN</code></value>
<value><code>LITERAL_DOUBLE</code></value>
<value><code>LITERAL_INTEGER</code></value>
<value><code>LITERAL_LIST</code></value>
<value><code>LITERAL_MAP</code></value>
<value><code>LITERAL_STRING</code></value>
<value>
<code>LOCAL_FUNCTION_DECLARATION</code>
</value>
<value>
<code>LOCAL_FUNCTION_REFERENCE</code>
</value>
<value>
<code>LOCAL_VARIABLE</code>
<p>Deprecated - no longer sent.</p>
</value>
<value><code>LOCAL_VARIABLE_DECLARATION</code></value>
<value>
<code>LOCAL_VARIABLE_REFERENCE</code>
</value>
<value>
<code>METHOD</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>METHOD_DECLARATION</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>METHOD_DECLARATION_STATIC</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>METHOD_STATIC</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>PARAMETER</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>SETTER_DECLARATION</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>TOP_LEVEL_VARIABLE</code>
<p>Deprecated - no longer sent.</p>
</value>
<value>
<code>PARAMETER_DECLARATION</code>
</value>
<value>
<code>PARAMETER_REFERENCE</code>
</value>
<value>
<code>STATIC_FIELD_DECLARATION</code>
</value>
<value>
<code>STATIC_GETTER_DECLARATION</code>
</value>
<value>
<code>STATIC_GETTER_REFERENCE</code>
</value>
<value>
<code>STATIC_METHOD_DECLARATION</code>
</value>
<value>
<code>STATIC_METHOD_REFERENCE</code>
</value>
<value>
<code>STATIC_SETTER_DECLARATION</code>
</value>
<value>
<code>STATIC_SETTER_REFERENCE</code>
</value>
<value>
<code>TOP_LEVEL_FUNCTION_DECLARATION</code>
</value>
<value>
<code>TOP_LEVEL_FUNCTION_REFERENCE</code>
</value>
<value>
<code>TOP_LEVEL_GETTER_DECLARATION</code>
</value>
<value>
<code>TOP_LEVEL_GETTER_REFERENCE</code>
</value>
<value>
<code>TOP_LEVEL_SETTER_DECLARATION</code>
</value>
<value>
<code>TOP_LEVEL_SETTER_REFERENCE</code>
</value>
<value>
<code>TOP_LEVEL_VARIABLE_DECLARATION</code>
</value>
<value>
<code>TYPE_ALIAS</code>
</value>
<value><code>TYPE_NAME_DYNAMIC</code></value>
<value><code>TYPE_PARAMETER</code></value>
<value>
<code>UNRESOLVED_INSTANCE_MEMBER_REFERENCE</code>
</value>
<value>
<code>VALID_STRING_ESCAPE</code>
</value>
</enum>
</type>
<type name="KytheEntry">
<p>
This object matches the format and documentation of the Entry object
documented in the
<a href="https://kythe.io/docs/kythe-storage.html#_entry">Kythe Storage
Model</a>.
</p>
<object>
<field name="source">
<ref>KytheVName</ref>
<p>
The ticket of the source node.
</p>
</field>
<field name="kind" optional="true">
<ref>String</ref>
<p>
An edge label. The schema defines which labels are meaningful.
</p>
</field>
<field name="target" optional="true">
<ref>KytheVName</ref>
<p>
The ticket of the target node.
</p>
</field>
<field name="fact">
<ref>String</ref>
<p>
A fact label. The schema defines which fact labels are meaningful.
</p>
</field>
<field name="value" optional="true">
<list>
<ref>int</ref>
</list>
<p>
The <tt>String</tt> value of the fact.
</p>
</field>
</object>
</type>
<type name="KytheVName">
<p>
This object matches the format and documentation of the Vector-Name object
documented in the
<a href="https://kythe.io/docs/kythe-storage.html#_a_id_termvname_a_vector_name_strong_vname_strong">Kythe
Storage Model</a>.
</p>
<object>
<field name="signature">
<ref>String</ref>
<p>
An opaque signature generated by the analyzer.
</p>
</field>
<field name="corpus">
<ref>String</ref>
<p>
The corpus of source code this <tt>KytheVName</tt> belongs to.
Loosely, a corpus is a collection of related files, such as the
contents of a given source repository.
</p>
</field>
<field name="root">
<ref>String</ref>
<p>
A corpus-specific root label, typically a directory path or project
identifier, denoting a distinct subset of the corpus. This may also be
used to designate virtual collections like generated files.
</p>
</field>
<field name="path">
<ref>String</ref>
<p>
A path-structured label describing the “location” of the named object
relative to the corpus and the root.
</p>
</field>
<field name="language">
<ref>String</ref>
<p>
The language this name belongs to.
</p>
</field>
</object>
</type>
<type name="LinkedEditGroup">
<p>
A collection of positions that should be linked (edited simultaneously)
for the purposes of updating code after a source change. For example, if a
set of edits introduced a new variable name, the group would contain all
of the positions of the variable name so that if the client wanted to let
the user edit the variable name after the operation, all occurrences of
the name could be edited simultaneously.
</p>
<object>
<field name="positions">
<list>
<ref>Position</ref>
</list>
<p>
The positions of the regions that should be edited simultaneously.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the regions that should be edited simultaneously.
</p>
</field>
<field name="suggestions">
<list>
<ref>LinkedEditSuggestion</ref>
</list>
<p>
Pre-computed suggestions for what every region might want to be
changed to.
</p>
</field>
</object>
</type>
<type name="LinkedEditSuggestion">
<p>
A suggestion of a value that could be used to replace all of the linked
edit regions in a <a href="#type_LinkedEditGroup">LinkedEditGroup</a>.
</p>
<object>
<field name="value">
<ref>String</ref>
<p>
The value that could be used to replace all of the linked edit
regions.
</p>
</field>
<field name="kind">
<ref>LinkedEditSuggestionKind</ref>
<p>
The kind of value being proposed.
</p>
</field>
</object>
</type>
<type name="LinkedEditSuggestionKind">
<p>
An enumeration of the kind of values that can be suggested for a linked
edit.
</p>
<enum>
<value><code>METHOD</code></value>
<value><code>PARAMETER</code></value>
<value><code>TYPE</code></value>
<value><code>VARIABLE</code></value>
</enum>
</type>
<type name="Location">
<p>
A location (character range) within a file.
</p>
<object>
<field name="file">
<ref>FilePath</ref>
<p>
The file containing the range.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the range.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the range.
</p>
</field>
<field name="startLine">
<ref>int</ref>
<p>
The one-based index of the line containing the first character of the
range.
</p>
</field>
<field name="startColumn">
<ref>int</ref>
<p>
The one-based index of the column containing the first character of
the range.
</p>
</field>
<field name="endLine" optional="true">
<ref>int</ref>
<p>
The one-based index of the line containing the character immediately
following the range.
</p>
</field>
<field name="endColumn" optional="true">
<ref>int</ref>
<p>
The one-based index of the column containing the character immediately
following the range.
</p>
</field>
</object>
</type>
<type name="NavigationRegion">
<p>
A description of a region from which the user can navigate to the
declaration of an element.
</p>
<object>
<field name="offset">
<ref>int</ref>
<p>
The offset of the region from which the user can navigate.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the region from which the user can navigate.
</p>
</field>
<field name="targets">
<list>
<ref>int</ref>
</list>
<p>
The indexes of the targets (in the enclosing navigation response) to
which the given region is bound. By opening the target, clients can
implement one form of navigation. This list cannot be empty.
</p>
</field>
</object>
</type>
<type name="NavigationTarget">
<p>
A description of a target to which the user can navigate.
</p>
<object>
<field name="kind">
<ref>ElementKind</ref>
<p>
The kind of the element.
</p>
</field>
<field name="fileIndex">
<ref>int</ref>
<p>
The index of the file (in the enclosing navigation response) to
navigate to.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the name of the target to which the user can navigate.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the name of the target to which the user can navigate.
</p>
</field>
<field name="startLine">
<ref>int</ref>
<p>
The one-based index of the line containing the first character of the
name of the target.
</p>
</field>
<field name="startColumn">
<ref>int</ref>
<p>
The one-based index of the column containing the first character of
the name of the target.
</p>
</field>
<field name="codeOffset" optional="true">
<ref>int</ref>
<p>
The offset of the target code to which the user can navigate.
</p>
</field>
<field name="codeLength" optional="true">
<ref>int</ref>
<p>
The length of the target code to which the user can navigate.
</p>
</field>
</object>
</type>
<type name="Occurrences">
<p>
A description of the references to a single element within a single file.
</p>
<object>
<field name="element">
<ref>Element</ref>
<p>
The element that was referenced.
</p>
</field>
<field name="offsets">
<list>
<ref>int</ref>
</list>
<p>
The offsets of the name of the referenced element within the file.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the name of the referenced element.
</p>
</field>
</object>
</type>
<type name="Outline">
<p>
An node in the outline structure of a file.
</p>
<object>
<field name="element">
<ref>Element</ref>
<p>
A description of the element represented by this node.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the first character of the element. This is different
than the offset in the Element, which is the offset of the name of the
element. It can be used, for example, to map locations in the file
back to an outline.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the element.
</p>
</field>
<field name="codeOffset">
<ref>int</ref>
<p>
The offset of the first character of the element code, which is
neither documentation, nor annotation.
</p>
</field>
<field name="codeLength">
<ref>int</ref>
<p>
The length of the element code.
</p>
</field>
<field name="children" optional="true">
<list>
<ref>Outline</ref>
</list>
<p>
The children of the node. The field will be omitted if the node has no
children. Children are sorted by offset.
</p>
</field>
</object>
</type>
<type name="ParameterInfo" experimental="true">
<p>
A description of a member that is being overridden.
</p>
<object>
<field name="kind">
<ref>ParameterKind</ref>
<p>
The kind of the parameter.
</p>
</field>
<field name="name">
<ref>String</ref>
<p>
The name of the parameter.
</p>
</field>
<field name="type">
<ref>String</ref>
<p>
The type of the parameter.
</p>
</field>
<field name="defaultValue" optional="true">
<ref>String</ref>
<p>The default value for this parameter. This value will be omitted if the parameter
does not have a default value.
</p>
</field>
</object>
</type>
<type name="ParameterKind" experimental="true">
<p>
An enumeration of the types of parameters.
</p>
<enum>
<value>
<code>OPTIONAL_NAMED</code>
<p>
An optional named parameter.
</p>
</value>
<value>
<code>OPTIONAL_POSITIONAL</code>
<p>
An optional positional parameter.
</p>
</value>
<value>
<code>REQUIRED_NAMED</code>
<p>
A required named parameter.
</p>
</value>
<value>
<code>REQUIRED_POSITIONAL</code>
<p>
A required positional parameter.
</p>
</value>
</enum>
</type>
<type name="Position">
<p>
A position within a file.
</p>
<object>
<field name="file">
<ref>FilePath</ref>
<p>
The file containing the position.
</p>
</field>
<field name="offset">
<ref>int</ref>
<p>
The offset of the position.
</p>
</field>
</object>
</type>
<type name="RefactoringKind">
<p>
An enumeration of the kinds of refactorings that can be created.
</p>
<enum>
<value><code>CONVERT_GETTER_TO_METHOD</code></value>
<value><code>CONVERT_METHOD_TO_GETTER</code></value>
<value><code>EXTRACT_LOCAL_VARIABLE</code></value>
<value><code>EXTRACT_METHOD</code></value>
<value><code>EXTRACT_WIDGET</code></value>
<value><code>INLINE_LOCAL_VARIABLE</code></value>
<value><code>INLINE_METHOD</code></value>
<value><code>MOVE_FILE</code></value>
<value><code>RENAME</code></value>
</enum>
</type>
<type name="RefactoringMethodParameter">
<!-- This type does not appear to be referenced yet. -->
<p>
A description of a parameter in a method refactoring.
</p>
<object>
<field name="id" optional="true">
<ref>String</ref>
<p>
The unique identifier of the parameter. Clients may omit this field
for the parameters they want to add.
</p>
</field>
<field name="kind">
<ref>RefactoringMethodParameterKind</ref>
<p>
The kind of the parameter.
</p>
</field>
<field name="type">
<ref>String</ref>
<p>
The type that should be given to the parameter, or the return type of
the parameter's function type.
</p>
</field>
<field name="name">
<ref>String</ref>
<p>
The name that should be given to the parameter.
</p>
</field>
<field name="parameters" optional="true">
<ref>String</ref>
<p>
The parameter list of the parameter's function type. If the parameter
is not of a function type, this field will not be defined. If the
function type has zero parameters, this field will have a value of
'()'.
</p>
</field>
</object>
</type>
<type name="RefactoringMethodParameterKind">
<p>
An enumeration of the kinds of parameters.
</p>
<enum>
<value><code>REQUIRED</code></value>
<value><code>POSITIONAL</code></value>
<value><code>NAMED</code></value>
</enum>
</type>
<type name="RefactoringProblem">
<p>
A description of a problem related to a refactoring.
</p>
<object>
<field name="severity">
<ref>RefactoringProblemSeverity</ref>
<p>
The severity of the problem being represented.
</p>
</field>
<field name="message">
<ref>String</ref>
<p>
A human-readable description of the problem being represented.
</p>
</field>
<field name="location" optional="true">
<ref>Location</ref>
<p>
The location of the problem being represented. This field is omitted
unless there is a specific location associated with the problem (such
as a location where an element being renamed will be shadowed).
</p>
</field>
</object>
</type>
<type name="RefactoringProblemSeverity">
<p>
An enumeration of the severities of problems that can be returned by the
refactoring requests.
</p>
<enum>
<value>
<code>INFO</code>
<p>
A minor code problem. No example, because it is not used yet.
</p>
</value>
<value>
<code>WARNING</code>
<p>
A minor code problem. For example names of local variables should be
camel case and start with a lower case letter. Staring the name of a
variable with an upper case is OK from the language point of view, but
it is nice to warn the user.
</p>
</value>
<value>
<code>ERROR</code>
<p>
The refactoring technically can be performed, but there is a logical
problem. For example the name of a local variable being extracted
conflicts with another name in the scope, or duplicate parameter names
in the method being extracted, or a conflict between a parameter name
and a local variable, etc. In some cases the location of the problem
is also provided, so the IDE can show user the location and the
problem, and let the user decide whether they want to perform the
refactoring. For example the name conflict might be expected, and the
user wants to fix it afterwards.
</p>
</value>
<value>
<code>FATAL</code>
<p>
A fatal error, which prevents performing the refactoring. For example
the name of a local variable being extracted is not a valid
identifier, or selection is not a valid expression.
</p>
</value>
</enum>
</type>
<type name="RemoveContentOverlay">
<p>
A directive to remove an existing file content overlay. After processing
this directive, the file contents will once again be read from the file
system.
</p>
<p>
If this directive is used on a file that doesn't currently have a content
overlay, it has no effect.
</p>
<object>
<field name="type" value="remove">
<ref>String</ref>
</field>
</object>
</type>
<type name="SourceChange">
<p>
A description of a set of edits that implement a single conceptual change.
</p>
<object>
<field name="message">
<ref>String</ref>
<p>
A human-readable description of the change to be applied.
</p>
</field>
<field name="edits">
<list>
<ref>SourceFileEdit</ref>
</list>
<p>
A list of the edits used to effect the change, grouped by file.
</p>
</field>
<field name="linkedEditGroups">
<list>
<ref>LinkedEditGroup</ref>
</list>
<p>
A list of the linked editing groups used to customize the changes that
were made.
</p>
</field>
<field name="selection" optional="true">
<ref>Position</ref>
<p>
The position that should be selected after the edits have been
applied.
</p>
</field>
<field name="id" optional="true">
<ref>String</ref>
<p>
The optional identifier of the change kind. The identifier remains
stable even if the message changes, or is parameterized.
</p>
</field>
</object>
</type>
<type name="SourceEdit">
<p>
A description of a single change to a single file.
</p>
<object>
<field name="offset">
<ref>int</ref>
<p>
The offset of the region to be modified.
</p>
</field>
<field name="length">
<ref>int</ref>
<p>
The length of the region to be modified.
</p>
</field>
<field name="replacement">
<ref>String</ref>
<p>
The code that is to replace the specified region in the original code.
</p>
</field>
<field name="id" optional="true">
<ref>String</ref>
<p>
An identifier that uniquely identifies this source edit from other
edits in the same response. This field is omitted unless a containing
structure needs to be able to identify the edit for some reason.
</p>
<p>
For example, some refactoring operations can produce edits that might
not be appropriate (referred to as potential edits). Such edits will
have an id so that they can be referenced. Edits in the same response
that do not need to be referenced will not have an id.
</p>
</field>
</object>
</type>
<type name="SourceFileEdit">
<p>
A description of a set of changes to a single file.
</p>
<object>
<field name="file">
<ref>FilePath</ref>
<p>
The file containing the code to be modified.
</p>
</field>
<field name="fileStamp" deprecated="true">
<ref>long</ref>
<p>
The modification stamp of the file at the moment when the change was
created, in milliseconds since the "Unix epoch". Will be -1 if the
file did not exist and should be created. The client may use this
field to make sure that the file was not changed since then, so it is
safe to apply the change.
</p>
</field>
<field name="edits">
<list>
<ref>SourceEdit</ref>
</list>
<p>
A list of the edits used to effect the change.
</p>
</field>
</object>
</type>
</types>
</body>
</html>