Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: pkg/analysis_server/tool/spec/spec_input.html

Issue 2879273002: Make server use the common protocol classes (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!doctype html> 1 <!doctype html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <meta charset="UTF-8"/> 4 <meta charset="UTF-8"/>
5 <title>Analysis Server API Specification</title> 5 <title>Analysis Server API Specification</title>
6 </head> 6 </head>
7 <body> 7 <body>
8 <h1>Analysis Server API Specification</h1> 8 <h1>Analysis Server API Specification</h1>
9 <h1 style="color:#999999">Version <version>1.18.1</version></h1> 9 <h1 style="color:#999999">Version
10 <p> 10 <version>1.18.1</version>
11 This document contains a specification of the API provided by the 11 </h1>
12 analysis server. The API in this document is currently under 12 <p>
13 development. Changes to the API will be accompanied by an update to the 13 This document contains a specification of the API provided by the
14 protocol version number according to the principles of semantic 14 analysis server. The API in this document is currently under
15 versioning (<a href="http://semver.org/">semver.org</a>). 15 development. Changes to the API will be accompanied by an update to the
16 </p> 16 protocol version number according to the principles of semantic
17 <h2>Overview</h2> 17 versioning (<a href="http://semver.org/">semver.org</a>).
18 <p> 18 </p>
19 The analysis server API is a bi-directional client-server 19 <h2>Overview</h2>
20 API. The API is independent of the transport mechanism used, but 20 <p>
21 is heavily influenced by a model in which sockets or character 21 The analysis server API is a bi-directional client-server
22 streams are used to transport JSON-RPC encoded information. 22 API. The API is independent of the transport mechanism used, but
23 </p> 23 is heavily influenced by a model in which sockets or character
24 <h3>Transport Mechanism</h3> 24 streams are used to transport JSON-RPC encoded information.
25 <p> 25 </p>
26 The characters passed to the server are expected to be encoded 26 <h3>Transport Mechanism</h3>
27 using UTF-8. 27 <p>
28 </p> 28 The characters passed to the server are expected to be encoded
29 <p> 29 using UTF-8.
30 When character streams are used as the transport, messages are 30 </p>
31 delineated by newlines. This means, in particular, that the JSON 31 <p>
32 encoding process must not introduce newlines within a 32 When character streams are used as the transport, messages are
33 message. Note however that newlines are used in this document 33 delineated by newlines. This means, in particular, that the JSON
34 for readability. 34 encoding process must not introduce newlines within a
35 </p> 35 message. Note however that newlines are used in this document
36 <p> 36 for readability.
37 It is the client's responsibility to read output from the server to 37 </p>
38 avoid its blocking. 38 <p>
39 </p> 39 It is the client's responsibility to read output from the server to
40 <p> 40 avoid its blocking.
41 To ease interoperability with Lisp-based clients (which may not 41 </p>
42 be able to easily distinguish between empty lists, empty maps, 42 <p>
43 and null), client-to-server communication is allowed to replace 43 To ease interoperability with Lisp-based clients (which may not
44 any instance of "<tt>{}</tt>" or "<tt>[]</tt>" with null. The 44 be able to easily distinguish between empty lists, empty maps,
45 server will always properly represent empty lists as 45 and null), client-to-server communication is allowed to replace
46 "<tt>[]</tt>" and empty maps as "<tt>{}</tt>". 46 any instance of "<tt>{}</tt>" or "<tt>[]</tt>" with null. The
47 </p> 47 server will always properly represent empty lists as
48 <h3>Communication Structure</h3> 48 "<tt>[]</tt>" and empty maps as "<tt>{}</tt>".
49 <p> 49 </p>
50 Clients can make a request of the server and the server will 50 <h3>Communication Structure</h3>
51 provide a response for each request that it receives. While many 51 <p>
52 of the requests that can be made by a client are informational 52 Clients can make a request of the server and the server will
53 in nature, we have chosen to always return a response so that 53 provide a response for each request that it receives. While many
54 clients can know whether the request was received and was 54 of the requests that can be made by a client are informational
55 correct. 55 in nature, we have chosen to always return a response so that
56 </p> 56 clients can know whether the request was received and was
57 <p> 57 correct.
58 There is no guarantee concerning the order in which responses 58 </p>
59 will be returned, but there is a guarantee that the server will 59 <p>
60 process requests in the order in which they are sent as long as 60 There is no guarantee concerning the order in which responses
61 the transport mechanism also makes this guarantee. Responses can 61 will be returned, but there is a guarantee that the server will
62 be returned in an order that is different from the order in 62 process requests in the order in which they are sent as long as
63 which the requests were received because some requests take 63 the transport mechanism also makes this guarantee. Responses can
64 longer to process than others. 64 be returned in an order that is different from the order in
65 </p> 65 which the requests were received because some requests take
66 <p> 66 longer to process than others.
67 Every request is required to have two fields and may have two 67 </p>
68 additional optional fields. The first required field is the ‘id’ 68 <p>
69 field, which is only used by the server to associate a response 69 Every request is required to have two fields and may have two
70 with the request that generated the response. The second 70 additional optional fields. The first required field is the ‘id’
71 required field is the ‘method’ field, which is used to determine 71 field, which is only used by the server to associate a response
72 what the server is being requested to do. One optional field is 72 with the request that generated the response. The second
73 the ‘params’ field, whose structure is dependent on the method 73 required field is the ‘method’ field, which is used to determine
74 being requested. The structure of this field is described with 74 what the server is being requested to do. One optional field is
75 each request for which it is required. The other optional field 75 the ‘params’ field, whose structure is dependent on the method
76 is the 'clientRequestTime' field, which is a number indicating 76 being requested. The structure of this field is described with
77 the time at which the client made the request (milliseconds 77 each request for which it is required. The other optional field
78 since epoch). Providing clientRequestTime helps us track 78 is the 'clientRequestTime' field, which is a number indicating
79 how responsive analysis server is to client requests 79 the time at which the client made the request (milliseconds
80 and better address any issues that occur. 80 since epoch). Providing clientRequestTime helps us track
81 </p> 81 how responsive analysis server is to client requests
82 <p> 82 and better address any issues that occur.
83 Every response has up to three fields. The first field is the 83 </p>
84 ‘id’ field, which is always present and whose value is the 84 <p>
85 identifier that was passed to the request that generated the 85 Every response has up to three fields. The first field is the
86 response. The second field is the ‘error’ field, which is only 86 ‘id’ field, which is always present and whose value is the
87 present if an error was encountered while processing the 87 identifier that was passed to the request that generated the
88 request. The third field is the ‘result’ field, whose structure 88 response. The second field is the ‘error’ field, which is only
89 is dependent on the method being responded to, and is described 89 present if an error was encountered while processing the
90 with each request that will produce it. 90 request. The third field is the ‘result’ field, whose structure
91 </p> 91 is dependent on the method being responded to, and is described
92 <p> 92 with each request that will produce it.
93 The server can also communicate to the clients by sending a 93 </p>
94 notification. The purpose of these notifications is to provide 94 <p>
95 information to clients as it becomes available rather than to 95 The server can also communicate to the clients by sending a
96 require that clients poll for it. Unless explicitly stated, all 96 notification. The purpose of these notifications is to provide
97 notifications are designed to return the complete information 97 information to clients as it becomes available rather than to
98 available at the time the notification is sent; clients are not 98 require that clients poll for it. Unless explicitly stated, all
99 required to update previously communicated 99 notifications are designed to return the complete information
100 results. Consequently, the server can and should return partial 100 available at the time the notification is sent; clients are not
101 results before all results are available. For example, the 101 required to update previously communicated
102 syntactic errors for a file can be returned as soon as the 102 results. Consequently, the server can and should return partial
103 syntactic analysis is complete, and both syntactic and semantic 103 results before all results are available. For example, the
104 errors can be returned together at a later time. 104 syntactic errors for a file can be returned as soon as the
105 </p> 105 syntactic analysis is complete, and both syntactic and semantic
106 <p> 106 errors can be returned together at a later time.
107 Each notification has two fields. The first field is the ‘event’ 107 </p>
108 field, which identifies the kind of notification. The second 108 <p>
109 field is the ‘params’ field, whose structure is dependent on the 109 Each notification has two fields. The first field is the ‘event’
110 kind of notification being sent. The structure of this field is 110 field, which identifies the kind of notification. The second
111 described with each notification. 111 field is the ‘params’ field, whose structure is dependent on the
112 </p> 112 kind of notification being sent. The structure of this field is
113 <p> 113 described with each notification.
114 In order to be backward compatible, clients should ignore fields that were 114 </p>
115 not specified in the version of the API on which they were based. Clients 115 <p>
116 should also use the server.getVersion request to test that the version of 116 In order to be backward compatible, clients should ignore fields that were
117 the server supports an API before using it. 117 not specified in the version of the API on which they were based. Clients
118 </p> 118 should also use the server.getVersion request to test that the version of
119 <h3>Eventual Consistency</h3> 119 the server supports an API before using it.
120 <p> 120 </p>
121 The analysis server satisfies requests under the principle of 121 <h3>Eventual Consistency</h3>
122 <a href="https://en.wikipedia.org/wiki/Eventual_consistency">eventual cons istency</a>. 122 <p>
123 That is, in some cases it may return responses with the currently availabl e 123 The analysis server satisfies requests under the principle of
124 results while it's catching up with unprocessed changes. 124 <a href="https://en.wikipedia.org/wiki/Eventual_consistency">eventual
125 </p> 125 consistency</a>.
126 <h3>Domains</h3> 126 That is, in some cases it may return responses with the currently available
127 <p> 127 results while it's catching up with unprocessed changes.
128 For convenience, the API is divided into domains. Each domain is specified 128 </p>
129 in a separate section below. The specifications of the API’s refer to data 129 <h3>Domains</h3>
130 structures beyond the standard JSON primitives. These data structures are 130 <p>
131 documented in the section titled <a href="#types">Types</a>. 131 For convenience, the API is divided into domains. Each domain is specified
132 </p> 132 in a separate section below. The specifications of the API’s refer to data
133 <toc></toc> 133 structures beyond the standard JSON primitives. These data structures are
134 <h3>Command-line Arguments</h3> 134 documented in the section titled <a href="#types">Types</a>.
135 <p> 135 </p>
136 The command-line arguments that can be passed to the server. 136 <toc></toc>
137 </p> 137 <h3>Command-line Arguments</h3>
138 <h4>Options</h4> 138 <p>
139 <blockquote> 139 The command-line arguments that can be passed to the server.
140 <dl> 140 </p>
141 <dt>--client-id</dt> 141 <h4>Options</h4>
142 <dd> 142 <blockquote>
143 <dl>
144 <dt>--client-id</dt>
145 <dd>
143 <p> 146 <p>
144 Specifies an identifier associated with the client. Used when 147 Specifies an identifier associated with the client. Used when
145 generating error reports. 148 generating error reports.
146 </p>
147 <p>
148 Clients are strongly encouraged to provide this information in
149 order to improve the quality of information that can be provided
150 to them.
151 </p>
152 </dd>
153 </dl>
154 <dl>
155 <dt>--client-version</dt>
156 <dd>
157 <p>
158 Specifies the version of the client that is communicating with
159 the server. Used when generating error reports.
160 </p> 149 </p>
161 <p> 150 <p>
162 Clients are strongly encouraged to provide this information in 151 Clients are strongly encouraged to provide this information in
163 order to improve the quality of information that can be provided 152 order to improve the quality of information that can be provided
164 to them. 153 to them.
165 </p> 154 </p>
166 </dd> 155 </dd>
167 </dl> 156 </dl>
168 <dl> 157 <dl>
169 <dt class="deprecated">--no-error-notification</dt> 158 <dt>--client-version</dt>
170 <dd> 159 <dd>
171 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
172 Disable notifications about errors (see analysis.error). If this
173 flag is not specified then notifications will be sent for all
174 errors produced for all files in the actual analysis roots.
175 </dd>
176 </dl>
177 <dl>
178 <dt class="deprecated">--no-index</dt>
179 <dd>
180 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
181 This flag used to disable the server from generating an index, but now
182 it has no effect.
183 </dd>
184 </dl>
185 <dl>
186 <dt class="deprecated">--file-read-mode</dt>
187 <dd>
188 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
189 An enumeration of the ways files can be read from disk. Some clients
190 normalize end of line characters which would make the file offset and
191 range information incorrect. The default option is <tt>as-is</tt>, but
192 can also be set to <tt>normalize-eol-always</tt>. The default option
193 (<tt>as-is</tt>) reads files as they are on disk. The
194 <tt>normalize-eol-always</tt> option does the following:
195 <ul>
196 <li>'\r\n' is converted to '\n';</li>
197 <li>'\r' by itself is converted to '\n';</li>
198 <li>this happens regardless of the OS editor is running on.</li>
199 </ul>
200 </dd>
201 </dl>
202 </blockquote>
203 <domains></domains>
204 <domain name="server">
205 <p> 160 <p>
206 The server domain contains API’s related to the execution of 161 Specifies the version of the client that is communicating with
207 the server. 162 the server. Used when generating error reports.
208 </p> 163 </p>
209 <request method="getVersion"> 164 <p>
210 <p>Return the version number of the analysis server.</p> 165 Clients are strongly encouraged to provide this information in
211 <result> 166 order to improve the quality of information that can be provided
212 <field name="version"> 167 to them.
168 </p>
169 </dd>
170 </dl>
171 <dl>
172 <dt class="deprecated">--no-error-notification</dt>
173 <dd>
174 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
175 Disable notifications about errors (see analysis.error). If this
176 flag is not specified then notifications will be sent for all
177 errors produced for all files in the actual analysis roots.
178 </dd>
179 </dl>
180 <dl>
181 <dt class="deprecated">--no-index</dt>
182 <dd>
183 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
184 This flag used to disable the server from generating an index, but now
185 it has no effect.
186 </dd>
187 </dl>
188 <dl>
189 <dt class="deprecated">--file-read-mode</dt>
190 <dd>
191 <p><b>Deprecated:</b> clients should no longer pass this option in</p>
192 An enumeration of the ways files can be read from disk. Some clients
193 normalize end of line characters which would make the file offset and
194 range information incorrect. The default option is <tt>as-is</tt>, but
195 can also be set to <tt>normalize-eol-always</tt>. The default option
196 (<tt>as-is</tt>) reads files as they are on disk. The
197 <tt>normalize-eol-always</tt> option does the following:
198 <ul>
199 <li>'\r\n' is converted to '\n';</li>
200 <li>'\r' by itself is converted to '\n';</li>
201 <li>this happens regardless of the OS editor is running on.</li>
202 </ul>
203 </dd>
204 </dl>
205 </blockquote>
206 <domains></domains>
207 <domain name="server">
208 <p>
209 The server domain contains API’s related to the execution of
210 the server.
211 </p>
212 <request method="getVersion">
213 <p>Return the version number of the analysis server.</p>
214 <result>
215 <field name="version">
216 <ref>String</ref>
217 <p>The version number of the analysis server.</p>
218 </field>
219 </result>
220 </request>
221 <request method="shutdown">
222 <p>
223 Cleanly shutdown the analysis server. Requests that are
224 received after this request will not be processed. Requests
225 that were received before this request, but for which a
226 response has not yet been sent, will not be responded to. No
227 further responses or notifications will be sent after the
228 response to this request has been sent.
229 </p>
230 </request>
231 <request method="setSubscriptions">
232 <p>
233 Subscribe for services. All previous subscriptions are
234 replaced by the given set of services.
235 </p>
236 <p>
237 It is an error if any of the elements in the list are not
238 valid services. If there is an error, then the current
239 subscriptions will remain unchanged.
240 </p>
241 <params>
242 <field name="subscriptions">
243 <list>
244 <ref>ServerService</ref>
245 </list>
246 <p>A list of the services being subscribed to.</p>
247 </field>
248 </params>
249 </request>
250 <notification event="connected">
251 <p>
252 Reports that the server is running. This notification is
253 issued once after the server has started running but before
254 any requests are processed to let the client know that it
255 started correctly.
256 </p>
257 <p>
258 It is not possible to subscribe to or unsubscribe from this
259 notification.
260 </p>
261 <params>
262 <field name="version">
263 <ref>String</ref>
264 <p>The version number of the analysis server.</p>
265 </field>
266 <field name="pid">
267 <ref>int</ref>
268 <p>The process id of the analysis server process.</p>
269 </field>
270 <field name="sessionId" optional="true">
271 <ref>String</ref>
272 <p>The session id for this session.</p>
273 </field>
274 </params>
275 </notification>
276 <notification event="error">
277 <p>
278 Reports that an unexpected error has occurred while
279 executing the server. This notification is not used for
280 problems with specific requests (which are returned as part
281 of the response) but is used for exceptions that occur while
282 performing other tasks, such as analysis or preparing
283 notifications.
284 </p>
285 <p>
286 It is not possible to subscribe to or unsubscribe from this
287 notification.
288 </p>
289 <params>
290 <field name="isFatal">
291 <ref>bool</ref>
292 <p>
293 True if the error is a fatal error, meaning that the
294 server will shutdown automatically after sending this
295 notification.
296 </p>
297 </field>
298 <field name="message">
299 <ref>String</ref>
300 <p>
301 The error message indicating what kind of error was
302 encountered.
303 </p>
304 </field>
305 <field name="stackTrace">
306 <ref>String</ref>
307 <p>
308 The stack trace associated with the generation of the
309 error, used for debugging the server.
310 </p>
311 </field>
312 </params>
313 </notification>
314 <notification event="status">
315 <p>
316 Reports the current status of the server. Parameters are
317 omitted if there has been no change in the status
318 represented by that parameter.
319 </p>
320 <p>
321 This notification is not subscribed to by default. Clients
322 can subscribe by including the value <tt>"STATUS"</tt> in
323 the list of services passed in a server.setSubscriptions
324 request.
325 </p>
326 <params>
327 <field name="analysis" optional="true">
328 <ref>AnalysisStatus</ref>
329 <p>
330 The current status of analysis, including whether
331 analysis is being performed and if so what is being
332 analyzed.
333 </p>
334 </field>
335 <field name="pub" optional="true">
336 <ref>PubStatus</ref>
337 <p>
338 The current status of pub execution, indicating whether we are
339 currently running pub.
340 </p>
341 </field>
342 </params>
343 </notification>
344 </domain>
345 <domain name="analysis">
346 <p>
347 The analysis domain contains API’s related to the analysis of
348 files.
349 </p>
350 <request method="getErrors">
351 <p>
352 Return the errors associated with the given file. If the
353 errors for the given file have not yet been computed, or the
354 most recently computed errors for the given file are out of
355 date, then the response for this request will be delayed
356 until they have been computed. If some or all of the errors
357 for the file cannot be computed, then the subset of the
358 errors that can be computed will be returned and the
359 response will contain an error to indicate why the errors
360 could not be computed. If the content of the file changes after this
361 request was received but before a response could be sent, then an
362 error of type <tt>CONTENT_MODIFIED</tt> will be generated.
363 </p>
364 <p>
365 This request is intended to be used by clients that cannot
366 asynchronously apply updated error information. Clients that
367 <b>can</b> apply error information as it becomes available
368 should use the information provided by the 'analysis.errors'
369 notification.
370 </p>
371 <p>
372 If a request is made for a file which does not exist, or
373 which is not currently subject to analysis (e.g. because it
374 is not associated with any analysis root specified to
375 analysis.setAnalysisRoots), an error of type
376 <tt>GET_ERRORS_INVALID_FILE</tt> will be generated.
377 </p>
378 <params>
379 <field name="file">
380 <ref>FilePath</ref>
381 <p>
382 The file for which errors are being requested.
383 </p>
384 </field>
385 </params>
386 <result>
387 <field name="errors">
388 <list>
389 <ref>AnalysisError</ref>
390 </list>
391 <p>
392 The errors associated with the file.
393 </p>
394 </field>
395 </result>
396 </request>
397 <request method="getHover">
398 <p>
399 Return the hover information associate with the given
400 location. If some or all of the hover information is not
401 available at the time this request is processed the
402 information will be omitted from the response.
403 </p>
404 <params>
405 <field name="file">
406 <ref>FilePath</ref>
407 <p>
408 The file in which hover information is being requested.
409 </p>
410 </field>
411 <field name="offset">
412 <ref>int</ref>
413 <p>
414 The offset for which hover information is being requested.
415 </p>
416 </field>
417 </params>
418 <result>
419 <field name="hovers">
420 <list>
421 <ref>HoverInformation</ref>
422 </list>
423 <p>
424 The hover information associated with the
425 location. The list will be empty if no information
426 could be determined for the location. The list can
427 contain multiple items if the file is being analyzed
428 in multiple contexts in conflicting ways (such as a
429 part that is included in multiple libraries).
430 </p>
431 </field>
432 </result>
433 </request>
434 <request method="getReachableSources">
435 <p>
436 Return the transitive closure of reachable sources for a given file.
437 </p>
438 <p>
439 If a request is made for a file which does not exist, or
440 which is not currently subject to analysis (e.g. because it
441 is not associated with any analysis root specified to
442 analysis.setAnalysisRoots), an error of type
443 <tt>GET_REACHABLE_SOURCES_INVALID_FILE</tt> will be generated.
444 </p>
445 <params>
446 <field name="file">
447 <ref>FilePath</ref>
448 <p>
449 The file for which reachable source information is being requested.
450 </p>
451 </field>
452 </params>
453 <result>
454 <field name="sources">
455 <map>
456 <key>
213 <ref>String</ref> 457 <ref>String</ref>
214 <p>The version number of the analysis server.</p> 458 </key>
215 </field> 459 <value>
216 </result> 460 <list>
217 </request> 461 <ref>String</ref>
218 <request method="shutdown"> 462 </list>
219 <p> 463 </value>
220 Cleanly shutdown the analysis server. Requests that are 464 </map>
221 received after this request will not be processed. Requests 465 <p>
222 that were received before this request, but for which a 466 A mapping from source URIs to directly reachable source URIs. For
223 response has not yet been sent, will not be responded to. No 467 example,
224 further responses or notifications will be sent after the 468 a file "foo.dart" that imports "bar.dart" would have the corresponding
225 response to this request has been sent. 469 mapping
226 </p> 470 { "file:///foo.dart" : ["file:///bar.dart"] }. If "bar.dart" has
227 </request> 471 further imports
228 <request method="setSubscriptions"> 472 (or exports) there will be a mapping from the URI "file:///bar.dart"
229 <p> 473 to them.
230 Subscribe for services. All previous subscriptions are 474 To check if a specific URI is reachable from a given file, clients can
231 replaced by the given set of services. 475 check
232 </p> 476 for its presence in the resulting key set.
233 <p> 477 </p>
234 It is an error if any of the elements in the list are not 478 </field>
235 valid services. If there is an error, then the current 479 </result>
236 subscriptions will remain unchanged. 480 </request>
237 </p> 481 <request method="getLibraryDependencies">
238 <params> 482 <p>
239 <field name="subscriptions"> 483 Return library dependency information for use in client-side indexing
240 <list><ref>ServerService</ref></list> 484 and package URI resolution.
241 <p>A list of the services being subscribed to.</p> 485 </p>
242 </field> 486 <p>
243 </params> 487 Clients that are only using the libraries field should consider using the
244 </request> 488 analyzedFiles notification instead.
245 <notification event="connected"> 489 </p>
246 <p> 490 <result>
247 Reports that the server is running. This notification is 491 <field name="libraries">
248 issued once after the server has started running but before 492 <list>
249 any requests are processed to let the client know that it 493 <ref>FilePath</ref>
250 started correctly. 494 </list>
251 </p> 495 <p>
252 <p> 496 A list of the paths of library elements referenced by
253 It is not possible to subscribe to or unsubscribe from this 497 files in existing analysis roots.
254 notification. 498 </p>
255 </p> 499 </field>
256 <params> 500 <field name="packageMap">
257 <field name="version"> 501 <map>
502 <key>
258 <ref>String</ref> 503 <ref>String</ref>
259 <p>The version number of the analysis server.</p> 504 </key>
260 </field> 505 <value>
261 <field name="pid">
262 <ref>int</ref>
263 <p>The process id of the analysis server process.</p>
264 </field>
265 <field name="sessionId" optional="true">
266 <ref>String</ref>
267 <p>The session id for this session.</p>
268 </field>
269 </params>
270 </notification>
271 <notification event="error">
272 <p>
273 Reports that an unexpected error has occurred while
274 executing the server. This notification is not used for
275 problems with specific requests (which are returned as part
276 of the response) but is used for exceptions that occur while
277 performing other tasks, such as analysis or preparing
278 notifications.
279 </p>
280 <p>
281 It is not possible to subscribe to or unsubscribe from this
282 notification.
283 </p>
284 <params>
285 <field name="isFatal">
286 <ref>bool</ref>
287 <p>
288 True if the error is a fatal error, meaning that the
289 server will shutdown automatically after sending this
290 notification.
291 </p>
292 </field>
293 <field name="message">
294 <ref>String</ref>
295 <p>
296 The error message indicating what kind of error was
297 encountered.
298 </p>
299 </field>
300 <field name="stackTrace">
301 <ref>String</ref>
302 <p>
303 The stack trace associated with the generation of the
304 error, used for debugging the server.
305 </p>
306 </field>
307 </params>
308 </notification>
309 <notification event="status">
310 <p>
311 Reports the current status of the server. Parameters are
312 omitted if there has been no change in the status
313 represented by that parameter.
314 </p>
315 <p>
316 This notification is not subscribed to by default. Clients
317 can subscribe by including the value <tt>"STATUS"</tt> in
318 the list of services passed in a server.setSubscriptions
319 request.
320 </p>
321 <params>
322 <field name="analysis" optional="true">
323 <ref>AnalysisStatus</ref>
324 <p>
325 The current status of analysis, including whether
326 analysis is being performed and if so what is being
327 analyzed.
328 </p>
329 </field>
330 <field name="pub" optional="true">
331 <ref>PubStatus</ref>
332 <p>
333 The current status of pub execution, indicating whether we are
334 currently running pub.
335 </p>
336 </field>
337 </params>
338 </notification>
339 </domain>
340 <domain name="analysis">
341 <p>
342 The analysis domain contains API’s related to the analysis of
343 files.
344 </p>
345 <request method="getErrors">
346 <p>
347 Return the errors associated with the given file. If the
348 errors for the given file have not yet been computed, or the
349 most recently computed errors for the given file are out of
350 date, then the response for this request will be delayed
351 until they have been computed. If some or all of the errors
352 for the file cannot be computed, then the subset of the
353 errors that can be computed will be returned and the
354 response will contain an error to indicate why the errors
355 could not be computed. If the content of the file changes after this
356 request was received but before a response could be sent, then an
357 error of type <tt>CONTENT_MODIFIED</tt> will be generated.
358 </p>
359 <p>
360 This request is intended to be used by clients that cannot
361 asynchronously apply updated error information. Clients that
362 <b>can</b> apply error information as it becomes available
363 should use the information provided by the 'analysis.errors'
364 notification.
365 </p>
366 <p>
367 If a request is made for a file which does not exist, or
368 which is not currently subject to analysis (e.g. because it
369 is not associated with any analysis root specified to
370 analysis.setAnalysisRoots), an error of type
371 <tt>GET_ERRORS_INVALID_FILE</tt> will be generated.
372 </p>
373 <params>
374 <field name="file">
375 <ref>FilePath</ref>
376 <p>
377 The file for which errors are being requested.
378 </p>
379 </field>
380 </params>
381 <result>
382 <field name="errors">
383 <list><ref>AnalysisError</ref></list>
384 <p>
385 The errors associated with the file.
386 </p>
387 </field>
388 </result>
389 </request>
390 <request method="getHover">
391 <p>
392 Return the hover information associate with the given
393 location. If some or all of the hover information is not
394 available at the time this request is processed the
395 information will be omitted from the response.
396 </p>
397 <params>
398 <field name="file">
399 <ref>FilePath</ref>
400 <p>
401 The file in which hover information is being requested.
402 </p>
403 </field>
404 <field name="offset">
405 <ref>int</ref>
406 <p>
407 The offset for which hover information is being requested.
408 </p>
409 </field>
410 </params>
411 <result>
412 <field name="hovers">
413 <list><ref>HoverInformation</ref></list>
414 <p>
415 The hover information associated with the
416 location. The list will be empty if no information
417 could be determined for the location. The list can
418 contain multiple items if the file is being analyzed
419 in multiple contexts in conflicting ways (such as a
420 part that is included in multiple libraries).
421 </p>
422 </field>
423 </result>
424 </request>
425 <request method="getReachableSources">
426 <p>
427 Return the transitive closure of reachable sources for a given file.
428 </p>
429 <p>
430 If a request is made for a file which does not exist, or
431 which is not currently subject to analysis (e.g. because it
432 is not associated with any analysis root specified to
433 analysis.setAnalysisRoots), an error of type
434 <tt>GET_REACHABLE_SOURCES_INVALID_FILE</tt> will be generated.
435 </p>
436 <params>
437 <field name="file">
438 <ref>FilePath</ref>
439 <p>
440 The file for which reachable source information is being requested .
441 </p>
442 </field>
443 </params>
444 <result>
445 <field name="sources">
446 <map> 506 <map>
447 <key><ref>String</ref></key> 507 <key>
448 <value><list><ref>String</ref></list></value> 508 <ref>String</ref>
449 </map> 509 </key>
450 <p>
451 A mapping from source URIs to directly reachable source URIs. For example,
452 a file "foo.dart" that imports "bar.dart" would have the correspon ding mapping
453 { "file:///foo.dart" : ["file:///bar.dart"] }. If "bar.dart" has further imports
454 (or exports) there will be a mapping from the URI "file:///bar.dar t" to them.
455 To check if a specific URI is reachable from a given file, clients can check
456 for its presence in the resulting key set.
457 </p>
458 </field>
459 </result>
460 </request>
461 <request method="getLibraryDependencies">
462 <p>
463 Return library dependency information for use in client-side indexing
464 and package URI resolution.
465 </p>
466 <p>
467 Clients that are only using the libraries field should consider using th e
468 analyzedFiles notification instead.
469 </p>
470 <result>
471 <field name="libraries">
472 <list><ref>FilePath</ref></list>
473 <p>
474 A list of the paths of library elements referenced by
475 files in existing analysis roots.
476 </p>
477 </field>
478 <field name="packageMap">
479 <map>
480 <key><ref>String</ref></key>
481 <value>
482 <map>
483 <key><ref>String</ref></key>
484 <value><list><ref>FilePath</ref></list></value>
485 </map>
486 </value>
487 </map>
488 <p>
489 A mapping from context source roots to package maps which map
490 package names to source directories for use in client-side
491 package URI resolution.
492 </p>
493 </field>
494 </result>
495 </request>
496 <request method="getNavigation">
497 <p>
498 Return the navigation information associated with the given region of
499 the given file. If the navigation information for the given file has
500 not yet been computed, or the most recently computed navigation
501 information for the given file is out of date, then the response for
502 this request will be delayed until it has been computed. If the
503 content of the file changes after this request was received but before
504 a response could be sent, then an error of type
505 <tt>CONTENT_MODIFIED</tt> will be generated.
506 </p>
507 <p>
508 If a navigation region overlaps (but extends either before or after)
509 the given region of the file it will be included in the result. This
510 means that it is theoretically possible to get the same navigation
511 region in response to multiple requests. Clients can avoid this by
512 always choosing a region that starts at the beginning of a line and
513 ends at the end of a (possibly different) line in the file.
514 </p>
515 <p>
516 If a request is made for a file which does not exist, or
517 which is not currently subject to analysis (e.g. because it
518 is not associated with any analysis root specified to
519 analysis.setAnalysisRoots), an error of type
520 <tt>GET_NAVIGATION_INVALID_FILE</tt> will be generated.
521 </p>
522 <params>
523 <field name="file">
524 <ref>FilePath</ref>
525 <p>
526 The file in which navigation information is being requested.
527 </p>
528 </field>
529 <field name="offset">
530 <ref>int</ref>
531 <p>
532 The offset of the region for which navigation information is being
533 requested.
534 </p>
535 </field>
536 <field name="length">
537 <ref>int</ref>
538 <p>
539 The length of the region for which navigation information is being
540 requested.
541 </p>
542 </field>
543 </params>
544 <result>
545 <field name="files">
546 <list><ref>FilePath</ref></list>
547 <p>
548 A list of the paths of files that are referenced by the navigation
549 targets.
550 </p>
551 </field>
552 <field name="targets">
553 <list><ref>NavigationTarget</ref></list>
554 <p>
555 A list of the navigation targets that are referenced by the
556 navigation regions.
557 </p>
558 </field>
559 <field name="regions">
560 <list><ref>NavigationRegion</ref></list>
561 <p>
562 A list of the navigation regions within the requested region of
563 the file.
564 </p>
565 </field>
566 </result>
567 </request>
568 <request method="reanalyze">
569 <p>
570 Force the re-analysis of everything contained in the specified
571 analysis roots. This will cause all previously computed analysis
572 results to be discarded and recomputed, and will cause all subscribed
573 notifications to be re-sent.
574 </p>
575 <p>
576 If no analysis roots are provided, then all current analysis roots
577 will be re-analyzed. If an empty list of analysis roots is provided,
578 then nothing will be re-analyzed. If the list contains one or more
579 paths that are not currently analysis roots, then an error of type
580 <tt>INVALID_ANALYSIS_ROOT</tt> will be generated.
581 </p>
582 <params>
583 <field name="roots" optional="true">
584 <list><ref>FilePath</ref></list>
585 <p>
586 A list of the analysis roots that are to be re-analyzed.
587 </p>
588 </field>
589 </params>
590 </request>
591 <request method="setAnalysisRoots">
592 <p>
593 Sets the root paths used to determine which files to analyze. The set
594 of files to be analyzed are all of the files in one of the root paths
595 that are not either explicitly or implicitly excluded. A file is
596 explicitly excluded if it is in one of the excluded paths. A file is
597 implicitly excluded if it is in a subdirectory of one of the root
598 paths where the name of the subdirectory starts with a period (that
599 is, a hidden directory).
600 </p>
601 <p>
602 Note that this request determines the set of requested
603 analysis roots. The actual set of analysis roots at any
604 given time is the intersection of this set with the set of
605 files and directories actually present on the
606 filesystem. When the filesystem changes, the actual set of
607 analysis roots is automatically updated, but the set of
608 requested analysis roots is unchanged. This means that if
609 the client sets an analysis root before the root becomes
610 visible to server in the filesystem, there is no error; once
611 the server sees the root in the filesystem it will start
612 analyzing it. Similarly, server will stop analyzing files
613 that are removed from the file system but they will remain
614 in the set of requested roots.
615 </p>
616 <p>
617 If an included path represents a file, then server will look
618 in the directory containing the file for a pubspec.yaml
619 file. If none is found, then the parents of the directory
620 will be searched until such a file is found or the root of
621 the file system is reached. If such a file is found, it will
622 be used to resolve package: URI’s within the file.
623 </p>
624 <params>
625 <field name="included">
626 <list><ref>FilePath</ref></list>
627 <p>
628 A list of the files and directories that should be
629 analyzed.
630 </p>
631 </field>
632 <field name="excluded">
633 <list><ref>FilePath</ref></list>
634 <p>
635 A list of the files and directories within the
636 included directories that should not be analyzed.
637 </p>
638 </field>
639 <field name="packageRoots" optional="true">
640 <map>
641 <key><ref>FilePath</ref></key>
642 <value><ref>FilePath</ref></value>
643 </map>
644 <p>
645 A mapping from source directories to package roots
646 that should override the normal package: URI resolution
647 mechanism.
648 </p>
649 <p>
650 If a package root is a directory, then
651 the analyzer will behave as though the associated
652 source directory in the map contains a special
653 pubspec.yaml file which resolves any package: URI to the
654 corresponding path within that package root directory. The
655 effect is the same as specifying the package root directory as
656 a "--package_root" parameter to the Dart VM when
657 executing any Dart file inside the source directory.
658 </p>
659 <p>
660 If a package root is a file, then the analyzer
661 will behave as though that file is a ".packages" file in the
662 source directory. The effect is the same as specifying the file
663 as a "--packages" parameter to the Dart VM when
664 executing any Dart file inside the source directory.
665 </p>
666 <p>
667 Files in any directories that are not overridden by this
668 mapping have their package: URI's resolved using the
669 normal pubspec.yaml mechanism. If this field is absent,
670 or the empty map is specified, that indicates that the
671 normal pubspec.yaml mechanism should always be used.
672 </p>
673 </field>
674 </params>
675 </request>
676 <request method="setGeneralSubscriptions">
677 <p>
678 Subscribe for general services (that is, services that are not
679 specific to individual files). All previous subscriptions are replaced
680 by the given set of services.
681 </p>
682 <p>
683 It is an error if any of the elements in the list are not valid
684 services. If there is an error, then the current subscriptions will
685 remain unchanged.
686 </p>
687 <params>
688 <field name="subscriptions">
689 <list><ref>GeneralAnalysisService</ref></list>
690 <p>A list of the services being subscribed to.</p>
691 </field>
692 </params>
693 </request>
694 <request method="setPriorityFiles">
695 <p>
696 Set the priority files to the files in the given list. A
697 priority file is a file that is given priority when
698 scheduling which analysis work to do first. The list
699 typically contains those files that are visible to the user
700 and those for which analysis results will have the biggest
701 impact on the user experience. The order of the files within
702 the list is significant: the first file will be given higher
703 priority than the second, the second higher priority than
704 the third, and so on.
705 </p>
706 <p>
707 Note that this request determines the set of requested
708 priority files. The actual set of priority files is the
709 intersection of the requested set of priority files with the
710 set of files currently subject to analysis. (See
711 analysis.setSubscriptions for a description of files that
712 are subject to analysis.)
713 </p>
714 <p>
715 If a requested priority file is a directory it is ignored,
716 but remains in the set of requested priority files so that
717 if it later becomes a file it can be included in the set of
718 actual priority files.
719 </p>
720 <params>
721 <field name="files">
722 <list><ref>FilePath</ref></list>
723 <p>
724 The files that are to be a priority for analysis.
725 </p>
726 </field>
727 </params>
728 </request>
729 <request method="setSubscriptions">
730 <p>
731 Subscribe for services that are specific to individual files.
732 All previous subscriptions are replaced by the current set of
733 subscriptions. If a given service is not included as a key in the map
734 then no files will be subscribed to the service, exactly as if the
735 service had been included in the map with an explicit empty list of
736 files.
737 </p>
738 <p>
739 Note that this request determines the set of requested
740 subscriptions. The actual set of subscriptions at any given
741 time is the intersection of this set with the set of files
742 currently subject to analysis. The files currently subject
743 to analysis are the set of files contained within an actual
744 analysis root but not excluded, plus all of the files
745 transitively reachable from those files via import, export
746 and part directives. (See analysis.setAnalysisRoots for an
747 explanation of how the actual analysis roots are
748 determined.) When the actual analysis roots change, the
749 actual set of subscriptions is automatically updated, but
750 the set of requested subscriptions is unchanged.
751 </p>
752 <p>
753 If a requested subscription is a directory it is ignored,
754 but remains in the set of requested subscriptions so that if
755 it later becomes a file it can be included in the set of
756 actual subscriptions.
757 </p>
758 <p>
759 It is an error if any of the keys in the map are not valid
760 services. If there is an error, then the existing
761 subscriptions will remain unchanged.
762 </p>
763 <params>
764 <field name="subscriptions">
765 <map>
766 <key><ref>AnalysisService</ref></key>
767 <value> 510 <value>
768 <list><ref>FilePath</ref></list> 511 <list>
512 <ref>FilePath</ref>
513 </list>
769 </value> 514 </value>
770 </map> 515 </map>
771 <p> 516 </value>
772 A table mapping services to a list of the files being 517 </map>
773 subscribed to the service. 518 <p>
774 </p> 519 A mapping from context source roots to package maps which map
775 </field> 520 package names to source directories for use in client-side
776 </params> 521 package URI resolution.
777 </request> 522 </p>
778 <request method="updateContent"> 523 </field>
779 <p> 524 </result>
780 Update the content of one or more files. Files that were 525 </request>
781 previously updated but not included in this update remain 526 <request method="getNavigation">
782 unchanged. This effectively represents an overlay of the 527 <p>
783 filesystem. The files whose content is overridden are 528 Return the navigation information associated with the given region of
784 therefore seen by server as being files with the given 529 the given file. If the navigation information for the given file has
785 content, even if the files do not exist on the filesystem or 530 not yet been computed, or the most recently computed navigation
786 if the file path represents the path to a directory on the 531 information for the given file is out of date, then the response for
787 filesystem. 532 this request will be delayed until it has been computed. If the
788 </p> 533 content of the file changes after this request was received but before
789 <params> 534 a response could be sent, then an error of type
790 <field name="files"> 535 <tt>CONTENT_MODIFIED</tt> will be generated.
791 <map> 536 </p>
792 <key><ref>FilePath</ref></key> 537 <p>
793 <value> 538 If a navigation region overlaps (but extends either before or after)
794 <union field="type"> 539 the given region of the file it will be included in the result. This
795 <ref>AddContentOverlay</ref> 540 means that it is theoretically possible to get the same navigation
796 <ref>ChangeContentOverlay</ref> 541 region in response to multiple requests. Clients can avoid this by
797 <ref>RemoveContentOverlay</ref> 542 always choosing a region that starts at the beginning of a line and
798 </union> 543 ends at the end of a (possibly different) line in the file.
799 </value> 544 </p>
800 </map> 545 <p>
801 <p> 546 If a request is made for a file which does not exist, or
802 A table mapping the files whose content has changed to a 547 which is not currently subject to analysis (e.g. because it
803 description of the content change. 548 is not associated with any analysis root specified to
804 </p> 549 analysis.setAnalysisRoots), an error of type
805 </field> 550 <tt>GET_NAVIGATION_INVALID_FILE</tt> will be generated.
806 </params> 551 </p>
807 <result> 552 <params>
808 </result> 553 <field name="file">
809 </request> 554 <ref>FilePath</ref>
810 <request method="updateOptions" deprecated="true"> 555 <p>
811 <p><b>Deprecated:</b> all of the options can be set by users in 556 The file in which navigation information is being requested.
812 an analysis options file.</p> 557 </p>
813 <p> 558 </field>
814 Update the options controlling analysis based on the given 559 <field name="offset">
815 set of options. Any options that are not included in the 560 <ref>int</ref>
816 analysis options will not be changed. If there are options 561 <p>
817 in the analysis options that are not valid, they will be 562 The offset of the region for which navigation information is being
818 silently ignored. 563 requested.
819 </p> 564 </p>
820 <params> 565 </field>
821 <field name="options"> 566 <field name="length">
822 <ref>AnalysisOptions</ref> 567 <ref>int</ref>
823 <p> 568 <p>
824 The options that are to be used to control analysis. 569 The length of the region for which navigation information is being
825 </p> 570 requested.
826 </field> 571 </p>
827 </params> 572 </field>
828 </request> 573 </params>
829 <notification event="analyzedFiles"> 574 <result>
830 <p> 575 <field name="files">
831 Reports the paths of the files that are being analyzed. 576 <list>
832 </p> 577 <ref>FilePath</ref>
833 <p> 578 </list>
834 This notification is not subscribed to by default. Clients can 579 <p>
835 subscribe by including the value <tt>"ANALYZED_FILES"</tt> in the list 580 A list of the paths of files that are referenced by the navigation
836 of services passed in an analysis.setGeneralSubscriptions request. 581 targets.
837 </p> 582 </p>
838 <params> 583 </field>
839 <field name="directories"> 584 <field name="targets">
840 <list><ref>FilePath</ref></list> 585 <list>
841 <p> 586 <ref>NavigationTarget</ref>
842 A list of the paths of the files that are being analyzed. 587 </list>
843 </p> 588 <p>
844 </field> 589 A list of the navigation targets that are referenced by the
845 </params> 590 navigation regions.
846 </notification> 591 </p>
847 <notification event="errors"> 592 </field>
848 <p> 593 <field name="regions">
849 Reports the errors associated with a given file. The set of 594 <list>
850 errors included in the notification is always a complete 595 <ref>NavigationRegion</ref>
851 list that supersedes any previously reported errors. 596 </list>
852 </p> 597 <p>
853 <params> 598 A list of the navigation regions within the requested region of
854 <field name="file"> 599 the file.
600 </p>
601 </field>
602 </result>
603 </request>
604 <request method="reanalyze">
605 <p>
606 Force the re-analysis of everything contained in the specified
607 analysis roots. This will cause all previously computed analysis
608 results to be discarded and recomputed, and will cause all subscribed
609 notifications to be re-sent.
610 </p>
611 <p>
612 If no analysis roots are provided, then all current analysis roots
613 will be re-analyzed. If an empty list of analysis roots is provided,
614 then nothing will be re-analyzed. If the list contains one or more
615 paths that are not currently analysis roots, then an error of type
616 <tt>INVALID_ANALYSIS_ROOT</tt> will be generated.
617 </p>
618 <params>
619 <field name="roots" optional="true">
620 <list>
621 <ref>FilePath</ref>
622 </list>
623 <p>
624 A list of the analysis roots that are to be re-analyzed.
625 </p>
626 </field>
627 </params>
628 </request>
629 <request method="setAnalysisRoots">
630 <p>
631 Sets the root paths used to determine which files to analyze. The set
632 of files to be analyzed are all of the files in one of the root paths
633 that are not either explicitly or implicitly excluded. A file is
634 explicitly excluded if it is in one of the excluded paths. A file is
635 implicitly excluded if it is in a subdirectory of one of the root
636 paths where the name of the subdirectory starts with a period (that
637 is, a hidden directory).
638 </p>
639 <p>
640 Note that this request determines the set of requested
641 analysis roots. The actual set of analysis roots at any
642 given time is the intersection of this set with the set of
643 files and directories actually present on the
644 filesystem. When the filesystem changes, the actual set of
645 analysis roots is automatically updated, but the set of
646 requested analysis roots is unchanged. This means that if
647 the client sets an analysis root before the root becomes
648 visible to server in the filesystem, there is no error; once
649 the server sees the root in the filesystem it will start
650 analyzing it. Similarly, server will stop analyzing files
651 that are removed from the file system but they will remain
652 in the set of requested roots.
653 </p>
654 <p>
655 If an included path represents a file, then server will look
656 in the directory containing the file for a pubspec.yaml
657 file. If none is found, then the parents of the directory
658 will be searched until such a file is found or the root of
659 the file system is reached. If such a file is found, it will
660 be used to resolve package: URI’s within the file.
661 </p>
662 <params>
663 <field name="included">
664 <list>
665 <ref>FilePath</ref>
666 </list>
667 <p>
668 A list of the files and directories that should be
669 analyzed.
670 </p>
671 </field>
672 <field name="excluded">
673 <list>
674 <ref>FilePath</ref>
675 </list>
676 <p>
677 A list of the files and directories within the
678 included directories that should not be analyzed.
679 </p>
680 </field>
681 <field name="packageRoots" optional="true">
682 <map>
683 <key>
855 <ref>FilePath</ref> 684 <ref>FilePath</ref>
856 <p> 685 </key>
857 The file containing the errors. 686 <value>
858 </p>
859 </field>
860 <field name="errors">
861 <list><ref>AnalysisError</ref></list>
862 <p>
863 The errors contained in the file.
864 </p>
865 </field>
866 </params>
867 </notification>
868 <notification event="flushResults">
869 <p>
870 Reports that any analysis results that were previously
871 associated with the given files should be considered to be
872 invalid because those files are no longer being analyzed,
873 either because the analysis root that contained it is no
874 longer being analyzed or because the file no longer exists.
875 </p>
876 <p>
877 If a file is included in this notification and at some later
878 time a notification with results for the file is received,
879 clients should assume that the file is once again being
880 analyzed and the information should be processed.
881 </p>
882 <p>
883 It is not possible to subscribe to or unsubscribe from this
884 notification.
885 </p>
886 <params>
887 <field name="files">
888 <list><ref>FilePath</ref></list>
889 <p>
890 The files that are no longer being analyzed.
891 </p>
892 </field>
893 </params>
894 </notification>
895 <notification event="folding">
896 <p>
897 Reports the folding regions associated with a given
898 file. Folding regions can be nested, but will not be
899 overlapping. Nesting occurs when a foldable element, such as
900 a method, is nested inside another foldable element such as
901 a class.
902 </p>
903 <p>
904 This notification is not subscribed to by default. Clients
905 can subscribe by including the value <tt>"FOLDING"</tt> in
906 the list of services passed in an analysis.setSubscriptions
907 request.
908 </p>
909 <params>
910 <field name="file">
911 <ref>FilePath</ref> 687 <ref>FilePath</ref>
912 <p> 688 </value>
913 The file containing the folding regions. 689 </map>
914 </p> 690 <p>
915 </field> 691 A mapping from source directories to package roots
916 <field name="regions"> 692 that should override the normal package: URI resolution
917 <list><ref>FoldingRegion</ref></list> 693 mechanism.
918 <p> 694 </p>
919 The folding regions contained in the file. 695 <p>
920 </p> 696 If a package root is a directory, then
921 </field> 697 the analyzer will behave as though the associated
922 </params> 698 source directory in the map contains a special
923 </notification> 699 pubspec.yaml file which resolves any package: URI to the
924 <notification event="highlights"> 700 corresponding path within that package root directory. The
925 <p> 701 effect is the same as specifying the package root directory as
926 Reports the highlight regions associated with a given file. 702 a "--package_root" parameter to the Dart VM when
927 </p> 703 executing any Dart file inside the source directory.
928 <p> 704 </p>
929 This notification is not subscribed to by default. Clients 705 <p>
930 can subscribe by including the value <tt>"HIGHLIGHTS"</tt> 706 If a package root is a file, then the analyzer
931 in the list of services passed in an 707 will behave as though that file is a ".packages" file in the
932 analysis.setSubscriptions request. 708 source directory. The effect is the same as specifying the file
933 </p> 709 as a "--packages" parameter to the Dart VM when
934 <params> 710 executing any Dart file inside the source directory.
935 <field name="file"> 711 </p>
712 <p>
713 Files in any directories that are not overridden by this
714 mapping have their package: URI's resolved using the
715 normal pubspec.yaml mechanism. If this field is absent,
716 or the empty map is specified, that indicates that the
717 normal pubspec.yaml mechanism should always be used.
718 </p>
719 </field>
720 </params>
721 </request>
722 <request method="setGeneralSubscriptions">
723 <p>
724 Subscribe for general services (that is, services that are not
725 specific to individual files). All previous subscriptions are replaced
726 by the given set of services.
727 </p>
728 <p>
729 It is an error if any of the elements in the list are not valid
730 services. If there is an error, then the current subscriptions will
731 remain unchanged.
732 </p>
733 <params>
734 <field name="subscriptions">
735 <list>
736 <ref>GeneralAnalysisService</ref>
737 </list>
738 <p>A list of the services being subscribed to.</p>
739 </field>
740 </params>
741 </request>
742 <request method="setPriorityFiles">
743 <p>
744 Set the priority files to the files in the given list. A
745 priority file is a file that is given priority when
746 scheduling which analysis work to do first. The list
747 typically contains those files that are visible to the user
748 and those for which analysis results will have the biggest
749 impact on the user experience. The order of the files within
750 the list is significant: the first file will be given higher
751 priority than the second, the second higher priority than
752 the third, and so on.
753 </p>
754 <p>
755 Note that this request determines the set of requested
756 priority files. The actual set of priority files is the
757 intersection of the requested set of priority files with the
758 set of files currently subject to analysis. (See
759 analysis.setSubscriptions for a description of files that
760 are subject to analysis.)
761 </p>
762 <p>
763 If a requested priority file is a directory it is ignored,
764 but remains in the set of requested priority files so that
765 if it later becomes a file it can be included in the set of
766 actual priority files.
767 </p>
768 <params>
769 <field name="files">
770 <list>
771 <ref>FilePath</ref>
772 </list>
773 <p>
774 The files that are to be a priority for analysis.
775 </p>
776 </field>
777 </params>
778 </request>
779 <request method="setSubscriptions">
780 <p>
781 Subscribe for services that are specific to individual files.
782 All previous subscriptions are replaced by the current set of
783 subscriptions. If a given service is not included as a key in the map
784 then no files will be subscribed to the service, exactly as if the
785 service had been included in the map with an explicit empty list of
786 files.
787 </p>
788 <p>
789 Note that this request determines the set of requested
790 subscriptions. The actual set of subscriptions at any given
791 time is the intersection of this set with the set of files
792 currently subject to analysis. The files currently subject
793 to analysis are the set of files contained within an actual
794 analysis root but not excluded, plus all of the files
795 transitively reachable from those files via import, export
796 and part directives. (See analysis.setAnalysisRoots for an
797 explanation of how the actual analysis roots are
798 determined.) When the actual analysis roots change, the
799 actual set of subscriptions is automatically updated, but
800 the set of requested subscriptions is unchanged.
801 </p>
802 <p>
803 If a requested subscription is a directory it is ignored,
804 but remains in the set of requested subscriptions so that if
805 it later becomes a file it can be included in the set of
806 actual subscriptions.
807 </p>
808 <p>
809 It is an error if any of the keys in the map are not valid
810 services. If there is an error, then the existing
811 subscriptions will remain unchanged.
812 </p>
813 <params>
814 <field name="subscriptions">
815 <map>
816 <key>
817 <ref>AnalysisService</ref>
818 </key>
819 <value>
820 <list>
821 <ref>FilePath</ref>
822 </list>
823 </value>
824 </map>
825 <p>
826 A table mapping services to a list of the files being
827 subscribed to the service.
828 </p>
829 </field>
830 </params>
831 </request>
832 <request method="updateContent">
833 <p>
834 Update the content of one or more files. Files that were
835 previously updated but not included in this update remain
836 unchanged. This effectively represents an overlay of the
837 filesystem. The files whose content is overridden are
838 therefore seen by server as being files with the given
839 content, even if the files do not exist on the filesystem or
840 if the file path represents the path to a directory on the
841 filesystem.
842 </p>
843 <params>
844 <field name="files">
845 <map>
846 <key>
936 <ref>FilePath</ref> 847 <ref>FilePath</ref>
937 <p> 848 </key>
938 The file containing the highlight regions. 849 <value>
939 </p> 850 <union field="type">
940 </field> 851 <ref>AddContentOverlay</ref>
941 <field name="regions"> 852 <ref>ChangeContentOverlay</ref>
942 <list><ref>HighlightRegion</ref></list> 853 <ref>RemoveContentOverlay</ref>
943 <p> 854 </union>
944 The highlight regions contained in the file. Each 855 </value>
945 highlight region represents a particular syntactic or 856 </map>
946 semantic meaning associated with some range. Note that 857 <p>
947 the highlight regions that are returned can overlap 858 A table mapping the files whose content has changed to a
948 other highlight regions if there is more than one 859 description of the content change.
949 meaning associated with a particular region. 860 </p>
950 </p> 861 </field>
951 </field> 862 </params>
952 </params> 863 <result>
953 </notification> 864 </result>
954 <notification event="implemented"> 865 </request>
955 <p> 866 <request method="updateOptions" deprecated="true">
956 Reports the classes that are implemented or extended and 867 <p><b>Deprecated:</b> all of the options can be set by users in
957 class members that are implemented or overridden in a file. 868 an analysis options file.</p>
958 </p> 869 <p>
959 <p> 870 Update the options controlling analysis based on the given
960 This notification is not subscribed to by default. Clients 871 set of options. Any options that are not included in the
961 can subscribe by including the value <tt>"IMPLEMENTED"</tt> in 872 analysis options will not be changed. If there are options
962 the list of services passed in an analysis.setSubscriptions 873 in the analysis options that are not valid, they will be
963 request. 874 silently ignored.
964 </p> 875 </p>
965 <params> 876 <params>
966 <field name="file"> 877 <field name="options">
967 <ref>FilePath</ref> 878 <ref>AnalysisOptions</ref>
968 <p> 879 <p>
969 The file with which the implementations are associated. 880 The options that are to be used to control analysis.
970 </p> 881 </p>
971 </field> 882 </field>
972 <field name="classes"> 883 </params>
973 <list><ref>ImplementedClass</ref></list> 884 </request>
974 <p> 885 <notification event="analyzedFiles">
975 The classes defined in the file that are implemented or extended. 886 <p>
976 </p> 887 Reports the paths of the files that are being analyzed.
977 </field> 888 </p>
978 <field name="members"> 889 <p>
979 <list><ref>ImplementedMember</ref></list> 890 This notification is not subscribed to by default. Clients can
980 <p> 891 subscribe by including the value <tt>"ANALYZED_FILES"</tt> in the list
981 The member defined in the file that are implemented or overridden. 892 of services passed in an analysis.setGeneralSubscriptions request.
982 </p> 893 </p>
983 </field> 894 <params>
984 </params> 895 <field name="directories">
985 </notification> 896 <list>
986 <notification event="invalidate"> 897 <ref>FilePath</ref>
987 <p> 898 </list>
988 Reports that the navigation information associated with a region of a 899 <p>
989 single file has become invalid and should be re-requested. 900 A list of the paths of the files that are being analyzed.
990 </p> 901 </p>
991 <p> 902 </field>
992 This notification is not subscribed to by default. Clients can 903 </params>
993 subscribe by including the value <tt>"INVALIDATE"</tt> in the list of 904 </notification>
994 services passed in an analysis.setSubscriptions request. 905 <notification event="errors">
995 </p> 906 <p>
996 <params> 907 Reports the errors associated with a given file. The set of
997 <field name="file"> 908 errors included in the notification is always a complete
998 <ref>FilePath</ref> 909 list that supersedes any previously reported errors.
999 <p> 910 </p>
1000 The file whose information has been invalidated. 911 <params>
1001 </p> 912 <field name="file">
1002 </field> 913 <ref>FilePath</ref>
1003 <field name="offset"> 914 <p>
1004 <ref>int</ref> 915 The file containing the errors.
1005 <p> 916 </p>
1006 The offset of the invalidated region. 917 </field>
1007 </p> 918 <field name="errors">
1008 </field> 919 <list>
1009 <field name="length"> 920 <ref>AnalysisError</ref>
1010 <ref>int</ref> 921 </list>
1011 <p> 922 <p>
1012 The length of the invalidated region. 923 The errors contained in the file.
1013 </p> 924 </p>
1014 </field> 925 </field>
1015 <field name="delta"> 926 </params>
1016 <ref>int</ref> 927 </notification>
1017 <p> 928 <notification event="flushResults">
1018 The delta to be applied to the offsets in information that follows 929 <p>
1019 the invalidated region in order to update it so that it doesn't 930 Reports that any analysis results that were previously
1020 need to be re-requested. 931 associated with the given files should be considered to be
1021 </p> 932 invalid because those files are no longer being analyzed,
1022 </field> 933 either because the analysis root that contained it is no
1023 </params> 934 longer being analyzed or because the file no longer exists.
1024 </notification> 935 </p>
1025 <notification event="navigation"> 936 <p>
1026 <p> 937 If a file is included in this notification and at some later
1027 Reports the navigation targets associated with a given file. 938 time a notification with results for the file is received,
1028 </p> 939 clients should assume that the file is once again being
1029 <p> 940 analyzed and the information should be processed.
1030 This notification is not subscribed to by default. Clients 941 </p>
1031 can subscribe by including the value <tt>"NAVIGATION"</tt> 942 <p>
1032 in the list of services passed in an 943 It is not possible to subscribe to or unsubscribe from this
1033 analysis.setSubscriptions request. 944 notification.
1034 </p> 945 </p>
1035 <params> 946 <params>
1036 <field name="file"> 947 <field name="files">
1037 <ref>FilePath</ref> 948 <list>
1038 <p> 949 <ref>FilePath</ref>
1039 The file containing the navigation regions. 950 </list>
1040 </p> 951 <p>
1041 </field> 952 The files that are no longer being analyzed.
1042 <field name="regions"> 953 </p>
1043 <list><ref>NavigationRegion</ref></list> 954 </field>
1044 <p> 955 </params>
1045 The navigation regions contained in the file. 956 </notification>
1046 The regions are sorted by their offsets. 957 <notification event="folding">
1047 Each navigation region represents a list of targets 958 <p>
1048 associated with some range. The lists will usually 959 Reports the folding regions associated with a given
1049 contain a single target, but can contain more in the 960 file. Folding regions can be nested, but will not be
1050 case of a part that is included in multiple libraries 961 overlapping. Nesting occurs when a foldable element, such as
1051 or in Dart code that is compiled against multiple 962 a method, is nested inside another foldable element such as
1052 versions of a package. Note that the navigation 963 a class.
1053 regions that are returned do not overlap other 964 </p>
1054 navigation regions. 965 <p>
1055 </p> 966 This notification is not subscribed to by default. Clients
1056 </field> 967 can subscribe by including the value <tt>"FOLDING"</tt> in
1057 <field name="targets"> 968 the list of services passed in an analysis.setSubscriptions
1058 <list><ref>NavigationTarget</ref></list> 969 request.
1059 <p> 970 </p>
1060 The navigation targets referenced in the file. 971 <params>
1061 They are referenced by <tt>NavigationRegion</tt>s by their 972 <field name="file">
1062 index in this array. 973 <ref>FilePath</ref>
1063 </p> 974 <p>
1064 </field> 975 The file containing the folding regions.
1065 <field name="files"> 976 </p>
1066 <list><ref>FilePath</ref></list> 977 </field>
1067 <p> 978 <field name="regions">
1068 The files containing navigation targets referenced in the file. 979 <list>
1069 They are referenced by <tt>NavigationTarget</tt>s by their 980 <ref>FoldingRegion</ref>
1070 index in this array. 981 </list>
1071 </p> 982 <p>
1072 </field> 983 The folding regions contained in the file.
1073 </params> 984 </p>
1074 </notification> 985 </field>
1075 <notification event="occurrences"> 986 </params>
1076 <p> 987 </notification>
1077 Reports the occurrences of references to elements within a 988 <notification event="highlights">
1078 single file. 989 <p>
1079 </p> 990 Reports the highlight regions associated with a given file.
1080 <p> 991 </p>
1081 This notification is not subscribed to by default. Clients 992 <p>
1082 can subscribe by including the value <tt>"OCCURRENCES"</tt> 993 This notification is not subscribed to by default. Clients
1083 in the list of services passed in an 994 can subscribe by including the value <tt>"HIGHLIGHTS"</tt>
1084 analysis.setSubscriptions request. 995 in the list of services passed in an
1085 </p> 996 analysis.setSubscriptions request.
1086 <params> 997 </p>
1087 <field name="file"> 998 <params>
1088 <ref>FilePath</ref> 999 <field name="file">
1089 <p> 1000 <ref>FilePath</ref>
1090 The file in which the references occur. 1001 <p>
1091 </p> 1002 The file containing the highlight regions.
1092 </field> 1003 </p>
1093 <field name="occurrences"> 1004 </field>
1094 <list><ref>Occurrences</ref></list> 1005 <field name="regions">
1095 <p> 1006 <list>
1096 The occurrences of references to elements within the 1007 <ref>HighlightRegion</ref>
1097 file. 1008 </list>
1098 </p> 1009 <p>
1099 </field> 1010 The highlight regions contained in the file. Each
1100 </params> 1011 highlight region represents a particular syntactic or
1101 </notification> 1012 semantic meaning associated with some range. Note that
1102 <notification event="outline"> 1013 the highlight regions that are returned can overlap
1103 <p> 1014 other highlight regions if there is more than one
1104 Reports the outline associated with a single file. 1015 meaning associated with a particular region.
1105 </p> 1016 </p>
1106 <p> 1017 </field>
1107 This notification is not subscribed to by default. Clients 1018 </params>
1108 can subscribe by including the value <tt>"OUTLINE"</tt> in 1019 </notification>
1109 the list of services passed in an analysis.setSubscriptions 1020 <notification event="implemented">
1110 request. 1021 <p>
1111 </p> 1022 Reports the classes that are implemented or extended and
1112 <params> 1023 class members that are implemented or overridden in a file.
1113 <field name="file"> 1024 </p>
1114 <ref>FilePath</ref> 1025 <p>
1115 <p> 1026 This notification is not subscribed to by default. Clients
1116 The file with which the outline is associated. 1027 can subscribe by including the value <tt>"IMPLEMENTED"</tt> in
1117 </p> 1028 the list of services passed in an analysis.setSubscriptions
1118 </field> 1029 request.
1119 <field name="kind"> 1030 </p>
1120 <ref>FileKind</ref> 1031 <params>
1121 <p> 1032 <field name="file">
1122 The kind of the file. 1033 <ref>FilePath</ref>
1123 </p> 1034 <p>
1124 </field> 1035 The file with which the implementations are associated.
1125 <field name="libraryName" optional="true"> 1036 </p>
1126 <ref>String</ref> 1037 </field>
1127 <p> 1038 <field name="classes">
1128 The name of the library defined by the file using a "library" 1039 <list>
1129 directive, or referenced by a "part of" directive. If both 1040 <ref>ImplementedClass</ref>
1130 "library" and "part of" directives are present, then the 1041 </list>
1131 "library" directive takes precedence. 1042 <p>
1132 This field will be omitted if the file has neither "library" 1043 The classes defined in the file that are implemented or extended.
1133 nor "part of" directives. 1044 </p>
1134 </p> 1045 </field>
1135 </field> 1046 <field name="members">
1136 <field name="outline"> 1047 <list>
1137 <ref>Outline</ref> 1048 <ref>ImplementedMember</ref>
1138 <p> 1049 </list>
1139 The outline associated with the file. 1050 <p>
1140 </p> 1051 The member defined in the file that are implemented or overridden.
1141 </field> 1052 </p>
1142 </params> 1053 </field>
1143 </notification> 1054 </params>
1144 <notification event="overrides"> 1055 </notification>
1145 <p> 1056 <notification event="invalidate">
1146 Reports the overriding members in a file. 1057 <p>
1147 </p> 1058 Reports that the navigation information associated with a region of a
1148 <p> 1059 single file has become invalid and should be re-requested.
1149 This notification is not subscribed to by default. Clients 1060 </p>
1150 can subscribe by including the value <tt>"OVERRIDES"</tt> in 1061 <p>
1151 the list of services passed in an analysis.setSubscriptions 1062 This notification is not subscribed to by default. Clients can
1152 request. 1063 subscribe by including the value <tt>"INVALIDATE"</tt> in the list of
1153 </p> 1064 services passed in an analysis.setSubscriptions request.
1154 <params> 1065 </p>
1155 <field name="file"> 1066 <params>
1156 <ref>FilePath</ref> 1067 <field name="file">
1157 <p> 1068 <ref>FilePath</ref>
1158 The file with which the overrides are associated. 1069 <p>
1159 </p> 1070 The file whose information has been invalidated.
1160 </field> 1071 </p>
1161 <field name="overrides"> 1072 </field>
1162 <list><ref>Override</ref></list> 1073 <field name="offset">
1163 <p> 1074 <ref>int</ref>
1164 The overrides associated with the file. 1075 <p>
1165 </p> 1076 The offset of the invalidated region.
1166 </field> 1077 </p>
1167 </params> 1078 </field>
1168 </notification> 1079 <field name="length">
1169 </domain> 1080 <ref>int</ref>
1170 <domain name="completion"> 1081 <p>
1171 <p> 1082 The length of the invalidated region.
1172 The code completion domain contains commands related to 1083 </p>
1173 getting code completion suggestions. 1084 </field>
1174 </p> 1085 <field name="delta">
1175 <request method="getSuggestions"> 1086 <ref>int</ref>
1176 <p> 1087 <p>
1177 Request that completion suggestions for the given offset in 1088 The delta to be applied to the offsets in information that follows
1178 the given file be returned. 1089 the invalidated region in order to update it so that it doesn't
1179 </p> 1090 need to be re-requested.
1180 <params> 1091 </p>
1181 <field name="file"> 1092 </field>
1182 <ref>FilePath</ref> 1093 </params>
1183 <p> 1094 </notification>
1184 The file containing the point at which suggestions are 1095 <notification event="navigation">
1185 to be made. 1096 <p>
1186 </p> 1097 Reports the navigation targets associated with a given file.
1187 </field> 1098 </p>
1188 <field name="offset"> 1099 <p>
1189 <ref>int</ref> 1100 This notification is not subscribed to by default. Clients
1190 <p> 1101 can subscribe by including the value <tt>"NAVIGATION"</tt>
1191 The offset within the file at which suggestions are to 1102 in the list of services passed in an
1192 be made. 1103 analysis.setSubscriptions request.
1193 </p> 1104 </p>
1194 </field> 1105 <params>
1195 </params> 1106 <field name="file">
1196 <result> 1107 <ref>FilePath</ref>
1197 <field name="id"> 1108 <p>
1198 <ref>CompletionId</ref> 1109 The file containing the navigation regions.
1199 <p> 1110 </p>
1200 The identifier used to associate results with this 1111 </field>
1201 completion request. 1112 <field name="regions">
1202 </p> 1113 <list>
1203 </field> 1114 <ref>NavigationRegion</ref>
1204 </result> 1115 </list>
1205 </request> 1116 <p>
1206 <notification event="results"> 1117 The navigation regions contained in the file.
1207 <p> 1118 The regions are sorted by their offsets.
1208 Reports the completion suggestions that should be presented 1119 Each navigation region represents a list of targets
1209 to the user. The set of suggestions included in the 1120 associated with some range. The lists will usually
1210 notification is always a complete list that supersedes any 1121 contain a single target, but can contain more in the
1211 previously reported suggestions. 1122 case of a part that is included in multiple libraries
1212 </p> 1123 or in Dart code that is compiled against multiple
1213 <params> 1124 versions of a package. Note that the navigation
1214 <field name="id"> 1125 regions that are returned do not overlap other
1215 <ref>CompletionId</ref> 1126 navigation regions.
1216 <p> 1127 </p>
1217 The id associated with the completion. 1128 </field>
1218 </p> 1129 <field name="targets">
1219 </field> 1130 <list>
1220 <field name="replacementOffset"> 1131 <ref>NavigationTarget</ref>
1221 <ref>int</ref> 1132 </list>
1222 <p> 1133 <p>
1223 The offset of the start of the text to be 1134 The navigation targets referenced in the file.
1224 replaced. This will be different than the offset used 1135 They are referenced by <tt>NavigationRegion</tt>s by their
1225 to request the completion suggestions if there was a 1136 index in this array.
1226 portion of an identifier before the original 1137 </p>
1227 offset. In particular, the replacementOffset will be 1138 </field>
1228 the offset of the beginning of said identifier. 1139 <field name="files">
1229 </p> 1140 <list>
1230 </field> 1141 <ref>FilePath</ref>
1231 <field name="replacementLength"> 1142 </list>
1232 <ref>int</ref> 1143 <p>
1233 <p> 1144 The files containing navigation targets referenced in the file.
1234 The length of the text to be replaced if the remainder 1145 They are referenced by <tt>NavigationTarget</tt>s by their
1235 of the identifier containing the cursor is to be 1146 index in this array.
1236 replaced when the suggestion is applied (that is, the 1147 </p>
1237 number of characters in the existing identifier). 1148 </field>
1238 </p> 1149 </params>
1239 </field> 1150 </notification>
1240 <field name="results"> 1151 <notification event="occurrences">
1241 <list><ref>CompletionSuggestion</ref></list> 1152 <p>
1242 <p> 1153 Reports the occurrences of references to elements within a
1243 The completion suggestions being reported. The 1154 single file.
1244 notification contains all possible completions at the 1155 </p>
1245 requested cursor position, even those that do not match 1156 <p>
1246 the characters the user has already typed. This allows 1157 This notification is not subscribed to by default. Clients
1247 the client to respond to further keystrokes from the 1158 can subscribe by including the value <tt>"OCCURRENCES"</tt>
1248 user without having to make additional requests. 1159 in the list of services passed in an
1249 </p> 1160 analysis.setSubscriptions request.
1250 </field> 1161 </p>
1251 <field name="isLast"> 1162 <params>
1252 <ref>bool</ref> 1163 <field name="file">
1253 <p> 1164 <ref>FilePath</ref>
1254 True if this is that last set of results that will be 1165 <p>
1255 returned for the indicated completion. 1166 The file in which the references occur.
1256 </p> 1167 </p>
1257 </field> 1168 </field>
1258 </params> 1169 <field name="occurrences">
1259 </notification> 1170 <list>
1260 </domain> 1171 <ref>Occurrences</ref>
1261 <domain name="search"> 1172 </list>
1262 <p> 1173 <p>
1263 The search domain contains commands related to searches that 1174 The occurrences of references to elements within the
1264 can be performed against the code base. 1175 file.
1265 </p> 1176 </p>
1266 <request method="findElementReferences"> 1177 </field>
1267 <p> 1178 </params>
1268 Perform a search for references to the element defined or 1179 </notification>
1269 referenced at the given offset in the given file. 1180 <notification event="outline">
1270 </p> 1181 <p>
1271 <p> 1182 Reports the outline associated with a single file.
1272 An identifier is returned immediately, and individual 1183 </p>
1273 results will be returned via the search.results notification 1184 <p>
1274 as they become available. 1185 This notification is not subscribed to by default. Clients
1275 </p> 1186 can subscribe by including the value <tt>"OUTLINE"</tt> in
1276 <params> 1187 the list of services passed in an analysis.setSubscriptions
1277 <field name="file"> 1188 request.
1278 <ref>FilePath</ref> 1189 </p>
1279 <p> 1190 <params>
1280 The file containing the declaration of or reference to 1191 <field name="file">
1281 the element used to define the search. 1192 <ref>FilePath</ref>
1282 </p> 1193 <p>
1283 </field> 1194 The file with which the outline is associated.
1284 <field name="offset"> 1195 </p>
1285 <ref>int</ref> 1196 </field>
1286 <p> 1197 <field name="kind">
1287 The offset within the file of the declaration of or 1198 <ref>FileKind</ref>
1288 reference to the element. 1199 <p>
1289 </p> 1200 The kind of the file.
1290 </field> 1201 </p>
1291 <field name="includePotential"> 1202 </field>
1292 <ref>bool</ref> 1203 <field name="libraryName" optional="true">
1293 <p> 1204 <ref>String</ref>
1294 True if potential matches are to be included in the 1205 <p>
1295 results. 1206 The name of the library defined by the file using a "library"
1296 </p> 1207 directive, or referenced by a "part of" directive. If both
1297 </field> 1208 "library" and "part of" directives are present, then the
1298 </params> 1209 "library" directive takes precedence.
1299 <result> 1210 This field will be omitted if the file has neither "library"
1300 <field name="id" optional="true"> 1211 nor "part of" directives.
1301 <ref>SearchId</ref> 1212 </p>
1302 <p> 1213 </field>
1303 The identifier used to associate results with this 1214 <field name="outline">
1304 search request. 1215 <ref>Outline</ref>
1305 </p> 1216 <p>
1306 <p> 1217 The outline associated with the file.
1307 If no element was found at the given location, this 1218 </p>
1308 field will be absent, and no results will be reported 1219 </field>
1309 via the search.results notification. 1220 </params>
1310 </p> 1221 </notification>
1311 </field> 1222 <notification event="overrides">
1312 <field name="element" optional="true"> 1223 <p>
1313 <ref>Element</ref> 1224 Reports the overriding members in a file.
1314 <p> 1225 </p>
1315 The element referenced or defined at the given offset 1226 <p>
1316 and whose references will be returned in the search 1227 This notification is not subscribed to by default. Clients
1317 results. 1228 can subscribe by including the value <tt>"OVERRIDES"</tt> in
1318 </p> 1229 the list of services passed in an analysis.setSubscriptions
1319 <p> 1230 request.
1320 If no element was found at the given location, this 1231 </p>
1321 field will be absent. 1232 <params>
1322 </p> 1233 <field name="file">
1323 </field> 1234 <ref>FilePath</ref>
1324 </result> 1235 <p>
1325 </request> 1236 The file with which the overrides are associated.
1326 <request method="findMemberDeclarations"> 1237 </p>
1327 <p> 1238 </field>
1328 Perform a search for declarations of members whose name is 1239 <field name="overrides">
1329 equal to the given name. 1240 <list>
1330 </p> 1241 <ref>Override</ref>
1331 <p> 1242 </list>
1332 An identifier is returned immediately, and individual 1243 <p>
1333 results will be returned via the search.results notification 1244 The overrides associated with the file.
1334 as they become available. 1245 </p>
1335 </p> 1246 </field>
1336 <params> 1247 </params>
1337 <field name="name"> 1248 </notification>
1338 <ref>String</ref> 1249 </domain>
1339 <p> 1250 <domain name="completion">
1340 The name of the declarations to be found. 1251 <p>
1341 </p> 1252 The code completion domain contains commands related to
1342 </field> 1253 getting code completion suggestions.
1343 </params> 1254 </p>
1344 <result> 1255 <request method="getSuggestions">
1345 <field name="id"> 1256 <p>
1346 <ref>SearchId</ref> 1257 Request that completion suggestions for the given offset in
1347 <p> 1258 the given file be returned.
1348 The identifier used to associate results with this 1259 </p>
1349 search request. 1260 <params>
1350 </p> 1261 <field name="file">
1351 </field> 1262 <ref>FilePath</ref>
1352 </result> 1263 <p>
1353 </request> 1264 The file containing the point at which suggestions are
1354 <request method="findMemberReferences"> 1265 to be made.
1355 <p> 1266 </p>
1356 Perform a search for references to members whose name is 1267 </field>
1357 equal to the given name. This search does not check to see 1268 <field name="offset">
1358 that there is a member defined with the given name, so it is 1269 <ref>int</ref>
1359 able to find references to undefined members as well. 1270 <p>
1360 </p> 1271 The offset within the file at which suggestions are to
1361 <p> 1272 be made.
1362 An identifier is returned immediately, and individual 1273 </p>
1363 results will be returned via the search.results notification 1274 </field>
1364 as they become available. 1275 </params>
1365 </p> 1276 <result>
1366 <params> 1277 <field name="id">
1367 <field name="name"> 1278 <ref>CompletionId</ref>
1368 <ref>String</ref> 1279 <p>
1369 <p> 1280 The identifier used to associate results with this
1370 The name of the references to be found. 1281 completion request.
1371 </p> 1282 </p>
1372 </field> 1283 </field>
1373 </params> 1284 </result>
1374 <result> 1285 </request>
1375 <field name="id"> 1286 <notification event="results">
1376 <ref>SearchId</ref> 1287 <p>
1377 <p> 1288 Reports the completion suggestions that should be presented
1378 The identifier used to associate results with this 1289 to the user. The set of suggestions included in the
1379 search request. 1290 notification is always a complete list that supersedes any
1380 </p> 1291 previously reported suggestions.
1381 </field> 1292 </p>
1382 </result> 1293 <params>
1383 </request> 1294 <field name="id">
1384 <request method="findTopLevelDeclarations"> 1295 <ref>CompletionId</ref>
1385 <p> 1296 <p>
1386 Perform a search for declarations of top-level elements 1297 The id associated with the completion.
1387 (classes, typedefs, getters, setters, functions and fields) 1298 </p>
1388 whose name matches the given pattern. 1299 </field>
1389 </p> 1300 <field name="replacementOffset">
1390 <p> 1301 <ref>int</ref>
1391 An identifier is returned immediately, and individual 1302 <p>
1392 results will be returned via the search.results notification 1303 The offset of the start of the text to be
1393 as they become available. 1304 replaced. This will be different than the offset used
1394 </p> 1305 to request the completion suggestions if there was a
1395 <params> 1306 portion of an identifier before the original
1396 <field name="pattern"> 1307 offset. In particular, the replacementOffset will be
1397 <ref>String</ref> 1308 the offset of the beginning of said identifier.
1398 <p> 1309 </p>
1399 The regular expression used to match the names of the 1310 </field>
1400 declarations to be found. 1311 <field name="replacementLength">
1401 </p> 1312 <ref>int</ref>
1402 </field> 1313 <p>
1403 </params> 1314 The length of the text to be replaced if the remainder
1404 <result> 1315 of the identifier containing the cursor is to be
1405 <field name="id"> 1316 replaced when the suggestion is applied (that is, the
1406 <ref>SearchId</ref> 1317 number of characters in the existing identifier).
1407 <p> 1318 </p>
1408 The identifier used to associate results with this 1319 </field>
1409 search request. 1320 <field name="results">
1410 </p> 1321 <list>
1411 </field> 1322 <ref>CompletionSuggestion</ref>
1412 </result> 1323 </list>
1413 </request> 1324 <p>
1414 <request method="getTypeHierarchy"> 1325 The completion suggestions being reported. The
1415 <p> 1326 notification contains all possible completions at the
1416 Return the type hierarchy of the class declared or 1327 requested cursor position, even those that do not match
1417 referenced at the given location. 1328 the characters the user has already typed. This allows
1418 </p> 1329 the client to respond to further keystrokes from the
1419 <params> 1330 user without having to make additional requests.
1420 <field name="file"> 1331 </p>
1421 <ref>FilePath</ref> 1332 </field>
1422 <p> 1333 <field name="isLast">
1423 The file containing the declaration or reference to the 1334 <ref>bool</ref>
1424 type for which a hierarchy is being requested. 1335 <p>
1425 </p> 1336 True if this is that last set of results that will be
1426 </field> 1337 returned for the indicated completion.
1427 <field name="offset"> 1338 </p>
1428 <ref>int</ref> 1339 </field>
1429 <p> 1340 </params>
1430 The offset of the name of the type within the file. 1341 </notification>
1431 </p> 1342 </domain>
1432 </field> 1343 <domain name="search">
1433 <field name="superOnly" optional="true"> 1344 <p>
1434 <ref>bool</ref> 1345 The search domain contains commands related to searches that
1435 <p> 1346 can be performed against the code base.
1436 True if the client is only requesting superclasses and 1347 </p>
1437 interfaces hierarchy. 1348 <request method="findElementReferences">
1438 </p> 1349 <p>
1439 </field> 1350 Perform a search for references to the element defined or
1440 </params> 1351 referenced at the given offset in the given file.
1441 <result> 1352 </p>
1442 <field name="hierarchyItems" optional="true"> 1353 <p>
1443 <list><ref>TypeHierarchyItem</ref></list> 1354 An identifier is returned immediately, and individual
1444 <p> 1355 results will be returned via the search.results notification
1445 A list of the types in the requested hierarchy. The 1356 as they become available.
1446 first element of the list is the item representing the 1357 </p>
1447 type for which the hierarchy was requested. The index of 1358 <params>
1448 other elements of the list is unspecified, but 1359 <field name="file">
1449 correspond to the integers used to reference supertype 1360 <ref>FilePath</ref>
1450 and subtype items within the items. 1361 <p>
1451 </p> 1362 The file containing the declaration of or reference to
1452 <p> 1363 the element used to define the search.
1453 This field will be absent if the code at the given file 1364 </p>
1454 and offset does not represent a type, or if the file has 1365 </field>
1455 not been sufficiently analyzed to allow a type hierarchy 1366 <field name="offset">
1456 to be produced. 1367 <ref>int</ref>
1457 </p> 1368 <p>
1458 </field> 1369 The offset within the file of the declaration of or
1459 </result> 1370 reference to the element.
1460 </request> 1371 </p>
1461 <notification event="results"> 1372 </field>
1462 <p> 1373 <field name="includePotential">
1463 Reports some or all of the results of performing a requested 1374 <ref>bool</ref>
1464 search. Unlike other notifications, this notification 1375 <p>
1465 contains search results that should be added to any 1376 True if potential matches are to be included in the
1466 previously received search results associated with the same 1377 results.
1467 search id. 1378 </p>
1468 </p> 1379 </field>
1469 <params> 1380 </params>
1470 <field name="id"> 1381 <result>
1471 <ref>SearchId</ref> 1382 <field name="id" optional="true">
1472 <p> 1383 <ref>SearchId</ref>
1473 The id associated with the search. 1384 <p>
1474 </p> 1385 The identifier used to associate results with this
1475 </field> 1386 search request.
1476 <field name="results"> 1387 </p>
1477 <list><ref>SearchResult</ref></list> 1388 <p>
1478 <p> 1389 If no element was found at the given location, this
1479 The search results being reported. 1390 field will be absent, and no results will be reported
1480 </p> 1391 via the search.results notification.
1481 </field> 1392 </p>
1482 <field name="isLast"> 1393 </field>
1483 <ref>bool</ref> 1394 <field name="element" optional="true">
1484 <p> 1395 <ref>Element</ref>
1485 True if this is that last set of results that will be 1396 <p>
1486 returned for the indicated search. 1397 The element referenced or defined at the given offset
1487 </p> 1398 and whose references will be returned in the search
1488 </field> 1399 results.
1489 </params> 1400 </p>
1490 </notification> 1401 <p>
1491 </domain> 1402 If no element was found at the given location, this
1492 <domain name="edit"> 1403 field will be absent.
1493 <p> 1404 </p>
1494 The edit domain contains commands related to edits that can be 1405 </field>
1495 applied to the code. 1406 </result>
1496 </p> 1407 </request>
1497 <request method="format"> 1408 <request method="findMemberDeclarations">
1498 <p> 1409 <p>
1499 Format the contents of a single file. The currently selected region of 1410 Perform a search for declarations of members whose name is
1500 text is passed in so that the selection can be preserved across the 1411 equal to the given name.
1501 formatting operation. The updated selection will be as close to 1412 </p>
1502 matching the original as possible, but whitespace at the beginning or 1413 <p>
1503 end of the selected region will be ignored. If preserving selection 1414 An identifier is returned immediately, and individual
1504 information is not required, zero (0) can be specified for both the 1415 results will be returned via the search.results notification
1505 selection offset and selection length. 1416 as they become available.
1506 </p> 1417 </p>
1507 <p> 1418 <params>
1508 If a request is made for a file which does not exist, or which is not 1419 <field name="name">
1509 currently subject to analysis (e.g. because it is not associated with 1420 <ref>String</ref>
1510 any analysis root specified to analysis.setAnalysisRoots), an error of 1421 <p>
1511 type <tt>FORMAT_INVALID_FILE</tt> will be generated. If the source 1422 The name of the declarations to be found.
1512 contains syntax errors, an error of type <tt>FORMAT_WITH_ERRORS</tt> 1423 </p>
1513 will be generated. 1424 </field>
1514 </p> 1425 </params>
1515 <params> 1426 <result>
1516 <field name="file"> 1427 <field name="id">
1517 <ref>FilePath</ref> 1428 <ref>SearchId</ref>
1518 <p> 1429 <p>
1519 The file containing the code to be formatted. 1430 The identifier used to associate results with this
1520 </p> 1431 search request.
1521 </field> 1432 </p>
1522 <field name="selectionOffset"> 1433 </field>
1523 <ref>int</ref> 1434 </result>
1524 <p> 1435 </request>
1525 The offset of the current selection in the file. 1436 <request method="findMemberReferences">
1526 </p> 1437 <p>
1527 </field> 1438 Perform a search for references to members whose name is
1528 <field name="selectionLength"> 1439 equal to the given name. This search does not check to see
1529 <ref>int</ref> 1440 that there is a member defined with the given name, so it is
1530 <p> 1441 able to find references to undefined members as well.
1531 The length of the current selection in the file. 1442 </p>
1532 </p> 1443 <p>
1533 </field> 1444 An identifier is returned immediately, and individual
1534 <!-- 1445 results will be returned via the search.results notification
1446 as they become available.
1447 </p>
1448 <params>
1449 <field name="name">
1450 <ref>String</ref>
1451 <p>
1452 The name of the references to be found.
1453 </p>
1454 </field>
1455 </params>
1456 <result>
1457 <field name="id">
1458 <ref>SearchId</ref>
1459 <p>
1460 The identifier used to associate results with this
1461 search request.
1462 </p>
1463 </field>
1464 </result>
1465 </request>
1466 <request method="findTopLevelDeclarations">
1467 <p>
1468 Perform a search for declarations of top-level elements
1469 (classes, typedefs, getters, setters, functions and fields)
1470 whose name matches the given pattern.
1471 </p>
1472 <p>
1473 An identifier is returned immediately, and individual
1474 results will be returned via the search.results notification
1475 as they become available.
1476 </p>
1477 <params>
1478 <field name="pattern">
1479 <ref>String</ref>
1480 <p>
1481 The regular expression used to match the names of the
1482 declarations to be found.
1483 </p>
1484 </field>
1485 </params>
1486 <result>
1487 <field name="id">
1488 <ref>SearchId</ref>
1489 <p>
1490 The identifier used to associate results with this
1491 search request.
1492 </p>
1493 </field>
1494 </result>
1495 </request>
1496 <request method="getTypeHierarchy">
1497 <p>
1498 Return the type hierarchy of the class declared or
1499 referenced at the given location.
1500 </p>
1501 <params>
1502 <field name="file">
1503 <ref>FilePath</ref>
1504 <p>
1505 The file containing the declaration or reference to the
1506 type for which a hierarchy is being requested.
1507 </p>
1508 </field>
1509 <field name="offset">
1510 <ref>int</ref>
1511 <p>
1512 The offset of the name of the type within the file.
1513 </p>
1514 </field>
1515 <field name="superOnly" optional="true">
1516 <ref>bool</ref>
1517 <p>
1518 True if the client is only requesting superclasses and
1519 interfaces hierarchy.
1520 </p>
1521 </field>
1522 </params>
1523 <result>
1524 <field name="hierarchyItems" optional="true">
1525 <list>
1526 <ref>TypeHierarchyItem</ref>
1527 </list>
1528 <p>
1529 A list of the types in the requested hierarchy. The
1530 first element of the list is the item representing the
1531 type for which the hierarchy was requested. The index of
1532 other elements of the list is unspecified, but
1533 correspond to the integers used to reference supertype
1534 and subtype items within the items.
1535 </p>
1536 <p>
1537 This field will be absent if the code at the given file
1538 and offset does not represent a type, or if the file has
1539 not been sufficiently analyzed to allow a type hierarchy
1540 to be produced.
1541 </p>
1542 </field>
1543 </result>
1544 </request>
1545 <notification event="results">
1546 <p>
1547 Reports some or all of the results of performing a requested
1548 search. Unlike other notifications, this notification
1549 contains search results that should be added to any
1550 previously received search results associated with the same
1551 search id.
1552 </p>
1553 <params>
1554 <field name="id">
1555 <ref>SearchId</ref>
1556 <p>
1557 The id associated with the search.
1558 </p>
1559 </field>
1560 <field name="results">
1561 <list>
1562 <ref>SearchResult</ref>
1563 </list>
1564 <p>
1565 The search results being reported.
1566 </p>
1567 </field>
1568 <field name="isLast">
1569 <ref>bool</ref>
1570 <p>
1571 True if this is that last set of results that will be
1572 returned for the indicated search.
1573 </p>
1574 </field>
1575 </params>
1576 </notification>
1577 </domain>
1578 <domain name="edit">
1579 <p>
1580 The edit domain contains commands related to edits that can be
1581 applied to the code.
1582 </p>
1583 <request method="format">
1584 <p>
1585 Format the contents of a single file. The currently selected region of
1586 text is passed in so that the selection can be preserved across the
1587 formatting operation. The updated selection will be as close to
1588 matching the original as possible, but whitespace at the beginning or
1589 end of the selected region will be ignored. If preserving selection
1590 information is not required, zero (0) can be specified for both the
1591 selection offset and selection length.
1592 </p>
1593 <p>
1594 If a request is made for a file which does not exist, or which is not
1595 currently subject to analysis (e.g. because it is not associated with
1596 any analysis root specified to analysis.setAnalysisRoots), an error of
1597 type <tt>FORMAT_INVALID_FILE</tt> will be generated. If the source
1598 contains syntax errors, an error of type <tt>FORMAT_WITH_ERRORS</tt>
1599 will be generated.
1600 </p>
1601 <params>
1602 <field name="file">
1603 <ref>FilePath</ref>
1604 <p>
1605 The file containing the code to be formatted.
1606 </p>
1607 </field>
1608 <field name="selectionOffset">
1609 <ref>int</ref>
1610 <p>
1611 The offset of the current selection in the file.
1612 </p>
1613 </field>
1614 <field name="selectionLength">
1615 <ref>int</ref>
1616 <p>
1617 The length of the current selection in the file.
1618 </p>
1619 </field>
1620 <!--
1535 <field name="selectionOnly" optional="true"> 1621 <field name="selectionOnly" optional="true">
1536 <ref>bool</ref> 1622 <ref>bool</ref>
1537 <p> 1623 <p>
1538 True if the code to be formatted should be limited to the selected 1624 True if the code to be formatted should be limited to the selected
1539 text (or the smallest portion of text that encloses the selected 1625 text (or the smallest portion of text that encloses the selected
1540 text that can be formatted). 1626 text that can be formatted).
1541 </p> 1627 </p>
1542 </field> 1628 </field>
1543 --> 1629 -->
1544 <field name="lineLength" optional="true"> 1630 <field name="lineLength" optional="true">
1545 <ref>int</ref> 1631 <ref>int</ref>
1546 <p> 1632 <p>
1547 The line length to be used by the formatter. 1633 The line length to be used by the formatter.
1548 </p> 1634 </p>
1549 </field> 1635 </field>
1550 </params> 1636 </params>
1551 <result> 1637 <result>
1552 <field name="edits"> 1638 <field name="edits">
1553 <list><ref>SourceEdit</ref></list> 1639 <list>
1554 <p> 1640 <ref>SourceEdit</ref>
1555 The edit(s) to be applied in order to format the code. The list 1641 </list>
1556 will be empty if the code was already formatted (there are no 1642 <p>
1557 changes). 1643 The edit(s) to be applied in order to format the code. The list
1558 </p> 1644 will be empty if the code was already formatted (there are no
1559 </field> 1645 changes).
1560 <field name="selectionOffset"> 1646 </p>
1561 <ref>int</ref> 1647 </field>
1562 <p> 1648 <field name="selectionOffset">
1563 The offset of the selection after formatting the code. 1649 <ref>int</ref>
1564 </p> 1650 <p>
1565 </field> 1651 The offset of the selection after formatting the code.
1566 <field name="selectionLength"> 1652 </p>
1567 <ref>int</ref> 1653 </field>
1568 <p> 1654 <field name="selectionLength">
1569 The length of the selection after formatting the code. 1655 <ref>int</ref>
1570 </p> 1656 <p>
1571 </field> 1657 The length of the selection after formatting the code.
1572 </result> 1658 </p>
1573 </request> 1659 </field>
1574 <request method="getAssists"> 1660 </result>
1575 <p> 1661 </request>
1576 Return the set of assists that are available at the given 1662 <request method="getAssists">
1577 location. An assist is distinguished from a refactoring 1663 <p>
1578 primarily by the fact that it affects a single file and does 1664 Return the set of assists that are available at the given
1579 not require user input in order to be performed. 1665 location. An assist is distinguished from a refactoring
1580 </p> 1666 primarily by the fact that it affects a single file and does
1581 <params> 1667 not require user input in order to be performed.
1582 <field name="file"> 1668 </p>
1583 <ref>FilePath</ref> 1669 <params>
1584 <p> 1670 <field name="file">
1585 The file containing the code for which assists are being 1671 <ref>FilePath</ref>
1586 requested. 1672 <p>
1587 </p> 1673 The file containing the code for which assists are being
1588 </field> 1674 requested.
1589 <field name="offset"> 1675 </p>
1590 <ref>int</ref> 1676 </field>
1591 <p> 1677 <field name="offset">
1592 The offset of the code for which assists are being 1678 <ref>int</ref>
1593 requested. 1679 <p>
1594 </p> 1680 The offset of the code for which assists are being
1595 </field> 1681 requested.
1596 <field name="length"> 1682 </p>
1597 <ref>int</ref> 1683 </field>
1598 <p> 1684 <field name="length">
1599 The length of the code for which assists are being 1685 <ref>int</ref>
1600 requested. 1686 <p>
1601 </p> 1687 The length of the code for which assists are being
1602 </field> 1688 requested.
1603 </params> 1689 </p>
1604 <result> 1690 </field>
1605 <field name="assists"> 1691 </params>
1606 <list><ref>SourceChange</ref></list> 1692 <result>
1607 <p> 1693 <field name="assists">
1608 The assists that are available at the given location. 1694 <list>
1609 </p> 1695 <ref>SourceChange</ref>
1610 </field> 1696 </list>
1611 </result> 1697 <p>
1612 </request> 1698 The assists that are available at the given location.
1613 <request method="getAvailableRefactorings"> 1699 </p>
1614 <p> 1700 </field>
1615 Get a list of the kinds of refactorings that are valid for 1701 </result>
1616 the given selection in the given file. 1702 </request>
1617 </p> 1703 <request method="getAvailableRefactorings">
1618 <params> 1704 <p>
1619 <field name="file"> 1705 Get a list of the kinds of refactorings that are valid for
1620 <ref>FilePath</ref> 1706 the given selection in the given file.
1621 <p> 1707 </p>
1622 The file containing the code on which the refactoring 1708 <params>
1623 would be based. 1709 <field name="file">
1624 </p> 1710 <ref>FilePath</ref>
1625 </field> 1711 <p>
1626 <field name="offset"> 1712 The file containing the code on which the refactoring
1627 <ref>int</ref> 1713 would be based.
1628 <p> 1714 </p>
1629 The offset of the code on which the refactoring would be 1715 </field>
1630 based. 1716 <field name="offset">
1631 </p> 1717 <ref>int</ref>
1632 </field> 1718 <p>
1633 <field name="length"> 1719 The offset of the code on which the refactoring would be
1634 <ref>int</ref> 1720 based.
1635 <p> 1721 </p>
1636 The length of the code on which the refactoring would be 1722 </field>
1637 based. 1723 <field name="length">
1638 </p> 1724 <ref>int</ref>
1639 </field> 1725 <p>
1640 </params> 1726 The length of the code on which the refactoring would be
1641 <result> 1727 based.
1642 <field name="kinds"> 1728 </p>
1643 <list><ref>RefactoringKind</ref></list> 1729 </field>
1644 <p> 1730 </params>
1645 The kinds of refactorings that are valid for the given 1731 <result>
1646 selection. 1732 <field name="kinds">
1647 </p> 1733 <list>
1648 </field> 1734 <ref>RefactoringKind</ref>
1649 </result> 1735 </list>
1650 </request> 1736 <p>
1651 <request method="getFixes"> 1737 The kinds of refactorings that are valid for the given
1652 <p> 1738 selection.
1653 Return the set of fixes that are available for the errors at 1739 </p>
1654 a given offset in a given file. 1740 </field>
1655 </p> 1741 </result>
1656 <params> 1742 </request>
1657 <field name="file"> 1743 <request method="getFixes">
1658 <ref>FilePath</ref> 1744 <p>
1659 <p> 1745 Return the set of fixes that are available for the errors at
1660 The file containing the errors for which fixes are being 1746 a given offset in a given file.
1661 requested. 1747 </p>
1662 </p> 1748 <params>
1663 </field> 1749 <field name="file">
1664 <field name="offset"> 1750 <ref>FilePath</ref>
1665 <ref>int</ref> 1751 <p>
1666 <p> 1752 The file containing the errors for which fixes are being
1667 The offset used to select the errors for which fixes 1753 requested.
1668 will be returned. 1754 </p>
1669 </p> 1755 </field>
1670 </field> 1756 <field name="offset">
1671 </params> 1757 <ref>int</ref>
1672 <result> 1758 <p>
1673 <field name="fixes"> 1759 The offset used to select the errors for which fixes
1674 <list><ref>AnalysisErrorFixes</ref></list> 1760 will be returned.
1675 <p> 1761 </p>
1676 The fixes that are available for the errors at the given offset. 1762 </field>
1677 </p> 1763 </params>
1678 </field> 1764 <result>
1679 </result> 1765 <field name="fixes">
1680 </request> 1766 <list>
1681 <request method="getRefactoring"> 1767 <ref>AnalysisErrorFixes</ref>
1682 <p> 1768 </list>
1683 Get the changes required to perform a refactoring. 1769 <p>
1684 </p> 1770 The fixes that are available for the errors at the given offset.
1685 <p> 1771 </p>
1686 If another refactoring request is received during the processing 1772 </field>
1687 of this one, an error of type <tt>REFACTORING_REQUEST_CANCELLED</tt> 1773 </result>
1688 will be generated. 1774 </request>
1689 </p> 1775 <request method="getRefactoring">
1690 <params> 1776 <p>
1691 <field name="kind"> 1777 Get the changes required to perform a refactoring.
1692 <ref>RefactoringKind</ref> 1778 </p>
1693 <p> 1779 <p>
1694 The kind of refactoring to be performed. 1780 If another refactoring request is received during the processing
1695 </p> 1781 of this one, an error of type <tt>REFACTORING_REQUEST_CANCELLED</tt>
1696 </field> 1782 will be generated.
1697 <field name="file"> 1783 </p>
1698 <ref>FilePath</ref> 1784 <params>
1699 <p> 1785 <field name="kind">
1700 The file containing the code involved in the 1786 <ref>RefactoringKind</ref>
1701 refactoring. 1787 <p>
1702 </p> 1788 The kind of refactoring to be performed.
1703 </field> 1789 </p>
1704 <field name="offset"> 1790 </field>
1705 <ref>int</ref> 1791 <field name="file">
1706 <p> 1792 <ref>FilePath</ref>
1707 The offset of the region involved in the refactoring. 1793 <p>
1708 </p> 1794 The file containing the code involved in the
1709 </field> 1795 refactoring.
1710 <field name="length"> 1796 </p>
1711 <ref>int</ref> 1797 </field>
1712 <p> 1798 <field name="offset">
1713 The length of the region involved in the refactoring. 1799 <ref>int</ref>
1714 </p> 1800 <p>
1715 </field> 1801 The offset of the region involved in the refactoring.
1716 <field name="validateOnly"> 1802 </p>
1717 <ref>bool</ref> 1803 </field>
1718 <p> 1804 <field name="length">
1719 True if the client is only requesting that the values of 1805 <ref>int</ref>
1720 the options be validated and no change be generated. 1806 <p>
1721 </p> 1807 The length of the region involved in the refactoring.
1722 </field> 1808 </p>
1723 <field name="options" optional="true"> 1809 </field>
1724 <ref>RefactoringOptions</ref> 1810 <field name="validateOnly">
1725 <p> 1811 <ref>bool</ref>
1726 Data used to provide values provided by the user. The 1812 <p>
1727 structure of the data is dependent on the kind of 1813 True if the client is only requesting that the values of
1728 refactoring being performed. The data that is expected is 1814 the options be validated and no change be generated.
1729 documented in the section titled <a 1815 </p>
1730 href="#refactorings">Refactorings</a>, labeled as 1816 </field>
1731 "Options". This field can be omitted if the refactoring 1817 <field name="options" optional="true">
1732 does not require any options or if the values of those 1818 <ref>RefactoringOptions</ref>
1733 options are not known. 1819 <p>
1734 </p> 1820 Data used to provide values provided by the user. The
1735 </field> 1821 structure of the data is dependent on the kind of
1736 </params> 1822 refactoring being performed. The data that is expected is
1737 <result> 1823 documented in the section titled <a
1738 <field name="initialProblems"> 1824 href="#refactorings">Refactorings</a>, labeled as
1739 <list><ref>RefactoringProblem</ref></list> 1825 "Options". This field can be omitted if the refactoring
1740 <p> 1826 does not require any options or if the values of those
1741 The initial status of the refactoring, i.e. problems related to 1827 options are not known.
1742 the context in which the refactoring is requested. 1828 </p>
1743 The array will be empty if there are no known problems. 1829 </field>
1744 </p> 1830 </params>
1745 </field> 1831 <result>
1746 <field name="optionsProblems"> 1832 <field name="initialProblems">
1747 <list><ref>RefactoringProblem</ref></list> 1833 <list>
1748 <p> 1834 <ref>RefactoringProblem</ref>
1749 The options validation status, i.e. problems in the given options, 1835 </list>
1750 such as light-weight validation of a new name, flags 1836 <p>
1751 compatibility, etc. 1837 The initial status of the refactoring, i.e. problems related to
1752 The array will be empty if there are no known problems. 1838 the context in which the refactoring is requested.
1753 </p> 1839 The array will be empty if there are no known problems.
1754 </field> 1840 </p>
1755 <field name="finalProblems"> 1841 </field>
1756 <list><ref>RefactoringProblem</ref></list> 1842 <field name="optionsProblems">
1757 <p> 1843 <list>
1758 The final status of the refactoring, i.e. problems identified in 1844 <ref>RefactoringProblem</ref>
1759 the result of a full, potentially expensive validation and / or 1845 </list>
1760 change creation. 1846 <p>
1761 The array will be empty if there are no known problems. 1847 The options validation status, i.e. problems in the given options,
1762 </p> 1848 such as light-weight validation of a new name, flags
1763 </field> 1849 compatibility, etc.
1764 <field name="feedback" optional="true"> 1850 The array will be empty if there are no known problems.
1765 <ref>RefactoringFeedback</ref> 1851 </p>
1766 <p> 1852 </field>
1767 Data used to provide feedback to the user. The structure 1853 <field name="finalProblems">
1768 of the data is dependent on the kind of refactoring 1854 <list>
1769 being created. The data that is returned is documented 1855 <ref>RefactoringProblem</ref>
1770 in the section titled <a 1856 </list>
1771 href="#refactorings">Refactorings</a>, labeled as 1857 <p>
1772 "Feedback". 1858 The final status of the refactoring, i.e. problems identified in
1773 </p> 1859 the result of a full, potentially expensive validation and / or
1774 </field> 1860 change creation.
1775 <field name="change" optional="true"> 1861 The array will be empty if there are no known problems.
1776 <ref>SourceChange</ref> 1862 </p>
1777 <p> 1863 </field>
1778 The changes that are to be applied to affect the 1864 <field name="feedback" optional="true">
1779 refactoring. This field will be omitted if there are 1865 <ref>RefactoringFeedback</ref>
1780 problems that prevent a set of changes from being 1866 <p>
1781 computed, such as having no options specified for a 1867 Data used to provide feedback to the user. The structure
1782 refactoring that requires them, or if only validation 1868 of the data is dependent on the kind of refactoring
1783 was requested. 1869 being created. The data that is returned is documented
1784 </p> 1870 in the section titled <a
1785 </field> 1871 href="#refactorings">Refactorings</a>, labeled as
1786 <field name="potentialEdits" optional="true"> 1872 "Feedback".
1787 <list><ref>String</ref></list> 1873 </p>
1788 <p> 1874 </field>
1789 The ids of source edits that are not known to be valid. An edit is 1875 <field name="change" optional="true">
1790 not known to be valid if there was insufficient type information 1876 <ref>SourceChange</ref>
1791 for the server to be able to determine whether or not the code 1877 <p>
1792 needs to be modified, such as when a member is being renamed and 1878 The changes that are to be applied to affect the
1793 there is a reference to a member from an unknown type. This field 1879 refactoring. This field will be omitted if there are
1794 will be omitted if the change field is omitted or if there are no 1880 problems that prevent a set of changes from being
1795 potential edits for the refactoring. 1881 computed, such as having no options specified for a
1796 </p> 1882 refactoring that requires them, or if only validation
1797 </field> 1883 was requested.
1798 </result> 1884 </p>
1799 </request> 1885 </field>
1800 <request method="getStatementCompletion" experimental="true"> 1886 <field name="potentialEdits" optional="true">
1801 <p> 1887 <list>
1802 Get the changes required to convert the partial statement at the given 1888 <ref>String</ref>
1803 location into a syntactically valid statement. If the current statemen t 1889 </list>
1804 is already valid the change will insert a newline plus appropriate 1890 <p>
1805 indentation at the end of the line containing the offset. 1891 The ids of source edits that are not known to be valid. An edit is
1806 If a change that makes the statement valid cannot be determined (perha ps 1892 not known to be valid if there was insufficient type information
1807 because it has not yet been implemented) the statement will be conside red 1893 for the server to be able to determine whether or not the code
1808 already valid and the appropriate change returned. 1894 needs to be modified, such as when a member is being renamed and
1809 </p> 1895 there is a reference to a member from an unknown type. This field
1810 <params> 1896 will be omitted if the change field is omitted or if there are no
1811 <field name="file"> 1897 potential edits for the refactoring.
1812 <ref>FilePath</ref> 1898 </p>
1813 <p> 1899 </field>
1814 The file containing the statement to be completed. 1900 </result>
1815 </p> 1901 </request>
1816 </field> 1902 <request method="getStatementCompletion" experimental="true">
1817 <field name="offset"> 1903 <p>
1818 <ref>int</ref> 1904 Get the changes required to convert the partial statement at the given
1819 <p> 1905 location into a syntactically valid statement. If the current statement
1820 The offset used to identify the statement to be completed. 1906 is already valid the change will insert a newline plus appropriate
1821 </p> 1907 indentation at the end of the line containing the offset.
1822 </field> 1908 If a change that makes the statement valid cannot be determined (perhaps
1823 </params> 1909 because it has not yet been implemented) the statement will be considered
1824 <result> 1910 already valid and the appropriate change returned.
1825 <field name="change"> 1911 </p>
1826 <ref>SourceChange</ref> 1912 <params>
1827 <p> 1913 <field name="file">
1828 The change to be applied in order to complete the statement. 1914 <ref>FilePath</ref>
1829 </p> 1915 <p>
1830 </field> 1916 The file containing the statement to be completed.
1831 <field name="whitespaceOnly"> 1917 </p>
1832 <ref>bool</ref> 1918 </field>
1833 <p> 1919 <field name="offset">
1834 Will be true if the change contains nothing but whitespace 1920 <ref>int</ref>
1835 characters, or is empty. 1921 <p>
1836 </p> 1922 The offset used to identify the statement to be completed.
1837 </field> 1923 </p>
1838 </result> 1924 </field>
1839 </request> 1925 </params>
1840 <request method="sortMembers"> 1926 <result>
1841 <p> 1927 <field name="change">
1842 Sort all of the directives, unit and class members 1928 <ref>SourceChange</ref>
1843 of the given Dart file. 1929 <p>
1844 </p> 1930 The change to be applied in order to complete the statement.
1845 <p> 1931 </p>
1846 If a request is made for a file that does not exist, does not belong 1932 </field>
1847 to an analysis root or is not a Dart file, 1933 <field name="whitespaceOnly">
1848 <tt>SORT_MEMBERS_INVALID_FILE</tt> will be generated. 1934 <ref>bool</ref>
1849 </p> 1935 <p>
1850 <p> 1936 Will be true if the change contains nothing but whitespace
1851 If the Dart file has scan or parse errors, 1937 characters, or is empty.
1852 <tt>SORT_MEMBERS_PARSE_ERRORS</tt> will be generated. 1938 </p>
1853 </p> 1939 </field>
1854 <params> 1940 </result>
1855 <field name="file"> 1941 </request>
1856 <ref>FilePath</ref> 1942 <request method="sortMembers">
1857 <p> 1943 <p>
1858 The Dart file to sort. 1944 Sort all of the directives, unit and class members
1859 </p> 1945 of the given Dart file.
1860 </field> 1946 </p>
1861 </params> 1947 <p>
1862 <result> 1948 If a request is made for a file that does not exist, does not belong
1863 <field name="edit"> 1949 to an analysis root or is not a Dart file,
1864 <ref>SourceFileEdit</ref> 1950 <tt>SORT_MEMBERS_INVALID_FILE</tt> will be generated.
1865 <p> 1951 </p>
1866 The file edit that is to be applied to the given file to effect 1952 <p>
1867 the sorting. 1953 If the Dart file has scan or parse errors,
1868 </p> 1954 <tt>SORT_MEMBERS_PARSE_ERRORS</tt> will be generated.
1869 </field> 1955 </p>
1870 </result> 1956 <params>
1871 </request> 1957 <field name="file">
1872 <request method="organizeDirectives"> 1958 <ref>FilePath</ref>
1873 <p> 1959 <p>
1874 Organizes all of the directives - removes unused imports and sorts 1960 The Dart file to sort.
1875 directives of the given Dart file according to the 1961 </p>
1876 <a href="https://www.dartlang.org/articles/style-guide/">Dart Style Gu ide</a>. 1962 </field>
1877 </p> 1963 </params>
1878 <p> 1964 <result>
1879 If a request is made for a file that does not exist, does not belong 1965 <field name="edit">
1880 to an analysis root or is not a Dart file, 1966 <ref>SourceFileEdit</ref>
1881 <tt>FILE_NOT_ANALYZED</tt> will be generated. 1967 <p>
1882 </p> 1968 The file edit that is to be applied to the given file to effect
1883 <p> 1969 the sorting.
1884 If directives of the Dart file cannot be organized, for example 1970 </p>
1885 because it has scan or parse errors, or by other reasons, 1971 </field>
1886 <tt>ORGANIZE_DIRECTIVES_ERROR</tt> will be generated. The message 1972 </result>
1887 will provide details about the reason. 1973 </request>
1888 </p> 1974 <request method="organizeDirectives">
1889 <params> 1975 <p>
1890 <field name="file"> 1976 Organizes all of the directives - removes unused imports and sorts
1891 <ref>FilePath</ref> 1977 directives of the given Dart file according to the
1892 <p> 1978 <a href="https://www.dartlang.org/articles/style-guide/">Dart Style
1893 The Dart file to organize directives in. 1979 Guide</a>.
1894 </p> 1980 </p>
1895 </field> 1981 <p>
1896 </params> 1982 If a request is made for a file that does not exist, does not belong
1897 <result> 1983 to an analysis root or is not a Dart file,
1898 <field name="edit"> 1984 <tt>FILE_NOT_ANALYZED</tt> will be generated.
1899 <ref>SourceFileEdit</ref> 1985 </p>
1900 <p> 1986 <p>
1901 The file edit that is to be applied to the given file to effect 1987 If directives of the Dart file cannot be organized, for example
1902 the organizing. 1988 because it has scan or parse errors, or by other reasons,
1903 </p> 1989 <tt>ORGANIZE_DIRECTIVES_ERROR</tt> will be generated. The message
1904 </field> 1990 will provide details about the reason.
1905 </result> 1991 </p>
1906 </request> 1992 <params>
1907 </domain> 1993 <field name="file">
1908 <domain name="execution"> 1994 <ref>FilePath</ref>
1909 <p> 1995 <p>
1910 The execution domain contains commands related to providing an execution 1996 The Dart file to organize directives in.
1911 or debugging experience. 1997 </p>
1912 </p> 1998 </field>
1913 <request method="createContext"> 1999 </params>
1914 <p> 2000 <result>
1915 Create an execution context for the executable file with the given 2001 <field name="edit">
1916 path. The context that is created will persist until 2002 <ref>SourceFileEdit</ref>
1917 execution.deleteContext is used to delete it. Clients, therefore, are 2003 <p>
1918 responsible for managing the lifetime of execution contexts. 2004 The file edit that is to be applied to the given file to effect
1919 </p> 2005 the organizing.
1920 <params> 2006 </p>
1921 <field name="contextRoot"> 2007 </field>
1922 <ref>FilePath</ref> 2008 </result>
1923 <p> 2009 </request>
1924 The path of the Dart or HTML file that will be launched, or the 2010 </domain>
1925 path of the directory containing the file. 2011 <domain name="execution">
1926 </p> 2012 <p>
1927 </field> 2013 The execution domain contains commands related to providing an execution
1928 </params> 2014 or debugging experience.
1929 <result> 2015 </p>
1930 <field name="id"> 2016 <request method="createContext">
1931 <ref>ExecutionContextId</ref> 2017 <p>
1932 <p> 2018 Create an execution context for the executable file with the given
1933 The identifier used to refer to the execution context that was 2019 path. The context that is created will persist until
1934 created. 2020 execution.deleteContext is used to delete it. Clients, therefore, are
1935 </p> 2021 responsible for managing the lifetime of execution contexts.
1936 </field> 2022 </p>
1937 </result> 2023 <params>
1938 </request> 2024 <field name="contextRoot">
1939 <request method="deleteContext"> 2025 <ref>FilePath</ref>
1940 <p> 2026 <p>
1941 Delete the execution context with the given identifier. The context id 2027 The path of the Dart or HTML file that will be launched, or the
1942 is no longer valid after this command. The server is allowed to re-use 2028 path of the directory containing the file.
1943 ids when they are no longer valid. 2029 </p>
1944 </p> 2030 </field>
1945 <params> 2031 </params>
1946 <field name="id"> 2032 <result>
1947 <ref>ExecutionContextId</ref> 2033 <field name="id">
1948 <p> 2034 <ref>ExecutionContextId</ref>
1949 The identifier of the execution context that is to be deleted. 2035 <p>
1950 </p> 2036 The identifier used to refer to the execution context that was
1951 </field> 2037 created.
1952 </params> 2038 </p>
1953 </request> 2039 </field>
1954 <request method="mapUri"> 2040 </result>
1955 <p> 2041 </request>
1956 Map a URI from the execution context to the file that it corresponds 2042 <request method="deleteContext">
1957 to, or map a file to the URI that it corresponds to in the execution 2043 <p>
1958 context. 2044 Delete the execution context with the given identifier. The context id
1959 </p> 2045 is no longer valid after this command. The server is allowed to re-use
1960 <p> 2046 ids when they are no longer valid.
1961 Exactly one of the file and uri fields must be provided. If both 2047 </p>
1962 fields are provided, then an error of type <tt>INVALID_PARAMETER</tt> 2048 <params>
1963 will be generated. Similarly, if neither field is provided, then an 2049 <field name="id">
1964 error of type <tt>INVALID_PARAMETER</tt> will be generated. 2050 <ref>ExecutionContextId</ref>
1965 </p> 2051 <p>
1966 <p> 2052 The identifier of the execution context that is to be deleted.
1967 If the file field is provided and the value is not the path of a file 2053 </p>
1968 (either the file does not exist or the path references something other 2054 </field>
1969 than a file), then an error of type <tt>INVALID_PARAMETER</tt> will 2055 </params>
1970 be generated. 2056 </request>
1971 </p> 2057 <request method="mapUri">
1972 <p> 2058 <p>
1973 If the uri field is provided and the value is not a valid URI or if 2059 Map a URI from the execution context to the file that it corresponds
1974 the URI references something that is not a file (either a file that 2060 to, or map a file to the URI that it corresponds to in the execution
1975 does not exist or something other than a file), then an error of type 2061 context.
1976 <tt>INVALID_PARAMETER</tt> will be generated. 2062 </p>
1977 </p> 2063 <p>
1978 <p> 2064 Exactly one of the file and uri fields must be provided. If both
1979 If the contextRoot used to create the execution context does not 2065 fields are provided, then an error of type <tt>INVALID_PARAMETER</tt>
1980 exist, then an error of type <tt>INVALID_EXECUTION_CONTEXT</tt> will 2066 will be generated. Similarly, if neither field is provided, then an
1981 be generated. 2067 error of type <tt>INVALID_PARAMETER</tt> will be generated.
1982 </p> 2068 </p>
1983 <params> 2069 <p>
1984 <field name="id"> 2070 If the file field is provided and the value is not the path of a file
1985 <ref>ExecutionContextId</ref> 2071 (either the file does not exist or the path references something other
1986 <p> 2072 than a file), then an error of type <tt>INVALID_PARAMETER</tt> will
1987 The identifier of the execution context in which the URI is to be 2073 be generated.
1988 mapped. 2074 </p>
1989 </p> 2075 <p>
1990 </field> 2076 If the uri field is provided and the value is not a valid URI or if
1991 <field name="file" optional="true"> 2077 the URI references something that is not a file (either a file that
1992 <ref>FilePath</ref> 2078 does not exist or something other than a file), then an error of type
1993 <p> 2079 <tt>INVALID_PARAMETER</tt> will be generated.
1994 The path of the file to be mapped into a URI. 2080 </p>
1995 </p> 2081 <p>
1996 </field> 2082 If the contextRoot used to create the execution context does not
1997 <field name="uri" optional="true"> 2083 exist, then an error of type <tt>INVALID_EXECUTION_CONTEXT</tt> will
1998 <ref>String</ref> 2084 be generated.
1999 <p> 2085 </p>
2000 The URI to be mapped into a file path. 2086 <params>
2001 </p> 2087 <field name="id">
2002 </field> 2088 <ref>ExecutionContextId</ref>
2003 </params> 2089 <p>
2004 <result> 2090 The identifier of the execution context in which the URI is to be
2005 <field name="file" optional="true"> 2091 mapped.
2006 <ref>FilePath</ref> 2092 </p>
2007 <p> 2093 </field>
2008 The file to which the URI was mapped. This field is omitted if the 2094 <field name="file" optional="true">
2009 uri field was not given in the request. 2095 <ref>FilePath</ref>
2010 </p> 2096 <p>
2011 </field> 2097 The path of the file to be mapped into a URI.
2012 <field name="uri" optional="true"> 2098 </p>
2013 <ref>String</ref> 2099 </field>
2014 <p> 2100 <field name="uri" optional="true">
2015 The URI to which the file path was mapped. This field is omitted 2101 <ref>String</ref>
2016 if the file field was not given in the request. 2102 <p>
2017 </p> 2103 The URI to be mapped into a file path.
2018 </field> 2104 </p>
2019 </result> 2105 </field>
2020 </request> 2106 </params>
2021 <request method="setSubscriptions" deprecated="true"> 2107 <result>
2022 <p> 2108 <field name="file" optional="true">
2023 <b>Deprecated:</b> the analysis server no longer fires 2109 <ref>FilePath</ref>
2024 <tt>LAUNCH_DATA</tt> events. 2110 <p>
2025 </p> 2111 The file to which the URI was mapped. This field is omitted if the
2026 <p> 2112 uri field was not given in the request.
2027 Subscribe for services. All previous subscriptions are replaced by the 2113 </p>
2028 given set of services. 2114 </field>
2029 </p> 2115 <field name="uri" optional="true">
2030 <p> 2116 <ref>String</ref>
2031 It is an error if any of the elements in the list are not valid 2117 <p>
2032 services. If there is an error, then the current subscriptions will 2118 The URI to which the file path was mapped. This field is omitted
2033 remain unchanged. 2119 if the file field was not given in the request.
2034 </p> 2120 </p>
2035 <params> 2121 </field>
2036 <field name="subscriptions"> 2122 </result>
2037 <list><ref>ExecutionService</ref></list> 2123 </request>
2038 <p> 2124 <request method="setSubscriptions" deprecated="true">
2039 A list of the services being subscribed to. 2125 <p>
2040 </p> 2126 <b>Deprecated:</b> the analysis server no longer fires
2041 </field> 2127 <tt>LAUNCH_DATA</tt> events.
2042 </params> 2128 </p>
2043 </request> 2129 <p>
2044 <notification event="launchData"> 2130 Subscribe for services. All previous subscriptions are replaced by the
2045 <p> 2131 given set of services.
2046 Reports information needed to allow a single file to be launched. 2132 </p>
2047 </p> 2133 <p>
2048 <p> 2134 It is an error if any of the elements in the list are not valid
2049 This notification is not subscribed to by default. Clients can 2135 services. If there is an error, then the current subscriptions will
2050 subscribe by including the value "LAUNCH_DATA" in the list of services 2136 remain unchanged.
2051 passed in an <tt>execution.setSubscriptions</tt> request. 2137 </p>
2052 </p> 2138 <params>
2053 <params> 2139 <field name="subscriptions">
2054 <field name="file"> 2140 <list>
2055 <ref>FilePath</ref> 2141 <ref>ExecutionService</ref>
2056 <p> 2142 </list>
2057 The file for which launch data is being provided. This will either 2143 <p>
2058 be a Dart library or an HTML file. 2144 A list of the services being subscribed to.
2059 </p> 2145 </p>
2060 </field> 2146 </field>
2061 <field name="kind" optional="true"> 2147 </params>
2062 <ref>ExecutableKind</ref> 2148 </request>
2063 <p> 2149 <notification event="launchData">
2064 The kind of the executable file. This field is omitted if the file 2150 <p>
2065 is not a Dart file. 2151 Reports information needed to allow a single file to be launched.
2066 </p> 2152 </p>
2067 </field> 2153 <p>
2068 <field name="referencedFiles" optional="true"> 2154 This notification is not subscribed to by default. Clients can
2069 <list><ref>FilePath</ref></list> 2155 subscribe by including the value "LAUNCH_DATA" in the list of services
2070 <p> 2156 passed in an <tt>execution.setSubscriptions</tt> request.
2071 A list of the Dart files that are referenced by the file. This 2157 </p>
2072 field is omitted if the file is not an HTML file. 2158 <params>
2073 </p> 2159 <field name="file">
2074 </field> 2160 <ref>FilePath</ref>
2075 </params> 2161 <p>
2076 </notification> 2162 The file for which launch data is being provided. This will either
2077 </domain> 2163 be a Dart library or an HTML file.
2078 <domain name="diagnostic"> 2164 </p>
2079 <p> 2165 </field>
2080 The diagnostic domain contains server diagnostics APIs. 2166 <field name="kind" optional="true">
2081 </p> 2167 <ref>ExecutableKind</ref>
2082 <request method="getDiagnostics"> 2168 <p>
2083 <p>Return server diagnostics.</p> 2169 The kind of the executable file. This field is omitted if the file
2084 <result> 2170 is not a Dart file.
2085 <field name="contexts"> 2171 </p>
2086 <list><ref>ContextData</ref></list> 2172 </field>
2087 <p>The list of analysis contexts.</p> 2173 <field name="referencedFiles" optional="true">
2088 </field> 2174 <list>
2089 </result> 2175 <ref>FilePath</ref>
2090 </request> 2176 </list>
2091 <request method="getServerPort"> 2177 <p>
2092 <p> 2178 A list of the Dart files that are referenced by the file. This
2093 Return the port of the diagnostic web server. If the server is not run ning 2179 field is omitted if the file is not an HTML file.
2094 this call will start the server. If unable to start the diagnostic web server, 2180 </p>
2095 this call will return an error of <tt>DEBUG_PORT_COULD_NOT_BE_OPENED</ tt>. 2181 </field>
2096 </p> 2182 </params>
2097 <result> 2183 </notification>
2098 <field name="port"> 2184 </domain>
2099 <ref>int</ref> 2185 <domain name="diagnostic">
2100 <p>The diagnostic server port.</p> 2186 <p>
2101 </field> 2187 The diagnostic domain contains server diagnostics APIs.
2102 </result> 2188 </p>
2103 </request> 2189 <request method="getDiagnostics">
2104 </domain> 2190 <p>Return server diagnostics.</p>
2105 <types> 2191 <result>
2106 <h2 class="domain"><a name="types">Types</a></h2> 2192 <field name="contexts">
2107 <p> 2193 <list>
2108 This section contains descriptions of the data types referenced 2194 <ref>ContextData</ref>
2109 in the API’s of the various domains. 2195 </list>
2110 </p> 2196 <p>The list of analysis contexts.</p>
2111 <type name="AddContentOverlay"> 2197 </field>
2112 <p> 2198 </result>
2113 A directive to begin overlaying the contents of a file. The 2199 </request>
2114 supplied content will be used for analysis in place of the 2200 <request method="getServerPort">
2115 file contents in the filesystem. 2201 <p>
2116 </p> 2202 Return the port of the diagnostic web server. If the server is not running
2117 <p> 2203 this call will start the server. If unable to start the diagnostic web
2118 If this directive is used on a file that already has a file 2204 server,
2119 content overlay, the old overlay is discarded and replaced 2205 this call will return an error of <tt>DEBUG_PORT_COULD_NOT_BE_OPENED</tt>.
2120 with the new one. 2206 </p>
2121 </p> 2207 <result>
2122 <object> 2208 <field name="port">
2123 <field name="type" value="add"><ref>String</ref></field> 2209 <ref>int</ref>
2124 <field name="content"> 2210 <p>The diagnostic server port.</p>
2125 <ref>String</ref> 2211 </field>
2126 <p> 2212 </result>
2127 The new content of the file. 2213 </request>
2128 </p> 2214 </domain>
2129 </field> 2215 <types>
2130 </object> 2216 <h2 class="domain"><a name="types">Types</a></h2>
2131 </type> 2217 <p>
2132 <type name="AnalysisError"> 2218 This section contains descriptions of the data types referenced
2133 <p> 2219 in the API’s of the various domains.
2134 An indication of an error, warning, or hint that was produced 2220 </p>
2135 by the analysis. 2221 <include path="../../../analyzer_plugin/tool/spec/common_types_spec.html"
2136 </p> 2222 import="package:analyzer_plugin/protocol/protocol_common.dart"></incl ude>
2137 <object> 2223 <type name="AnalysisErrorFixes">
2138 <field name="severity"> 2224 <p>
2139 <ref>AnalysisErrorSeverity</ref> 2225 A list of fixes associated with a specific error.
2140 <p> 2226 </p>
2141 The severity of the error. 2227 <object>
2142 </p> 2228 <field name="error">
2143 </field> 2229 <ref>AnalysisError</ref>
2144 <field name="type"> 2230 <p>
2145 <ref>AnalysisErrorType</ref> 2231 The error with which the fixes are associated.
2146 <p> 2232 </p>
2147 The type of the error. 2233 </field>
2148 </p> 2234 <field name="fixes">
2149 </field> 2235 <list>
2150 <field name="location"> 2236 <ref>SourceChange</ref>
2151 <ref>Location</ref> 2237 </list>
2152 <p> 2238 <p>
2153 The location associated with the error. 2239 The fixes associated with the error.
2154 </p> 2240 </p>
2155 </field> 2241 </field>
2156 <field name="message"> 2242 </object>
2157 <ref>String</ref> 2243 </type>
2158 <p> 2244 <type name="AnalysisOptions" deprecated="true">
2159 The message to be displayed for this error. The message 2245 <p><b>Deprecated:</b> the only reference to this type has been
2160 should indicate what is wrong with the code and why it is 2246 deprecated.</p>
2161 wrong. 2247 <p>
2162 </p> 2248 A set of options controlling what kind of analysis is to be
2163 </field> 2249 performed. If the value of a field is omitted the value of the
2164 <field name="correction" optional="true"> 2250 option will not be changed.
2165 <ref>String</ref> 2251 </p>
2166 <p> 2252 <object>
2167 The correction message to be displayed for this error. The 2253 <field name="enableAsync" optional="true" deprecated="true">
2168 correction message should indicate how the user can fix 2254 <ref>bool</ref>
2169 the error. The field is omitted if there is no correction 2255 <p><b>Deprecated:</b> this feature is always enabled.</p>
2170 message associated with the error code. 2256 <p>
2171 </p> 2257 True if the client wants to enable support for the
2172 </field> 2258 proposed async feature.
2173 <field name="code"> 2259 </p>
2174 <ref>String</ref> 2260 </field>
2175 <p> 2261 <field name="enableDeferredLoading" optional="true" deprecated="true">
2176 The name, as a string, of the error code associated with this erro r. 2262 <ref>bool</ref>
2177 </p> 2263 <p><b>Deprecated:</b> this feature is always enabled.</p>
2178 </field> 2264 <p>
2179 <field name="hasFix" optional="true"> 2265 True if the client wants to enable support for the
2180 <ref>bool</ref> 2266 proposed deferred loading feature.
2181 <p> 2267 </p>
2182 A hint to indicate to interested clients that this error has 2268 </field>
2183 an associated fix (or fixes). The absence of this field implies 2269 <field name="enableEnums" optional="true" deprecated="true">
2184 there are not known to be fixes. Note that since the operation 2270 <ref>bool</ref>
2185 to calculate whether fixes apply needs to be performant it is 2271 <p><b>Deprecated:</b> this feature is always enabled.</p>
2186 possible that complicated tests will be skipped and a false 2272 <p>
2187 negative returned. For this reason, this attribute should be 2273 True if the client wants to enable support for the
2188 treated as a "hint". Despite the possibility of false negatives, 2274 proposed enum feature.
2189 no false positives should be returned. If a client sees this 2275 </p>
2190 flag set they can proceed with the confidence that there are in 2276 </field>
2191 fact associated fixes. 2277 <field name="enableNullAwareOperators" optional="true" deprecated="true">
2192 </p> 2278 <ref>bool</ref>
2193 </field> 2279 <p><b>Deprecated:</b> this feature is always enabled.</p>
2194 </object> 2280 <p>
2195 </type> 2281 True if the client wants to enable support for the
2196 <type name="AnalysisErrorFixes"> 2282 proposed "null aware operators" feature.
2197 <p> 2283 </p>
2198 A list of fixes associated with a specific error. 2284 </field>
2199 </p> 2285 <field name="enableSuperMixins" optional="true">
2200 <object> 2286 <ref>bool</ref>
2201 <field name="error"> 2287 <p>
2202 <ref>AnalysisError</ref> 2288 True if the client wants to enable support for the
2203 <p> 2289 proposed "less restricted mixins" proposal (DEP 34).
2204 The error with which the fixes are associated. 2290 </p>
2205 </p> 2291 </field>
2206 </field> 2292 <field name="generateDart2jsHints" optional="true">
2207 <field name="fixes"> 2293 <ref>bool</ref>
2208 <list><ref>SourceChange</ref></list> 2294 <p>
2209 <p> 2295 True if hints that are specific to dart2js should be
2210 The fixes associated with the error. 2296 generated. This option is ignored if generateHints is false.
2211 </p> 2297 </p>
2212 </field> 2298 </field>
2213 </object> 2299 <field name="generateHints" optional="true">
2214 </type> 2300 <ref>bool</ref>
2215 <type name="AnalysisErrorSeverity"> 2301 <p>
2216 <p> 2302 True if hints should be generated as part of generating
2217 An enumeration of the possible severities of analysis 2303 errors and warnings.
2304 </p>
2305 </field>
2306 <field name="generateLints" optional="true">
2307 <ref>bool</ref>
2308 <p>
2309 True if lints should be generated as part of generating
2310 errors and warnings.
2311 </p>
2312 </field>
2313 </object>
2314 </type>
2315 <type name="AnalysisService">
2316 <p>
2317 An enumeration of the services provided by the analysis domain that
2318 are related to a specific list of files.
2319 </p>
2320 <enum>
2321 <value><code>FOLDING</code></value>
2322 <value><code>HIGHLIGHTS</code></value>
2323 <value><code>IMPLEMENTED</code></value>
2324 <value>
2325 <code>INVALIDATE</code>
2326 <p>
2327 This service is not currently implemented and will become a
2328 GeneralAnalysisService in a future release.
2329 </p>
2330 </value>
2331 <value><code>NAVIGATION</code></value>
2332 <value><code>OCCURRENCES</code></value>
2333 <value><code>OUTLINE</code></value>
2334 <value><code>OVERRIDES</code></value>
2335 </enum>
2336 </type>
2337 <type name="AnalysisStatus">
2338 <p>
2339 An indication of the current state of analysis.
2340 </p>
2341 <object>
2342 <field name="isAnalyzing">
2343 <ref>bool</ref>
2344 <p>True if analysis is currently being performed.</p>
2345 </field>
2346 <field name="analysisTarget" optional="true">
2347 <ref>String</ref>
2348 <p>
2349 The name of the current target of analysis. This field is
2350 omitted if analyzing is false.
2351 </p>
2352 </field>
2353 </object>
2354 </type>
2355 <type name="CompletionId">
2356 <ref>String</ref>
2357 <p>
2358 An identifier used to associate completion results with a
2359 completion request.
2360 </p>
2361 </type>
2362 <type name="ContextData">
2363 <p>
2364 Information about an analysis context.
2365 </p>
2366 <object>
2367 <field name="name">
2368 <ref>String</ref>
2369 <p>
2370 The name of the context.
2371 </p>
2372 </field>
2373 <field name="explicitFileCount">
2374 <ref>int</ref>
2375 <p>
2376 Explicitly analyzed files.
2377 </p>
2378 </field>
2379 <field name="implicitFileCount">
2380 <ref>int</ref>
2381 <p>
2382 Implicitly analyzed files.
2383 </p>
2384 </field>
2385 <field name="workItemQueueLength">
2386 <ref>int</ref>
2387 <p>
2388 The number of work items in the queue.
2389 </p>
2390 </field>
2391 <field name="cacheEntryExceptions">
2392 <list>
2393 <ref>String</ref>
2394 </list>
2395 <p>
2396 Exceptions associated with cache entries.
2397 </p>
2398 </field>
2399 </object>
2400 </type>
2401 <type name="ExecutableFile">
2402 <p>
2403 A description of an executable file.
2404 </p>
2405 <object>
2406 <field name="file">
2407 <ref>FilePath</ref>
2408 <p>
2409 The path of the executable file.
2410 </p>
2411 </field>
2412 <field name="kind">
2413 <ref>ExecutableKind</ref>
2414 <p>
2415 The kind of the executable file.
2416 </p>
2417 </field>
2418 </object>
2419 </type>
2420 <type name="ExecutableKind">
2421 <p>
2422 An enumeration of the kinds of executable files.
2423 </p>
2424 <enum>
2425 <value><code>CLIENT</code></value>
2426 <value><code>EITHER</code></value>
2427 <value><code>NOT_EXECUTABLE</code></value>
2428 <value><code>SERVER</code></value>
2429 </enum>
2430 </type>
2431 <type name="ExecutionContextId">
2432 <ref>String</ref>
2433 <p>
2434 The identifier for a execution context.
2435 </p>
2436 </type>
2437 <type name="ExecutionService">
2438 <p>
2439 An enumeration of the services provided by the execution
2440 domain.
2441 </p>
2442 <enum>
2443 <value><code>LAUNCH_DATA</code></value>
2444 </enum>
2445 </type>
2446 <type name="FileKind">
2447 <p>
2448 An enumeration of the kinds of files.
2449 </p>
2450 <enum>
2451 <value><code>LIBRARY</code></value>
2452 <value><code>PART</code></value>
2453 </enum>
2454 </type>
2455 <type name="GeneralAnalysisService">
2456 <p>
2457 An enumeration of the services provided by the analysis domain that are
2458 general in nature (that is, are not specific to some list of files).
2459 </p>
2460 <enum>
2461 <value><code>ANALYZED_FILES</code></value>
2462 </enum>
2463 </type>
2464 <type name="HoverInformation">
2465 <p>
2466 The hover information associated with a specific location.
2467 </p>
2468 <object>
2469 <field name="offset">
2470 <ref>int</ref>
2471 <p>
2472 The offset of the range of characters that encompasses the
2473 cursor position and has the same hover information as the
2474 cursor position.
2475 </p>
2476 </field>
2477 <field name="length">
2478 <ref>int</ref>
2479 <p>
2480 The length of the range of characters that encompasses the
2481 cursor position and has the same hover information as the
2482 cursor position.
2483 </p>
2484 </field>
2485 <field name="containingLibraryPath" optional="true">
2486 <ref>String</ref>
2487 <p>
2488 The path to the defining compilation unit of the library
2489 in which the referenced element is declared. This data is
2490 omitted if there is no referenced element, or if the
2491 element is declared inside an HTML file.
2492 </p>
2493 </field>
2494 <field name="containingLibraryName" optional="true">
2495 <ref>String</ref>
2496 <p>
2497 The name of the library in which the referenced element is
2498 declared. This data is omitted if there is no referenced
2499 element, or if the element is declared inside an HTML
2500 file.
2501 </p>
2502 </field>
2503 <field name="containingClassDescription" optional="true">
2504 <ref>String</ref>
2505 <p>
2506 A human-readable description of the class declaring the element
2507 being referenced. This data is omitted if there is no referenced
2508 element, or if the element is not a class member.
2509 </p>
2510 </field>
2511 <field name="dartdoc" optional="true">
2512 <ref>String</ref>
2513 <p>
2514 The dartdoc associated with the referenced element. Other
2515 than the removal of the comment delimiters, including
2516 leading asterisks in the case of a block comment, the
2517 dartdoc is unprocessed markdown. This data is omitted if
2518 there is no referenced element, or if the element has no
2519 dartdoc.
2520 </p>
2521 </field>
2522 <field name="elementDescription" optional="true">
2523 <ref>String</ref>
2524 <p>
2525 A human-readable description of the element being
2526 referenced. This data is omitted if there is no referenced
2527 element.
2528 </p>
2529 </field>
2530 <field name="elementKind" optional="true">
2531 <ref>String</ref>
2532 <p>
2533 A human-readable description of the kind of element being
2534 referenced (such as "class" or "function type
2535 alias"). This data is omitted if there is no referenced
2536 element.
2537 </p>
2538 </field>
2539 <field name="isDeprecated" optional="true">
2540 <ref>bool</ref>
2541 <p>
2542 True if the referenced element is deprecated.
2543 </p>
2544 </field>
2545 <field name="parameter" optional="true">
2546 <ref>String</ref>
2547 <p>
2548 A human-readable description of the parameter
2549 corresponding to the expression being hovered over. This
2550 data is omitted if the location is not in an argument to a
2551 function.
2552 </p>
2553 </field>
2554 <field name="propagatedType" optional="true">
2555 <ref>String</ref>
2556 <p>
2557 The name of the propagated type of the expression. This
2558 data is omitted if the location does not correspond to an
2559 expression or if there is no propagated type information.
2560 </p>
2561 </field>
2562 <field name="staticType" optional="true">
2563 <ref>String</ref>
2564 <p>
2565 The name of the static type of the expression. This data
2566 is omitted if the location does not correspond to an
2567 expression.
2568 </p>
2569 </field>
2570 </object>
2571 </type>
2572 <type name="ImplementedClass">
2573 <p>
2574 A description of a class that is implemented or extended.
2575 </p>
2576 <object>
2577 <field name="offset">
2578 <ref>int</ref>
2579 <p>
2580 The offset of the name of the implemented class.
2581 </p>
2582 </field>
2583 <field name="length">
2584 <ref>int</ref>
2585 <p>
2586 The length of the name of the implemented class.
2587 </p>
2588 </field>
2589 </object>
2590 </type>
2591 <type name="ImplementedMember">
2592 <p>
2593 A description of a class member that is implemented or overridden.
2594 </p>
2595 <object>
2596 <field name="offset">
2597 <ref>int</ref>
2598 <p>
2599 The offset of the name of the implemented member.
2600 </p>
2601 </field>
2602 <field name="length">
2603 <ref>int</ref>
2604 <p>
2605 The length of the name of the implemented member.
2606 </p>
2607 </field>
2608 </object>
2609 </type>
2610 <type name="Override">
2611 <p>
2612 A description of a member that overrides an inherited member.
2613 </p>
2614 <object>
2615 <field name="offset">
2616 <ref>int</ref>
2617 <p>
2618 The offset of the name of the overriding member.
2619 </p>
2620 </field>
2621 <field name="length">
2622 <ref>int</ref>
2623 <p>
2624 The length of the name of the overriding member.
2625 </p>
2626 </field>
2627 <field name="superclassMember" optional="true">
2628 <ref>OverriddenMember</ref>
2629 <p>
2630 The member inherited from a superclass that is overridden
2631 by the overriding member. The field is omitted if there is
2632 no superclass member, in which case there must be at least
2633 one interface member.
2634 </p>
2635 </field>
2636 <field name="interfaceMembers" optional="true">
2637 <list>
2638 <ref>OverriddenMember</ref>
2639 </list>
2640 <p>
2641 The members inherited from interfaces that are overridden
2642 by the overriding member. The field is omitted if there
2643 are no interface members, in which case there must be a
2644 superclass member.
2645 </p>
2646 </field>
2647 </object>
2648 </type>
2649 <type name="OverriddenMember">
2650 <p>
2651 A description of a member that is being overridden.
2652 </p>
2653 <object>
2654 <field name="element">
2655 <ref>Element</ref>
2656 <p>
2657 The element that is being overridden.
2658 </p>
2659 </field>
2660 <field name="className">
2661 <ref>String</ref>
2662 <p>
2663 The name of the class in which the member is defined.
2664 </p>
2665 </field>
2666 </object>
2667 </type>
2668 <type name="PubStatus">
2669 <p>
2670 An indication of the current state of pub execution.
2671 </p>
2672 <object>
2673 <field name="isListingPackageDirs">
2674 <ref>bool</ref>
2675 <p>
2676 True if the server is currently running pub to produce a list of
2677 package directories.
2678 </p>
2679 </field>
2680 </object>
2681 </type>
2682 <type name="RefactoringFeedback">
2683 <p>
2684 An abstract superclass of all refactoring feedbacks.
2685 </p>
2686 <object>
2687 </object>
2688 </type>
2689 <type name="RefactoringOptions">
2690 <p>
2691 An abstract superclass of all refactoring options.
2692 </p>
2693 <object>
2694 </object>
2695 </type>
2696 <type name="RequestError">
2697 <p>
2698 An indication of a problem with the execution of the server,
2699 typically in response to a request.
2700 </p>
2701 <object>
2702 <field name="code">
2703 <ref>RequestErrorCode</ref>
2704 <p>
2705 A code that uniquely identifies the error that occurred.
2706 </p>
2707 </field>
2708 <field name="message">
2709 <ref>String</ref>
2710 <p>
2711 A short description of the error.
2712 </p>
2713 </field>
2714 <field name="stackTrace" optional="true">
2715 <ref>String</ref>
2716 <p>
2717 The stack trace associated with processing the request,
2718 used for debugging the server.
2719 </p>
2720 </field>
2721 </object>
2722 </type>
2723 <type name="RequestErrorCode">
2724 <p>
2725 An enumeration of the types of errors that can occur in the
2726 execution of the server.
2727 </p>
2728 <enum>
2729 <value>
2730 <code>CONTENT_MODIFIED</code>
2731 <p>
2732 An "analysis.getErrors" or "analysis.getNavigation" request could
2733 not be satisfied because the content of the file changed before
2734 the requested results could be computed.
2735 </p>
2736 </value>
2737 <value>
2738 <code>DEBUG_PORT_COULD_NOT_BE_OPENED</code>
2739 <p>
2740 The server was unable to open a port for the diagnostic server.
2741 </p>
2742 </value>
2743 <value>
2744 <code>FILE_NOT_ANALYZED</code>
2745 <p>
2746 A request specified a FilePath which does not match a file in
2747 an analysis root, or the requested operation is not available
2748 for the file.
2749 </p>
2750 </value>
2751 <value>
2752 <code>FORMAT_INVALID_FILE</code>
2753 <p>
2754 An "edit.format" request specified a FilePath
2755 which does not match a Dart file in an analysis root.
2756 </p>
2757 </value>
2758 <value>
2759 <code>FORMAT_WITH_ERRORS</code>
2760 <p>
2761 An "edit.format" request specified a file that contains syntax
2218 errors. 2762 errors.
2219 </p> 2763 </p>
2220 <enum> 2764 </value>
2221 <value><code>INFO</code></value> 2765 <value>
2222 <value><code>WARNING</code></value> 2766 <code>GET_ERRORS_INVALID_FILE</code>
2223 <value><code>ERROR</code></value> 2767 <p>
2224 </enum> 2768 An "analysis.getErrors" request specified a FilePath
2225 </type> 2769 which does not match a file currently subject to
2226 <type name="AnalysisErrorType"> 2770 analysis.
2227 <p> 2771 </p>
2228 An enumeration of the possible types of analysis errors. 2772 </value>
2229 </p> 2773 <value>
2230 <enum> 2774 <code>GET_NAVIGATION_INVALID_FILE</code>
2231 <value><code>CHECKED_MODE_COMPILE_TIME_ERROR</code></value> 2775 <p>
2232 <value><code>COMPILE_TIME_ERROR</code></value> 2776 An "analysis.getNavigation" request specified a FilePath
2233 <value><code>HINT</code></value> 2777 which does not match a file currently subject to
2234 <value><code>LINT</code></value> 2778 analysis.
2235 <value><code>STATIC_TYPE_WARNING</code></value> 2779 </p>
2236 <value><code>STATIC_WARNING</code></value> 2780 </value>
2237 <value><code>SYNTACTIC_ERROR</code></value> 2781 <value>
2238 <value><code>TODO</code></value> 2782 <code>GET_REACHABLE_SOURCES_INVALID_FILE</code>
2239 </enum> 2783 <p>
2240 </type> 2784 An "analysis.getReachableSources" request specified a FilePath
2241 <type name="AnalysisOptions" deprecated="true"> 2785 which does not match a file currently subject to
2242 <p><b>Deprecated:</b> the only reference to this type has been 2786 analysis.
2243 deprecated.</p> 2787 </p>
2244 <p> 2788 </value>
2245 A set of options controlling what kind of analysis is to be 2789 <value>
2246 performed. If the value of a field is omitted the value of the 2790 <code>INVALID_ANALYSIS_ROOT</code>
2247 option will not be changed. 2791 <p>
2248 </p> 2792 A path passed as an argument to a request (such as
2249 <object> 2793 analysis.reanalyze) is required to be an analysis root, but isn't.
2250 <field name="enableAsync" optional="true" deprecated="true"> 2794 </p>
2251 <ref>bool</ref> 2795 </value>
2252 <p><b>Deprecated:</b> this feature is always enabled.</p> 2796 <value>
2253 <p> 2797 <code>INVALID_EXECUTION_CONTEXT</code>
2254 True if the client wants to enable support for the 2798 <p>
2255 proposed async feature. 2799 The context root used to create an execution context does not
2256 </p> 2800 exist.
2257 </field> 2801 </p>
2258 <field name="enableDeferredLoading" optional="true" deprecated="true"> 2802 </value>
2259 <ref>bool</ref> 2803 <value>
2260 <p><b>Deprecated:</b> this feature is always enabled.</p> 2804 <code>INVALID_FILE_PATH_FORMAT</code>
2261 <p> 2805 <p>
2262 True if the client wants to enable support for the 2806 The format of the given file path is invalid, e.g. is not
2263 proposed deferred loading feature. 2807 absolute and normalized.
2264 </p> 2808 </p>
2265 </field> 2809 </value>
2266 <field name="enableEnums" optional="true" deprecated="true"> 2810 <value>
2267 <ref>bool</ref> 2811 <code>INVALID_OVERLAY_CHANGE</code>
2268 <p><b>Deprecated:</b> this feature is always enabled.</p> 2812 <p>
2269 <p> 2813 An "analysis.updateContent" request contained a
2270 True if the client wants to enable support for the 2814 ChangeContentOverlay object which can't be applied, due
2271 proposed enum feature. 2815 to an edit having an offset or length that is out of
2272 </p> 2816 range.
2273 </field> 2817 </p>
2274 <field name="enableNullAwareOperators" optional="true" deprecated="tru e"> 2818 </value>
2275 <ref>bool</ref> 2819 <value>
2276 <p><b>Deprecated:</b> this feature is always enabled.</p> 2820 <code>INVALID_PARAMETER</code>
2277 <p> 2821 <p>
2278 True if the client wants to enable support for the 2822 One of the method parameters was invalid.
2279 proposed "null aware operators" feature. 2823 </p>
2280 </p> 2824 </value>
2281 </field> 2825 <value>
2282 <field name="enableSuperMixins" optional="true"> 2826 <code>INVALID_REQUEST</code>
2283 <ref>bool</ref> 2827 <p>
2284 <p> 2828 A malformed request was received.
2285 True if the client wants to enable support for the 2829 </p>
2286 proposed "less restricted mixins" proposal (DEP 34). 2830 </value>
2287 </p> 2831 <value>
2288 </field> 2832 <code>ORGANIZE_DIRECTIVES_ERROR</code>
2289 <field name="generateDart2jsHints" optional="true"> 2833 <p>
2290 <ref>bool</ref> 2834 An "edit.organizeDirectives" request specified a Dart file that
2291 <p> 2835 cannot be analyzed. The reason is described in the message.
2292 True if hints that are specific to dart2js should be 2836 </p>
2293 generated. This option is ignored if generateHints is false. 2837 </value>
2294 </p> 2838 <value>
2295 </field> 2839 <code>REFACTORING_REQUEST_CANCELLED</code>
2296 <field name="generateHints" optional="true"> 2840 <p>
2297 <ref>bool</ref> 2841 Another refactoring request was received during processing of
2298 <p> 2842 this one.
2299 True if hints should be generated as part of generating 2843 </p>
2300 errors and warnings. 2844 </value>
2301 </p> 2845 <value>
2302 </field> 2846 <code>SERVER_ALREADY_STARTED</code>
2303 <field name="generateLints" optional="true"> 2847 <p>
2304 <ref>bool</ref> 2848 The analysis server has already been started (and hence
2305 <p> 2849 won't accept new connections).
2306 True if lints should be generated as part of generating 2850 </p>
2307 errors and warnings. 2851 <p>
2308 </p> 2852 This error is included for future expansion; at present
2309 </field> 2853 the analysis server can only speak to one client at a
2310 </object> 2854 time so this error will never occur.
2311 </type> 2855 </p>
2312 <type name="AnalysisService"> 2856 </value>
2313 <p> 2857 <value>
2314 An enumeration of the services provided by the analysis domain that 2858 <code>SERVER_ERROR</code>
2315 are related to a specific list of files. 2859 <p>
2316 </p> 2860 An internal error occurred in the analysis server.
2317 <enum> 2861 Also see the server.error notification.
2318 <value><code>FOLDING</code></value> 2862 </p>
2319 <value><code>HIGHLIGHTS</code></value> 2863 </value>
2320 <value><code>IMPLEMENTED</code></value> 2864 <value>
2321 <value> 2865 <code>SORT_MEMBERS_INVALID_FILE</code>
2322 <code>INVALIDATE</code> 2866 <p>
2323 <p> 2867 An "edit.sortMembers" request specified a FilePath
2324 This service is not currently implemented and will become a 2868 which does not match a Dart file in an analysis root.
2325 GeneralAnalysisService in a future release. 2869 </p>
2326 </p> 2870 </value>
2327 </value> 2871 <value>
2328 <value><code>NAVIGATION</code></value> 2872 <code>SORT_MEMBERS_PARSE_ERRORS</code>
2329 <value><code>OCCURRENCES</code></value> 2873 <p>
2330 <value><code>OUTLINE</code></value> 2874 An "edit.sortMembers" request specified a Dart file that has
2331 <value><code>OVERRIDES</code></value> 2875 scan or parse errors.
2332 </enum> 2876 </p>
2333 </type> 2877 </value>
2334 <type name="AnalysisStatus"> 2878 <value>
2335 <p> 2879 <code>UNANALYZED_PRIORITY_FILES</code>
2336 An indication of the current state of analysis. 2880 <p>
2337 </p> 2881 An "analysis.setPriorityFiles" request includes one or
2338 <object> 2882 more files that are not being analyzed.
2339 <field name="isAnalyzing"> 2883 </p>
2340 <ref>bool</ref> 2884 <p>
2341 <p>True if analysis is currently being performed.</p> 2885 This is a legacy error; it will be removed before the
2342 </field> 2886 API reaches version 1.0.
2343 <field name="analysisTarget" optional="true"> 2887 </p>
2344 <ref>String</ref> 2888 <!-- TODO(paulberry): remove this error and the code that
2345 <p>
2346 The name of the current target of analysis. This field is
2347 omitted if analyzing is false.
2348 </p>
2349 </field>
2350 </object>
2351 </type>
2352 <type name="ChangeContentOverlay">
2353 <p>
2354 A directive to modify an existing file content overlay. One or more
2355 ranges of text are deleted from the old file content overlay and
2356 replaced with new text.
2357 </p>
2358 <p>
2359 The edits are applied in the order in which they occur in the list.
2360 This means that the offset of each edit must be correct under the
2361 assumption that all previous edits have been applied.
2362 </p>
2363 <p>
2364 It is an error to use this overlay on a file that does not yet have
2365 a file content overlay or that has had its overlay removed via
2366 <a href="#type_RemoveContentOverlay">RemoveContentOverlay</a>.
2367 </p>
2368 <p>
2369 If any of the edits cannot be applied due to its offset or
2370 length being out of range, an INVALID_OVERLAY_CHANGE error
2371 will be reported.
2372 </p>
2373 <object>
2374 <field name="type" value="change"><ref>String</ref></field>
2375 <field name="edits">
2376 <list><ref>SourceEdit</ref></list>
2377 <p>
2378 The edits to be applied to the file.
2379 </p>
2380 </field>
2381 </object>
2382 </type>
2383 <type name="CompletionId">
2384 <ref>String</ref>
2385 <p>
2386 An identifier used to associate completion results with a
2387 completion request.
2388 </p>
2389 </type>
2390 <type name="CompletionSuggestion">
2391 <p>
2392 A suggestion for how to complete partially entered text. Many
2393 of the fields are optional, depending on the kind of element
2394 being suggested.
2395 </p>
2396 <object>
2397 <field name="kind">
2398 <ref>CompletionSuggestionKind</ref>
2399 <p>
2400 The kind of element being suggested.
2401 </p>
2402 </field>
2403 <field name="relevance">
2404 <ref>int</ref>
2405 <p>
2406 The relevance of this completion suggestion
2407 where a higher number indicates a higher relevance.
2408 </p>
2409 </field>
2410 <field name="completion">
2411 <ref>String</ref>
2412 <p>
2413 The identifier to be inserted if the suggestion is
2414 selected. If the suggestion is for a method or function,
2415 the client might want to additionally insert a template
2416 for the parameters. The information required in order to
2417 do so is contained in other fields.
2418 </p>
2419 </field>
2420 <field name="selectionOffset">
2421 <ref>int</ref>
2422 <p>
2423 The offset, relative to the beginning of the completion,
2424 of where the selection should be placed after insertion.
2425 </p>
2426 </field>
2427 <field name="selectionLength">
2428 <ref>int</ref>
2429 <p>
2430 The number of characters that should be selected after
2431 insertion.
2432 </p>
2433 </field>
2434 <field name="isDeprecated">
2435 <ref>bool</ref>
2436 <p>
2437 True if the suggested element is deprecated.
2438 </p>
2439 </field>
2440 <field name="isPotential">
2441 <ref>bool</ref>
2442 <p>
2443 True if the element is not known to be valid for the
2444 target. This happens if the type of the target is dynamic.
2445 </p>
2446 </field>
2447 <field name="docSummary" optional="true">
2448 <ref>String</ref>
2449 <p>
2450 An abbreviated version of the Dartdoc associated with the
2451 element being suggested, This field is omitted if there is
2452 no Dartdoc associated with the element.
2453 </p>
2454 </field>
2455 <field name="docComplete" optional="true">
2456 <ref>String</ref>
2457 <p>
2458 The Dartdoc associated with the element being suggested,
2459 This field is omitted if there is no Dartdoc associated
2460 with the element.
2461 </p>
2462 </field>
2463 <field name="declaringType" optional="true">
2464 <ref>String</ref>
2465 <p>
2466 The class that declares the element being suggested. This
2467 field is omitted if the suggested element is not a member
2468 of a class.
2469 </p>
2470 </field>
2471 <field name="defaultArgumentListString" optional="true">
2472 <ref>String</ref>
2473 <p>
2474 A default String for use in generating argument list
2475 source contents on the client side.
2476 </p>
2477 </field>
2478 <field name="defaultArgumentListTextRanges" optional="true">
2479 <list><ref>int</ref></list>
2480 <p>
2481 Pairs of offsets and lengths describing 'defaultArgumentListString '
2482 text ranges suitable for use by clients to set up linked edits of
2483 default argument source contents. For example, given an argument
2484 list string 'x, y', the corresponding text range [0, 1, 3, 1],
2485 indicates two text ranges of length 1, starting at offsets 0 and 3 .
2486 Clients can use these ranges to treat the 'x' and 'y' values
2487 specially for linked edits.
2488 </p>
2489 </field>
2490 <field name="element" optional="true">
2491 <ref>Element</ref>
2492 <p>
2493 Information about the element reference being suggested.
2494 </p>
2495 </field>
2496 <field name="returnType" optional="true">
2497 <ref>String</ref>
2498 <p>
2499 The return type of the getter, function or method
2500 or the type of the field being suggested.
2501 This field is omitted if the suggested element
2502 is not a getter, function or method.
2503 </p>
2504 </field>
2505 <field name="parameterNames" optional="true">
2506 <list><ref>String</ref></list>
2507 <p>
2508 The names of the parameters of the function or method
2509 being suggested. This field is omitted if the suggested
2510 element is not a setter, function or method.
2511 </p>
2512 </field>
2513 <field name="parameterTypes" optional="true">
2514 <list><ref>String</ref></list>
2515 <p>
2516 The types of the parameters of the function or method
2517 being suggested. This field is omitted if the
2518 parameterNames field is omitted.
2519 </p>
2520 </field>
2521 <field name="requiredParameterCount" optional="true">
2522 <ref>int</ref>
2523 <p>
2524 The number of required parameters for the function or
2525 method being suggested. This field is omitted if the
2526 parameterNames field is omitted.
2527 </p>
2528 </field>
2529 <field name="hasNamedParameters" optional="true">
2530 <ref>bool</ref>
2531 <p>
2532 True if the function or method being suggested has at
2533 least one named parameter. This field is omitted if the
2534 parameterNames field is omitted.
2535 </p>
2536 </field>
2537 <field name="parameterName" optional="true">
2538 <ref>String</ref>
2539 <p>
2540 The name of the optional parameter being suggested. This
2541 field is omitted if the suggestion is not the addition of
2542 an optional argument within an argument list.
2543 </p>
2544 </field>
2545 <field name="parameterType" optional="true">
2546 <ref>String</ref>
2547 <p>
2548 The type of the options parameter being suggested. This
2549 field is omitted if the parameterName field is omitted.
2550 </p>
2551 </field>
2552 <field name="importUri" optional="true">
2553 <ref>String</ref>
2554 <p>
2555 The import to be added if the suggestion is out of scope
2556 and needs an import to be added to be in scope.
2557 </p>
2558 </field>
2559 </object>
2560 </type>
2561 <type name="CompletionSuggestionKind">
2562 <p>
2563 An enumeration of the kinds of elements that can be included
2564 in a completion suggestion.
2565 </p>
2566 <enum>
2567 <value>
2568 <code>ARGUMENT_LIST</code>
2569 <p>
2570 A list of arguments for the method or function that is being invok ed.
2571 For this suggestion kind, the completion field is a textual repres entation
2572 of the invocation and the parameterNames, parameterTypes, and requ iredParameterCount
2573 attributes are defined.
2574 </p>
2575 </value>
2576 <value><code>IMPORT</code></value>
2577 <value>
2578 <code>IDENTIFIER</code>
2579 <p>
2580 The element identifier should be inserted at the completion locati on.
2581 For example "someMethod" in import 'myLib.dart' show someMethod; .
2582 For suggestions of this kind, the element attribute is defined
2583 and the completion field is the element's identifier.
2584 </p>
2585 </value>
2586 <value>
2587 <code>INVOCATION</code>
2588 <p>
2589 The element is being invoked at the completion location.
2590 For example, "someMethod" in x.someMethod(); .
2591 For suggestions of this kind, the element attribute is defined
2592 and the completion field is the element's identifier.
2593 </p>
2594 </value>
2595 <value>
2596 <code>KEYWORD</code>
2597 <p>
2598 A keyword is being suggested.
2599 For suggestions of this kind, the completion is the keyword.
2600 </p>
2601 </value>
2602 <value>
2603 <code>NAMED_ARGUMENT</code>
2604 <p>
2605 A named argument for the current callsite is being suggested.
2606 For suggestions of this kind, the completion is
2607 the named argument identifier including a trailing ':' and space.
2608 </p>
2609 </value>
2610 <value><code>OPTIONAL_ARGUMENT</code></value>
2611 <value><code>PARAMETER</code></value>
2612 </enum>
2613 </type>
2614 <type name="ContextData">
2615 <p>
2616 Information about an analysis context.
2617 </p>
2618 <object>
2619 <field name="name">
2620 <ref>String</ref>
2621 <p>
2622 The name of the context.
2623 </p>
2624 </field>
2625 <field name="explicitFileCount">
2626 <ref>int</ref>
2627 <p>
2628 Explicitly analyzed files.
2629 </p>
2630 </field>
2631 <field name="implicitFileCount">
2632 <ref>int</ref>
2633 <p>
2634 Implicitly analyzed files.
2635 </p>
2636 </field>
2637 <field name="workItemQueueLength">
2638 <ref>int</ref>
2639 <p>
2640 The number of work items in the queue.
2641 </p>
2642 </field>
2643 <field name="cacheEntryExceptions">
2644 <list><ref>String</ref></list>
2645 <p>
2646 Exceptions associated with cache entries.
2647 </p>
2648 </field>
2649 </object>
2650 </type>
2651 <type name="Element">
2652 <p>
2653 Information about an element (something that can be declared
2654 in code).
2655 </p>
2656 <object>
2657 <field name="kind">
2658 <ref>ElementKind</ref>
2659 <p>
2660 The kind of the element.
2661 </p>
2662 </field>
2663 <field name="name">
2664 <ref>String</ref>
2665 <p>
2666 The name of the element. This is typically used as the
2667 label in the outline.
2668 </p>
2669 </field>
2670 <field name="location" optional="true">
2671 <ref>Location</ref>
2672 <p>
2673 The location of the name in the declaration of the
2674 element.
2675 </p>
2676 </field>
2677 <field name="flags">
2678 <ref>int</ref>
2679 <p>
2680 A bit-map containing the following flags:
2681 </p>
2682 <ul>
2683 <li>0x01 - set if the element is explicitly or implicitly abstract </li>
2684 <li>0x02 - set if the element was declared to be ‘const’</li>
2685 <li>0x04 - set if the element was declared to be ‘final’</li>
2686 <li>0x08 - set if the element is a static member of a class or is a top-level function or field</li>
2687 <li>0x10 - set if the element is private</li>
2688 <li>0x20 - set if the element is deprecated</li>
2689 </ul>
2690 </field>
2691 <field name="parameters" optional="true">
2692 <ref>String</ref>
2693 <p>
2694 The parameter list for the element. If the element is not
2695 a method or function this field will not be defined. If
2696 the element doesn't have parameters (e.g. getter), this field
2697 will not be defined. If the element has zero parameters, this
2698 field will have a value of "()".
2699 </p>
2700 </field>
2701 <field name="returnType" optional="true">
2702 <ref>String</ref>
2703 <p>
2704 The return type of the element. If the element is not a
2705 method or function this field will not be defined. If the
2706 element does not have a declared return type, this field
2707 will contain an empty string.
2708 </p>
2709 </field>
2710 <field name="typeParameters" optional="true">
2711 <ref>String</ref>
2712 <p>
2713 The type parameter list for the element. If the element doesn't
2714 have type parameters, this field will not be defined.
2715 </p>
2716 </field>
2717 </object>
2718 </type>
2719 <type name="ElementKind">
2720 <p>
2721 An enumeration of the kinds of elements.
2722 </p>
2723 <enum>
2724 <value><code>CLASS</code></value>
2725 <value><code>CLASS_TYPE_ALIAS</code></value>
2726 <value><code>COMPILATION_UNIT</code></value>
2727 <value><code>CONSTRUCTOR</code></value>
2728 <value><code>ENUM</code></value>
2729 <value><code>ENUM_CONSTANT</code></value>
2730 <value><code>FIELD</code></value>
2731 <value><code>FILE</code></value>
2732 <value><code>FUNCTION</code></value>
2733 <value><code>FUNCTION_TYPE_ALIAS</code></value>
2734 <value><code>GETTER</code></value>
2735 <value><code>LABEL</code></value>
2736 <value><code>LIBRARY</code></value>
2737 <value><code>LOCAL_VARIABLE</code></value>
2738 <value><code>METHOD</code></value>
2739 <value><code>PARAMETER</code></value>
2740 <value><code>PREFIX</code></value>
2741 <value><code>SETTER</code></value>
2742 <value><code>TOP_LEVEL_VARIABLE</code></value>
2743 <value><code>TYPE_PARAMETER</code></value>
2744 <value deprecated="true">
2745 <code>UNIT_TEST_GROUP</code>
2746 <p><b>Deprecated:</b> support for tests was removed.</p>
2747 </value>
2748 <value deprecated="true">
2749 <code>UNIT_TEST_TEST</code>
2750 <p><b>Deprecated:</b> support for tests was removed.</p>
2751 </value>
2752 <value><code>UNKNOWN</code></value>
2753 </enum>
2754 </type>
2755 <type name="ExecutableFile">
2756 <p>
2757 A description of an executable file.
2758 </p>
2759 <object>
2760 <field name="file">
2761 <ref>FilePath</ref>
2762 <p>
2763 The path of the executable file.
2764 </p>
2765 </field>
2766 <field name="kind">
2767 <ref>ExecutableKind</ref>
2768 <p>
2769 The kind of the executable file.
2770 </p>
2771 </field>
2772 </object>
2773 </type>
2774 <type name="ExecutableKind">
2775 <p>
2776 An enumeration of the kinds of executable files.
2777 </p>
2778 <enum>
2779 <value><code>CLIENT</code></value>
2780 <value><code>EITHER</code></value>
2781 <value><code>NOT_EXECUTABLE</code></value>
2782 <value><code>SERVER</code></value>
2783 </enum>
2784 </type>
2785 <type name="ExecutionContextId">
2786 <ref>String</ref>
2787 <p>
2788 The identifier for a execution context.
2789 </p>
2790 </type>
2791 <type name="ExecutionService">
2792 <p>
2793 An enumeration of the services provided by the execution
2794 domain.
2795 </p>
2796 <enum>
2797 <value><code>LAUNCH_DATA</code></value>
2798 </enum>
2799 </type>
2800 <type name="FileKind">
2801 <p>
2802 An enumeration of the kinds of files.
2803 </p>
2804 <enum>
2805 <value><code>LIBRARY</code></value>
2806 <value><code>PART</code></value>
2807 </enum>
2808 </type>
2809 <type name="FilePath">
2810 <ref>String</ref>
2811 <p>
2812 The absolute, normalized path of a file.
2813 </p>
2814 <p>
2815 If the format of a file path in a request is not valid, e.g. the
2816 path is not absolute or is not normalized, then an error of type
2817 <tt>INVALID_FILE_PATH_FORMAT</tt> will be generated.
2818 </p>
2819 </type>
2820 <type name="FoldingKind">
2821 <p>
2822 An enumeration of the kinds of folding regions.
2823 </p>
2824 <enum>
2825 <value><code>COMMENT</code></value>
2826 <value><code>CLASS_MEMBER</code></value>
2827 <value><code>DIRECTIVES</code></value>
2828 <value><code>DOCUMENTATION_COMMENT</code></value>
2829 <value><code>TOP_LEVEL_DECLARATION</code></value>
2830 </enum>
2831 </type>
2832 <type name="FoldingRegion">
2833 <p>
2834 A description of a region that can be folded.
2835 </p>
2836 <object>
2837 <field name="kind">
2838 <ref>FoldingKind</ref>
2839 <p>
2840 The kind of the region.
2841 </p>
2842 </field>
2843 <field name="offset">
2844 <ref>int</ref>
2845 <p>
2846 The offset of the region to be folded.
2847 </p>
2848 </field>
2849 <field name="length">
2850 <ref>int</ref>
2851 <p>
2852 The length of the region to be folded.
2853 </p>
2854 </field>
2855 </object>
2856 </type>
2857 <type name="GeneralAnalysisService">
2858 <p>
2859 An enumeration of the services provided by the analysis domain that ar e
2860 general in nature (that is, are not specific to some list of files).
2861 </p>
2862 <enum>
2863 <value><code>ANALYZED_FILES</code></value>
2864 </enum>
2865 </type>
2866 <type name="HighlightRegion">
2867 <p>
2868 A description of a region that could have special highlighting
2869 associated with it.
2870 </p>
2871 <object>
2872 <field name="type">
2873 <ref>HighlightRegionType</ref>
2874 <p>
2875 The type of highlight associated with the region.
2876 </p>
2877 </field>
2878 <field name="offset">
2879 <ref>int</ref>
2880 <p>
2881 The offset of the region to be highlighted.
2882 </p>
2883 </field>
2884 <field name="length">
2885 <ref>int</ref>
2886 <p>
2887 The length of the region to be highlighted.
2888 </p>
2889 </field>
2890 </object>
2891 </type>
2892 <type name="HighlightRegionType">
2893 <p>
2894 An enumeration of the kinds of highlighting that can be
2895 applied to files.
2896 </p>
2897 <enum>
2898 <value><code>ANNOTATION</code></value>
2899 <value><code>BUILT_IN</code></value>
2900 <value><code>CLASS</code></value>
2901 <value><code>COMMENT_BLOCK</code></value>
2902 <value><code>COMMENT_DOCUMENTATION</code></value>
2903 <value><code>COMMENT_END_OF_LINE</code></value>
2904 <value><code>CONSTRUCTOR</code></value>
2905 <value><code>DIRECTIVE</code></value>
2906 <value>
2907 <code>DYNAMIC_TYPE</code>
2908 <p>Only for version 1 of highlight.</p>
2909 </value>
2910 <value>
2911 <code>DYNAMIC_LOCAL_VARIABLE_DECLARATION</code>
2912 <p>Only for version 2 of highlight.</p>
2913 </value>
2914 <value>
2915 <code>DYNAMIC_LOCAL_VARIABLE_REFERENCE</code>
2916 <p>Only for version 2 of highlight.</p>
2917 </value>
2918 <value>
2919 <code>DYNAMIC_PARAMETER_DECLARATION</code>
2920 <p>Only for version 2 of highlight.</p>
2921 </value>
2922 <value>
2923 <code>DYNAMIC_PARAMETER_REFERENCE</code>
2924 <p>Only for version 2 of highlight.</p>
2925 </value>
2926 <value><code>ENUM</code></value>
2927 <value><code>ENUM_CONSTANT</code></value>
2928 <value>
2929 <code>FIELD</code>
2930 <p>Only for version 1 of highlight.</p>
2931 </value>
2932 <value>
2933 <code>FIELD_STATIC</code>
2934 <p>Only for version 1 of highlight.</p>
2935 </value>
2936 <value>
2937 <code>FUNCTION</code>
2938 <p>Only for version 1 of highlight.</p>
2939 </value>
2940 <value>
2941 <code>FUNCTION_DECLARATION</code>
2942 <p>Only for version 1 of highlight.</p>
2943 </value>
2944 <value><code>FUNCTION_TYPE_ALIAS</code></value>
2945 <value>
2946 <code>GETTER_DECLARATION</code>
2947 <p>Only for version 1 of highlight.</p>
2948 </value>
2949 <value><code>IDENTIFIER_DEFAULT</code></value>
2950 <value><code>IMPORT_PREFIX</code></value>
2951 <value>
2952 <code>INSTANCE_FIELD_DECLARATION</code>
2953 <p>Only for version 2 of highlight.</p>
2954 </value>
2955 <value>
2956 <code>INSTANCE_FIELD_REFERENCE</code>
2957 <p>Only for version 2 of highlight.</p>
2958 </value>
2959 <value>
2960 <code>INSTANCE_GETTER_DECLARATION</code>
2961 <p>Only for version 2 of highlight.</p>
2962 </value>
2963 <value>
2964 <code>INSTANCE_GETTER_REFERENCE</code>
2965 <p>Only for version 2 of highlight.</p>
2966 </value>
2967 <value>
2968 <code>INSTANCE_METHOD_DECLARATION</code>
2969 <p>Only for version 2 of highlight.</p>
2970 </value>
2971 <value>
2972 <code>INSTANCE_METHOD_REFERENCE</code>
2973 <p>Only for version 2 of highlight.</p>
2974 </value>
2975 <value>
2976 <code>INSTANCE_SETTER_DECLARATION</code>
2977 <p>Only for version 2 of highlight.</p>
2978 </value>
2979 <value>
2980 <code>INSTANCE_SETTER_REFERENCE</code>
2981 <p>Only for version 2 of highlight.</p>
2982 </value>
2983 <value>
2984 <code>INVALID_STRING_ESCAPE</code>
2985 <p>Only for version 2 of highlight.</p>
2986 </value>
2987 <value><code>KEYWORD</code></value>
2988 <value><code>LABEL</code></value>
2989 <value>
2990 <code>LIBRARY_NAME</code>
2991 <p>Only for version 2 of highlight.</p>
2992 </value>
2993 <value><code>LITERAL_BOOLEAN</code></value>
2994 <value><code>LITERAL_DOUBLE</code></value>
2995 <value><code>LITERAL_INTEGER</code></value>
2996 <value><code>LITERAL_LIST</code></value>
2997 <value><code>LITERAL_MAP</code></value>
2998 <value><code>LITERAL_STRING</code></value>
2999 <value>
3000 <code>LOCAL_FUNCTION_DECLARATION</code>
3001 <p>Only for version 2 of highlight.</p>
3002 </value>
3003 <value>
3004 <code>LOCAL_FUNCTION_REFERENCE</code>
3005 <p>Only for version 2 of highlight.</p>
3006 </value>
3007 <value>
3008 <code>LOCAL_VARIABLE</code>
3009 <p>Only for version 1 of highlight.</p>
3010 </value>
3011 <value><code>LOCAL_VARIABLE_DECLARATION</code></value>
3012 <value>
3013 <code>LOCAL_VARIABLE_REFERENCE</code>
3014 <p>Only for version 2 of highlight.</p>
3015 </value>
3016 <value>
3017 <code>METHOD</code>
3018 <p>Only for version 1 of highlight.</p>
3019 </value>
3020 <value>
3021 <code>METHOD_DECLARATION</code>
3022 <p>Only for version 1 of highlight.</p>
3023 </value>
3024 <value>
3025 <code>METHOD_DECLARATION_STATIC</code>
3026 <p>Only for version 1 of highlight.</p>
3027 </value>
3028 <value>
3029 <code>METHOD_STATIC</code>
3030 <p>Only for version 1 of highlight.</p>
3031 </value>
3032 <value>
3033 <code>PARAMETER</code>
3034 <p>Only for version 1 of highlight.</p>
3035 </value>
3036 <value>
3037 <code>SETTER_DECLARATION</code>
3038 <p>Only for version 1 of highlight.</p>
3039 </value>
3040 <value>
3041 <code>TOP_LEVEL_VARIABLE</code>
3042 <p>Only for version 1 of highlight.</p>
3043 </value>
3044 <value>
3045 <code>PARAMETER_DECLARATION</code>
3046 <p>Only for version 2 of highlight.</p>
3047 </value>
3048 <value>
3049 <code>PARAMETER_REFERENCE</code>
3050 <p>Only for version 2 of highlight.</p>
3051 </value>
3052 <value>
3053 <code>STATIC_FIELD_DECLARATION</code>
3054 <p>Only for version 2 of highlight.</p>
3055 </value>
3056 <value>
3057 <code>STATIC_GETTER_DECLARATION</code>
3058 <p>Only for version 2 of highlight.</p>
3059 </value>
3060 <value>
3061 <code>STATIC_GETTER_REFERENCE</code>
3062 <p>Only for version 2 of highlight.</p>
3063 </value>
3064 <value>
3065 <code>STATIC_METHOD_DECLARATION</code>
3066 <p>Only for version 2 of highlight.</p>
3067 </value>
3068 <value>
3069 <code>STATIC_METHOD_REFERENCE</code>
3070 <p>Only for version 2 of highlight.</p>
3071 </value>
3072 <value>
3073 <code>STATIC_SETTER_DECLARATION</code>
3074 <p>Only for version 2 of highlight.</p>
3075 </value>
3076 <value>
3077 <code>STATIC_SETTER_REFERENCE</code>
3078 <p>Only for version 2 of highlight.</p>
3079 </value>
3080 <value>
3081 <code>TOP_LEVEL_FUNCTION_DECLARATION</code>
3082 <p>Only for version 2 of highlight.</p>
3083 </value>
3084 <value>
3085 <code>TOP_LEVEL_FUNCTION_REFERENCE</code>
3086 <p>Only for version 2 of highlight.</p>
3087 </value>
3088 <value>
3089 <code>TOP_LEVEL_GETTER_DECLARATION</code>
3090 <p>Only for version 2 of highlight.</p>
3091 </value>
3092 <value>
3093 <code>TOP_LEVEL_GETTER_REFERENCE</code>
3094 <p>Only for version 2 of highlight.</p>
3095 </value>
3096 <value>
3097 <code>TOP_LEVEL_SETTER_DECLARATION</code>
3098 <p>Only for version 2 of highlight.</p>
3099 </value>
3100 <value>
3101 <code>TOP_LEVEL_SETTER_REFERENCE</code>
3102 <p>Only for version 2 of highlight.</p>
3103 </value>
3104 <value>
3105 <code>TOP_LEVEL_VARIABLE_DECLARATION</code>
3106 <p>Only for version 2 of highlight.</p>
3107 </value>
3108 <value><code>TYPE_NAME_DYNAMIC</code></value>
3109 <value><code>TYPE_PARAMETER</code></value>
3110 <value>
3111 <code>UNRESOLVED_INSTANCE_MEMBER_REFERENCE</code>
3112 <p>Only for version 2 of highlight.</p>
3113 </value>
3114 <value>
3115 <code>VALID_STRING_ESCAPE</code>
3116 <p>Only for version 2 of highlight.</p>
3117 </value>
3118 </enum>
3119 </type>
3120 <type name="HoverInformation">
3121 <p>
3122 The hover information associated with a specific location.
3123 </p>
3124 <object>
3125 <field name="offset">
3126 <ref>int</ref>
3127 <p>
3128 The offset of the range of characters that encompasses the
3129 cursor position and has the same hover information as the
3130 cursor position.
3131 </p>
3132 </field>
3133 <field name="length">
3134 <ref>int</ref>
3135 <p>
3136 The length of the range of characters that encompasses the
3137 cursor position and has the same hover information as the
3138 cursor position.
3139 </p>
3140 </field>
3141 <field name="containingLibraryPath" optional="true">
3142 <ref>String</ref>
3143 <p>
3144 The path to the defining compilation unit of the library
3145 in which the referenced element is declared. This data is
3146 omitted if there is no referenced element, or if the
3147 element is declared inside an HTML file.
3148 </p>
3149 </field>
3150 <field name="containingLibraryName" optional="true">
3151 <ref>String</ref>
3152 <p>
3153 The name of the library in which the referenced element is
3154 declared. This data is omitted if there is no referenced
3155 element, or if the element is declared inside an HTML
3156 file.
3157 </p>
3158 </field>
3159 <field name="containingClassDescription" optional="true">
3160 <ref>String</ref>
3161 <p>
3162 A human-readable description of the class declaring the element
3163 being referenced. This data is omitted if there is no referenced
3164 element, or if the element is not a class member.
3165 </p>
3166 </field>
3167 <field name="dartdoc" optional="true">
3168 <ref>String</ref>
3169 <p>
3170 The dartdoc associated with the referenced element. Other
3171 than the removal of the comment delimiters, including
3172 leading asterisks in the case of a block comment, the
3173 dartdoc is unprocessed markdown. This data is omitted if
3174 there is no referenced element, or if the element has no
3175 dartdoc.
3176 </p>
3177 </field>
3178 <field name="elementDescription" optional="true">
3179 <ref>String</ref>
3180 <p>
3181 A human-readable description of the element being
3182 referenced. This data is omitted if there is no referenced
3183 element.
3184 </p>
3185 </field>
3186 <field name="elementKind" optional="true">
3187 <ref>String</ref>
3188 <p>
3189 A human-readable description of the kind of element being
3190 referenced (such as "class" or "function type
3191 alias"). This data is omitted if there is no referenced
3192 element.
3193 </p>
3194 </field>
3195 <field name="isDeprecated" optional="true">
3196 <ref>bool</ref>
3197 <p>
3198 True if the referenced element is deprecated.
3199 </p>
3200 </field>
3201 <field name="parameter" optional="true">
3202 <ref>String</ref>
3203 <p>
3204 A human-readable description of the parameter
3205 corresponding to the expression being hovered over. This
3206 data is omitted if the location is not in an argument to a
3207 function.
3208 </p>
3209 </field>
3210 <field name="propagatedType" optional="true">
3211 <ref>String</ref>
3212 <p>
3213 The name of the propagated type of the expression. This
3214 data is omitted if the location does not correspond to an
3215 expression or if there is no propagated type information.
3216 </p>
3217 </field>
3218 <field name="staticType" optional="true">
3219 <ref>String</ref>
3220 <p>
3221 The name of the static type of the expression. This data
3222 is omitted if the location does not correspond to an
3223 expression.
3224 </p>
3225 </field>
3226 </object>
3227 </type>
3228 <type name="ImplementedClass">
3229 <p>
3230 A description of a class that is implemented or extended.
3231 </p>
3232 <object>
3233 <field name="offset">
3234 <ref>int</ref>
3235 <p>
3236 The offset of the name of the implemented class.
3237 </p>
3238 </field>
3239 <field name="length">
3240 <ref>int</ref>
3241 <p>
3242 The length of the name of the implemented class.
3243 </p>
3244 </field>
3245 </object>
3246 </type>
3247 <type name="ImplementedMember">
3248 <p>
3249 A description of a class member that is implemented or overridden.
3250 </p>
3251 <object>
3252 <field name="offset">
3253 <ref>int</ref>
3254 <p>
3255 The offset of the name of the implemented member.
3256 </p>
3257 </field>
3258 <field name="length">
3259 <ref>int</ref>
3260 <p>
3261 The length of the name of the implemented member.
3262 </p>
3263 </field>
3264 </object>
3265 </type>
3266 <type name="LinkedEditGroup">
3267 <p>
3268 A collection of positions that should be linked (edited
3269 simultaneously) for the purposes of updating code after a
3270 source change. For example, if a set of edits introduced a
3271 new variable name, the group would contain all of the
3272 positions of the variable name so that if the client wanted
3273 to let the user edit the variable name after the operation,
3274 all occurrences of the name could be edited simultaneously.
3275 </p>
3276 <object>
3277 <field name="positions">
3278 <list><ref>Position</ref></list>
3279 <p>
3280 The positions of the regions that should be edited
3281 simultaneously.
3282 </p>
3283 </field>
3284 <field name="length">
3285 <ref>int</ref>
3286 <p>
3287 The length of the regions that should be edited
3288 simultaneously.
3289 </p>
3290 </field>
3291 <field name="suggestions">
3292 <list><ref>LinkedEditSuggestion</ref></list>
3293 <p>
3294 Pre-computed suggestions for what every region might
3295 want to be changed to.
3296 </p>
3297 </field>
3298 </object>
3299 </type>
3300 <type name="LinkedEditSuggestion">
3301 <p>
3302 A suggestion of a value that could be used to replace all of
3303 the linked edit regions in a LinkedEditGroup.
3304 </p>
3305 <object>
3306 <field name="value">
3307 <ref>String</ref>
3308 <p>
3309 The value that could be used to replace all of the linked
3310 edit regions.
3311 </p>
3312 </field>
3313 <field name="kind">
3314 <ref>LinkedEditSuggestionKind</ref>
3315 <p>
3316 The kind of value being proposed.
3317 </p>
3318 </field>
3319 </object>
3320 </type>
3321 <type name="LinkedEditSuggestionKind">
3322 <p>
3323 An enumeration of the kind of values that can be suggested
3324 for a linked edit.
3325 </p>
3326 <enum>
3327 <value><code>METHOD</code></value>
3328 <value><code>PARAMETER</code></value>
3329 <value><code>TYPE</code></value>
3330 <value><code>VARIABLE</code></value>
3331 </enum>
3332 </type>
3333 <type name="Location">
3334 <p>
3335 A location (character range) within a file.
3336 </p>
3337 <object>
3338 <field name="file">
3339 <ref>FilePath</ref>
3340 <p>
3341 The file containing the range.
3342 </p>
3343 </field>
3344 <field name="offset">
3345 <ref>int</ref>
3346 <p>
3347 The offset of the range.
3348 </p>
3349 </field>
3350 <field name="length">
3351 <ref>int</ref>
3352 <p>
3353 The length of the range.
3354 </p>
3355 </field>
3356 <field name="startLine">
3357 <ref>int</ref>
3358 <p>
3359 The one-based index of the line containing the first
3360 character of the range.
3361 </p>
3362 </field>
3363 <field name="startColumn">
3364 <ref>int</ref>
3365 <p>
3366 The one-based index of the column containing the first
3367 character of the range.
3368 </p>
3369 </field>
3370 </object>
3371 </type>
3372 <type name="NavigationRegion">
3373 <p>
3374 A description of a region from which the user can navigate to
3375 the declaration of an element.
3376 </p>
3377 <object>
3378 <field name="offset">
3379 <ref>int</ref>
3380 <p>
3381 The offset of the region from which the user can navigate.
3382 </p>
3383 </field>
3384 <field name="length">
3385 <ref>int</ref>
3386 <p>
3387 The length of the region from which the user can navigate.
3388 </p>
3389 </field>
3390 <field name="targets">
3391 <list><ref>int</ref></list>
3392 <p>
3393 The indexes of the targets (in the enclosing navigation response)
3394 to which the given region is bound. By opening the target, clients
3395 can implement one form of navigation. This list cannot be empty.
3396 </p>
3397 </field>
3398 </object>
3399 </type>
3400 <type name="NavigationTarget">
3401 <p>
3402 A description of a target to which the user can navigate.
3403 </p>
3404 <object>
3405 <field name="kind">
3406 <ref>ElementKind</ref>
3407 <p>
3408 The kind of the element.
3409 </p>
3410 </field>
3411 <field name="fileIndex">
3412 <ref>int</ref>
3413 <p>
3414 The index of the file (in the enclosing navigation response) to
3415 navigate to.
3416 </p>
3417 </field>
3418 <field name="offset">
3419 <ref>int</ref>
3420 <p>
3421 The offset of the region to which the user can navigate.
3422 </p>
3423 </field>
3424 <field name="length">
3425 <ref>int</ref>
3426 <p>
3427 The length of the region to which the user can navigate.
3428 </p>
3429 </field>
3430 <field name="startLine">
3431 <ref>int</ref>
3432 <p>
3433 The one-based index of the line containing the first
3434 character of the region.
3435 </p>
3436 </field>
3437 <field name="startColumn">
3438 <ref>int</ref>
3439 <p>
3440 The one-based index of the column containing the first
3441 character of the region.
3442 </p>
3443 </field>
3444 </object>
3445 </type>
3446 <type name="Occurrences">
3447 <p>
3448 A description of the references to a single element within a
3449 single file.
3450 </p>
3451 <object>
3452 <field name="element">
3453 <ref>Element</ref>
3454 <p>
3455 The element that was referenced.
3456 </p>
3457 </field>
3458 <field name="offsets">
3459 <list><ref>int</ref></list>
3460 <p>
3461 The offsets of the name of the referenced element within
3462 the file.
3463 </p>
3464 </field>
3465 <field name="length">
3466 <ref>int</ref>
3467 <p>
3468 The length of the name of the referenced element.
3469 </p>
3470 </field>
3471 </object>
3472 </type>
3473 <type name="Outline">
3474 <p>
3475 An node in the outline structure of a file.
3476 </p>
3477 <object>
3478 <field name="element">
3479 <ref>Element</ref>
3480 <p>
3481 A description of the element represented by this node.
3482 </p>
3483 </field>
3484 <field name="offset">
3485 <ref>int</ref>
3486 <p>
3487 The offset of the first character of the element. This is
3488 different than the offset in the Element, which if the
3489 offset of the name of the element. It can be used, for
3490 example, to map locations in the file back to an outline.
3491 </p>
3492 </field>
3493 <field name="length">
3494 <ref>int</ref>
3495 <p>
3496 The length of the element.
3497 </p>
3498 </field>
3499 <field name="children" optional="true">
3500 <list><ref>Outline</ref></list>
3501 <p>
3502 The children of the node. The field will be omitted if the
3503 node has no children.
3504 </p>
3505 </field>
3506 </object>
3507 </type>
3508 <type name="Override">
3509 <p>
3510 A description of a member that overrides an inherited member.
3511 </p>
3512 <object>
3513 <field name="offset">
3514 <ref>int</ref>
3515 <p>
3516 The offset of the name of the overriding member.
3517 </p>
3518 </field>
3519 <field name="length">
3520 <ref>int</ref>
3521 <p>
3522 The length of the name of the overriding member.
3523 </p>
3524 </field>
3525 <field name="superclassMember" optional="true">
3526 <ref>OverriddenMember</ref>
3527 <p>
3528 The member inherited from a superclass that is overridden
3529 by the overriding member. The field is omitted if there is
3530 no superclass member, in which case there must be at least
3531 one interface member.
3532 </p>
3533 </field>
3534 <field name="interfaceMembers" optional="true">
3535 <list><ref>OverriddenMember</ref></list>
3536 <p>
3537 The members inherited from interfaces that are overridden
3538 by the overriding member. The field is omitted if there
3539 are no interface members, in which case there must be a
3540 superclass member.
3541 </p>
3542 </field>
3543 </object>
3544 </type>
3545 <type name="OverriddenMember">
3546 <p>
3547 A description of a member that is being overridden.
3548 </p>
3549 <object>
3550 <field name="element">
3551 <ref>Element</ref>
3552 <p>
3553 The element that is being overridden.
3554 </p>
3555 </field>
3556 <field name="className">
3557 <ref>String</ref>
3558 <p>
3559 The name of the class in which the member is defined.
3560 </p>
3561 </field>
3562 </object>
3563 </type>
3564 <type name="Position">
3565 <p>
3566 A position within a file.
3567 </p>
3568 <object>
3569 <field name="file">
3570 <ref>FilePath</ref>
3571 <p>
3572 The file containing the position.
3573 </p>
3574 </field>
3575 <field name="offset">
3576 <ref>int</ref>
3577 <p>
3578 The offset of the position.
3579 </p>
3580 </field>
3581 </object>
3582 </type>
3583 <type name="PubStatus">
3584 <p>
3585 An indication of the current state of pub execution.
3586 </p>
3587 <object>
3588 <field name="isListingPackageDirs">
3589 <ref>bool</ref>
3590 <p>
3591 True if the server is currently running pub to produce a list of
3592 package directories.
3593 </p>
3594 </field>
3595 </object>
3596 </type>
3597 <type name="RefactoringKind">
3598 <p>
3599 An enumeration of the kinds of refactorings that can be
3600 created.
3601 </p>
3602 <enum>
3603 <value><code>CONVERT_GETTER_TO_METHOD</code></value>
3604 <value><code>CONVERT_METHOD_TO_GETTER</code></value>
3605 <value><code>EXTRACT_LOCAL_VARIABLE</code></value>
3606 <value><code>EXTRACT_METHOD</code></value>
3607 <value><code>INLINE_LOCAL_VARIABLE</code></value>
3608 <value><code>INLINE_METHOD</code></value>
3609 <value><code>MOVE_FILE</code></value>
3610 <value><code>RENAME</code></value>
3611 <value><code>SORT_MEMBERS</code></value>
3612 </enum>
3613 </type>
3614 <type name="RefactoringMethodParameter">
3615 <p>
3616 A description of a parameter in a method refactoring.
3617 </p>
3618 <object>
3619 <field name="id" optional="true">
3620 <ref>String</ref>
3621 <p>
3622 The unique identifier of the parameter.
3623 Clients may omit this field for the parameters they want to add.
3624 </p>
3625 </field>
3626 <field name="kind">
3627 <ref>RefactoringMethodParameterKind</ref>
3628 <p>
3629 The kind of the parameter.
3630 </p>
3631 </field>
3632 <field name="type">
3633 <ref>String</ref>
3634 <p>
3635 The type that should be given to the parameter, or the return type
3636 of the parameter's function type.
3637 </p>
3638 </field>
3639 <field name="name">
3640 <ref>String</ref>
3641 <p>
3642 The name that should be given to the parameter.
3643 </p>
3644 </field>
3645 <field name="parameters" optional="true">
3646 <ref>String</ref>
3647 <p>
3648 The parameter list of the parameter's function type.
3649 If the parameter is not of a function type, this field will
3650 not be defined. If the function type has zero parameters, this
3651 field will have a value of "()".
3652 </p>
3653 </field>
3654 </object>
3655 </type>
3656 <type name="RefactoringFeedback">
3657 <p>
3658 An abstract superclass of all refactoring feedbacks.
3659 </p>
3660 <object>
3661 </object>
3662 </type>
3663 <type name="RefactoringOptions">
3664 <p>
3665 An abstract superclass of all refactoring options.
3666 </p>
3667 <object>
3668 </object>
3669 </type>
3670 <type name="RefactoringMethodParameterKind">
3671 <p>
3672 An enumeration of the kinds of parameters.
3673 </p>
3674 <enum>
3675 <value><code>REQUIRED</code></value>
3676 <value><code>POSITIONAL</code></value>
3677 <value><code>NAMED</code></value>
3678 </enum>
3679 </type>
3680 <type name="RefactoringProblem">
3681 <p>
3682 A description of a problem related to a refactoring.
3683 </p>
3684 <object>
3685 <field name="severity">
3686 <ref>RefactoringProblemSeverity</ref>
3687 <p>
3688 The severity of the problem being represented.
3689 </p>
3690 </field>
3691 <field name="message">
3692 <ref>String</ref>
3693 <p>
3694 A human-readable description of the problem being
3695 represented.
3696 </p>
3697 </field>
3698 <field name="location" optional="true">
3699 <ref>Location</ref>
3700 <p>
3701 The location of the problem being represented.
3702 This field is omitted unless there is a specific location
3703 associated with the problem (such as a location where an element
3704 being renamed will be shadowed).
3705 </p>
3706 </field>
3707 </object>
3708 </type>
3709 <type name="RefactoringProblemSeverity">
3710 <p>
3711 An enumeration of the severities of problems that can be
3712 returned by the refactoring requests.
3713 </p>
3714 <enum>
3715 <value>
3716 <code>INFO</code>
3717 <p>A minor code problem. No example, because it is not used yet.
3718 </p>
3719 </value>
3720 <value>
3721 <code>WARNING</code>
3722 <p>A minor code problem. For example names of local variables
3723 should be camel case and start with a lower case letter. Staring
3724 the name of a variable with an upper case is OK from the language
3725 point of view, but it is nice to warn the user.
3726 </p>
3727 </value>
3728 <value>
3729 <code>ERROR</code>
3730 <p>The refactoring technically can be performed, but there is a
3731 logical problem. For example the name of a local variable being
3732 extracted conflicts with another name in the scope, or
3733 duplicate parameter names in the method being extracted, or
3734 a conflict between a parameter name and a local variable, etc.
3735 In some cases the location of the problem is also provided, so
3736 the IDE can show user the location and the problem, and let the
3737 user decide whether she wants to perform the refactoring. For
3738 example the name conflict might be expected, and the user wants
3739 to fix it afterwards.
3740 </p>
3741 </value>
3742 <value>
3743 <code>FATAL</code>
3744 <p>A fatal error, which prevents performing the refactoring.
3745 For example the name of a local variable being extracted is not a
3746 valid identifier, or selection is not a valid expression.
3747 </p>
3748 </value>
3749 </enum>
3750 </type>
3751 <type name="RemoveContentOverlay">
3752 <p>
3753 A directive to remove an existing file content overlay.
3754 After processing this directive, the file contents will once
3755 again be read from the file system.
3756 </p>
3757 <p>
3758 If this directive is used on a file that doesn't currently
3759 have a content overlay, it has no effect.
3760 </p>
3761 <object>
3762 <field name="type" value="remove"><ref>String</ref></field>
3763 </object>
3764 </type>
3765 <type name="RequestError">
3766 <p>
3767 An indication of a problem with the execution of the server,
3768 typically in response to a request.
3769 </p>
3770 <object>
3771 <field name="code">
3772 <ref>RequestErrorCode</ref>
3773 <p>
3774 A code that uniquely identifies the error that occurred.
3775 </p>
3776 </field>
3777 <field name="message">
3778 <ref>String</ref>
3779 <p>
3780 A short description of the error.
3781 </p>
3782 </field>
3783 <field name="stackTrace" optional="true">
3784 <ref>String</ref>
3785 <p>
3786 The stack trace associated with processing the request,
3787 used for debugging the server.
3788 </p>
3789 </field>
3790 </object>
3791 </type>
3792 <type name="RequestErrorCode">
3793 <p>
3794 An enumeration of the types of errors that can occur in the
3795 execution of the server.
3796 </p>
3797 <enum>
3798 <value>
3799 <code>CONTENT_MODIFIED</code>
3800 <p>
3801 An "analysis.getErrors" or "analysis.getNavigation" request could
3802 not be satisfied because the content of the file changed before
3803 the requested results could be computed.
3804 </p>
3805 </value>
3806 <value>
3807 <code>DEBUG_PORT_COULD_NOT_BE_OPENED</code>
3808 <p>
3809 The server was unable to open a port for the diagnostic server.
3810 </p>
3811 </value>
3812 <value>
3813 <code>FILE_NOT_ANALYZED</code>
3814 <p>
3815 A request specified a FilePath which does not match a file in
3816 an analysis root, or the requested operation is not available
3817 for the file.
3818 </p>
3819 </value>
3820 <value>
3821 <code>FORMAT_INVALID_FILE</code>
3822 <p>
3823 An "edit.format" request specified a FilePath
3824 which does not match a Dart file in an analysis root.
3825 </p>
3826 </value>
3827 <value>
3828 <code>FORMAT_WITH_ERRORS</code>
3829 <p>
3830 An "edit.format" request specified a file that contains syntax
3831 errors.
3832 </p>
3833 </value>
3834 <value>
3835 <code>GET_ERRORS_INVALID_FILE</code>
3836 <p>
3837 An "analysis.getErrors" request specified a FilePath
3838 which does not match a file currently subject to
3839 analysis.
3840 </p>
3841 </value>
3842 <value>
3843 <code>GET_NAVIGATION_INVALID_FILE</code>
3844 <p>
3845 An "analysis.getNavigation" request specified a FilePath
3846 which does not match a file currently subject to
3847 analysis.
3848 </p>
3849 </value>
3850 <value>
3851 <code>GET_REACHABLE_SOURCES_INVALID_FILE</code>
3852 <p>
3853 An "analysis.getReachableSources" request specified a FilePath
3854 which does not match a file currently subject to
3855 analysis.
3856 </p>
3857 </value>
3858 <value>
3859 <code>INVALID_ANALYSIS_ROOT</code>
3860 <p>
3861 A path passed as an argument to a request (such as
3862 analysis.reanalyze) is required to be an analysis root, but isn't.
3863 </p>
3864 </value>
3865 <value>
3866 <code>INVALID_EXECUTION_CONTEXT</code>
3867 <p>
3868 The context root used to create an execution context does not
3869 exist.
3870 </p>
3871 </value>
3872 <value>
3873 <code>INVALID_FILE_PATH_FORMAT</code>
3874 <p>
3875 The format of the given file path is invalid, e.g. is not
3876 absolute and normalized.
3877 </p>
3878 </value>
3879 <value>
3880 <code>INVALID_OVERLAY_CHANGE</code>
3881 <p>
3882 An "analysis.updateContent" request contained a
3883 ChangeContentOverlay object which can't be applied, due
3884 to an edit having an offset or length that is out of
3885 range.
3886 </p>
3887 </value>
3888 <value>
3889 <code>INVALID_PARAMETER</code>
3890 <p>
3891 One of the method parameters was invalid.
3892 </p>
3893 </value>
3894 <value>
3895 <code>INVALID_REQUEST</code>
3896 <p>
3897 A malformed request was received.
3898 </p>
3899 </value>
3900 <value>
3901 <code>ORGANIZE_DIRECTIVES_ERROR</code>
3902 <p>
3903 An "edit.organizeDirectives" request specified a Dart file that
3904 cannot be analyzed. The reason is described in the message.
3905 </p>
3906 </value>
3907 <value>
3908 <code>REFACTORING_REQUEST_CANCELLED</code>
3909 <p>
3910 Another refactoring request was received during processing of
3911 this one.
3912 </p>
3913 </value>
3914 <value>
3915 <code>SERVER_ALREADY_STARTED</code>
3916 <p>
3917 The analysis server has already been started (and hence
3918 won't accept new connections).
3919 </p>
3920 <p>
3921 This error is included for future expansion; at present
3922 the analysis server can only speak to one client at a
3923 time so this error will never occur.
3924 </p>
3925 </value>
3926 <value>
3927 <code>SERVER_ERROR</code>
3928 <p>
3929 An internal error occurred in the analysis server.
3930 Also see the server.error notification.
3931 </p>
3932 </value>
3933 <value>
3934 <code>SORT_MEMBERS_INVALID_FILE</code>
3935 <p>
3936 An "edit.sortMembers" request specified a FilePath
3937 which does not match a Dart file in an analysis root.
3938 </p>
3939 </value>
3940 <value>
3941 <code>SORT_MEMBERS_PARSE_ERRORS</code>
3942 <p>
3943 An "edit.sortMembers" request specified a Dart file that has
3944 scan or parse errors.
3945 </p>
3946 </value>
3947 <value>
3948 <code>UNANALYZED_PRIORITY_FILES</code>
3949 <p>
3950 An "analysis.setPriorityFiles" request includes one or
3951 more files that are not being analyzed.
3952 </p>
3953 <p>
3954 This is a legacy error; it will be removed before the
3955 API reaches version 1.0.
3956 </p>
3957 <!-- TODO(paulberry): remove this error and the code that
3958 generates it. --> 2889 generates it. -->
3959 </value> 2890 </value>
3960 <value> 2891 <value>
3961 <code>UNKNOWN_REQUEST</code> 2892 <code>UNKNOWN_REQUEST</code>
3962 <p> 2893 <p>
3963 A request was received which the analysis server does 2894 A request was received which the analysis server does
3964 not recognize, or cannot handle in its current 2895 not recognize, or cannot handle in its current
3965 configuration. 2896 configuration.
3966 </p> 2897 </p>
3967 </value> 2898 </value>
3968 <value> 2899 <value>
3969 <code>UNKNOWN_SOURCE</code> 2900 <code>UNKNOWN_SOURCE</code>
3970 <p> 2901 <p>
3971 The analysis server was requested to perform an action 2902 The analysis server was requested to perform an action
3972 on a source that does not exist. 2903 on a source that does not exist.
3973 </p> 2904 </p>
3974 </value> 2905 </value>
3975 <value> 2906 <value>
3976 <code>UNSUPPORTED_FEATURE</code> 2907 <code>UNSUPPORTED_FEATURE</code>
3977 <p> 2908 <p>
3978 The analysis server was requested to perform an action 2909 The analysis server was requested to perform an action
3979 which is not supported. 2910 which is not supported.
3980 </p> 2911 </p>
3981 <p> 2912 <p>
3982 This is a legacy error; it will be removed before the 2913 This is a legacy error; it will be removed before the
3983 API reaches version 1.0. 2914 API reaches version 1.0.
3984 </p> 2915 </p>
3985 <!-- TODO(paulberry): remove this error and the code that 2916 <!-- TODO(paulberry): remove this error and the code that
3986 generates it. --> 2917 generates it. -->
3987 </value> 2918 </value>
3988 </enum> 2919 </enum>
3989 </type> 2920 </type>
3990 <type name="SearchId"> 2921 <type name="SearchId">
3991 <ref>String</ref> 2922 <ref>String</ref>
3992 <p> 2923 <p>
3993 An identifier used to associate search results with a search 2924 An identifier used to associate search results with a search
3994 request. 2925 request.
3995 </p> 2926 </p>
3996 </type> 2927 </type>
3997 <type name="SearchResult"> 2928 <type name="SearchResult">
3998 <p> 2929 <p>
3999 A single result from a search request. 2930 A single result from a search request.
4000 </p> 2931 </p>
4001 <object> 2932 <object>
4002 <field name="location"> 2933 <field name="location">
4003 <ref>Location</ref> 2934 <ref>Location</ref>
4004 <p> 2935 <p>
4005 The location of the code that matched the search criteria. 2936 The location of the code that matched the search criteria.
4006 </p> 2937 </p>
4007 </field> 2938 </field>
4008 <field name="kind"> 2939 <field name="kind">
4009 <ref>SearchResultKind</ref> 2940 <ref>SearchResultKind</ref>
4010 <p> 2941 <p>
4011 The kind of element that was found or the kind of 2942 The kind of element that was found or the kind of
4012 reference that was found. 2943 reference that was found.
4013 </p> 2944 </p>
4014 </field> 2945 </field>
4015 <field name="isPotential"> 2946 <field name="isPotential">
4016 <ref>bool</ref> 2947 <ref>bool</ref>
4017 <p> 2948 <p>
4018 True if the result is a potential match but cannot be 2949 True if the result is a potential match but cannot be
4019 confirmed to be a match. For example, if all references to 2950 confirmed to be a match. For example, if all references to
4020 a method m defined in some class were requested, and a 2951 a method m defined in some class were requested, and a
4021 reference to a method m from an unknown class were found, 2952 reference to a method m from an unknown class were found,
4022 it would be marked as being a potential match. 2953 it would be marked as being a potential match.
4023 </p> 2954 </p>
4024 </field> 2955 </field>
4025 <field name="path"> 2956 <field name="path">
4026 <list><ref>Element</ref></list> 2957 <list>
4027 <p> 2958 <ref>Element</ref>
4028 The elements that contain the result, starting with the 2959 </list>
4029 most immediately enclosing ancestor and ending with the 2960 <p>
4030 library. 2961 The elements that contain the result, starting with the
4031 </p> 2962 most immediately enclosing ancestor and ending with the
4032 </field> 2963 library.
4033 </object> 2964 </p>
4034 </type> 2965 </field>
4035 <type name="SearchResultKind"> 2966 </object>
4036 <p> 2967 </type>
4037 An enumeration of the kinds of search results returned by the 2968 <type name="SearchResultKind">
4038 search domain. 2969 <p>
4039 </p> 2970 An enumeration of the kinds of search results returned by the
4040 <enum> 2971 search domain.
4041 <value> 2972 </p>
4042 <code>DECLARATION</code> 2973 <enum>
4043 <p> 2974 <value>
4044 The declaration of an element. 2975 <code>DECLARATION</code>
4045 </p> 2976 <p>
4046 </value> 2977 The declaration of an element.
4047 <value> 2978 </p>
4048 <code>INVOCATION</code> 2979 </value>
4049 <p> 2980 <value>
4050 The invocation of a function or method. 2981 <code>INVOCATION</code>
4051 </p> 2982 <p>
4052 </value> 2983 The invocation of a function or method.
4053 <value> 2984 </p>
4054 <code>READ</code> 2985 </value>
4055 <p> 2986 <value>
4056 A reference to a field, parameter or variable where it is being re ad. 2987 <code>READ</code>
4057 </p> 2988 <p>
4058 </value> 2989 A reference to a field, parameter or variable where it is being read.
4059 <value> 2990 </p>
4060 <code>READ_WRITE</code> 2991 </value>
4061 <p> 2992 <value>
4062 A reference to a field, parameter or variable where it is being re ad and written. 2993 <code>READ_WRITE</code>
4063 </p> 2994 <p>
4064 </value> 2995 A reference to a field, parameter or variable where it is being read
4065 <value> 2996 and written.
4066 <code>REFERENCE</code> 2997 </p>
4067 <p> 2998 </value>
4068 A reference to an element. 2999 <value>
4069 </p> 3000 <code>REFERENCE</code>
4070 </value> 3001 <p>
4071 <value> 3002 A reference to an element.
4072 <code>UNKNOWN</code> 3003 </p>
4073 <p> 3004 </value>
4074 Some other kind of search result. 3005 <value>
4075 </p> 3006 <code>UNKNOWN</code>
4076 </value> 3007 <p>
4077 <value> 3008 Some other kind of search result.
4078 <code>WRITE</code> 3009 </p>
4079 <p> 3010 </value>
4080 A reference to a field, parameter or variable where it is being wr itten. 3011 <value>
4081 </p> 3012 <code>WRITE</code>
4082 </value> 3013 <p>
4083 </enum> 3014 A reference to a field, parameter or variable where it is being
4084 </type> 3015 written.
4085 <type name="ServerService"> 3016 </p>
4086 <p> 3017 </value>
4087 An enumeration of the services provided by the server domain. 3018 </enum>
4088 </p> 3019 </type>
4089 <enum> 3020 <type name="ServerService">
4090 <value><code>STATUS</code></value> 3021 <p>
4091 </enum> 3022 An enumeration of the services provided by the server domain.
4092 </type> 3023 </p>
4093 <type name="SourceChange"> 3024 <enum>
4094 <p> 3025 <value><code>STATUS</code></value>
4095 A description of a set of edits that implement a single 3026 </enum>
4096 conceptual change. 3027 </type>
4097 </p> 3028 <type name="TypeHierarchyItem">
4098 <object> 3029 <p>
4099 <field name="message"> 3030 A representation of a class in a type hierarchy.
4100 <ref>String</ref> 3031 </p>
4101 <p> 3032 <object>
4102 A human-readable description of the change to be applied. 3033 <field name="classElement">
4103 </p> 3034 <ref>Element</ref>
4104 </field> 3035 <p>
4105 <field name="edits"> 3036 The class element represented by this item.
4106 <list><ref>SourceFileEdit</ref></list> 3037 </p>
4107 <p> 3038 </field>
4108 A list of the edits used to effect the change, grouped by 3039 <field name="displayName" optional="true">
4109 file. 3040 <ref>String</ref>
4110 </p> 3041 <p>
4111 </field> 3042 The name to be displayed for the class. This field will be
4112 <field name="linkedEditGroups"> 3043 omitted if the display name is the same as the name of the
4113 <list><ref>LinkedEditGroup</ref></list> 3044 element. The display name is different if there is
4114 <p> 3045 additional type information to be displayed, such as type
4115 A list of the linked editing groups used to customize 3046 arguments.
4116 the changes that were made. 3047 </p>
4117 </p> 3048 </field>
4118 </field> 3049 <field name="memberElement" optional="true">
4119 <field name="selection" optional="true"> 3050 <ref>Element</ref>
4120 <ref>Position</ref> 3051 <p>
4121 <p> 3052 The member in the class corresponding to the member on
4122 The position that should be selected after the edits 3053 which the hierarchy was requested. This field will be
4123 have been applied. 3054 omitted if the hierarchy was not requested for a member or
4124 </p> 3055 if the class does not have a corresponding member.
4125 </field> 3056 </p>
4126 </object> 3057 </field>
4127 </type> 3058 <field name="superclass" optional="true">
4128 <type name="SourceEdit"> 3059 <ref>int</ref>
4129 <p> 3060 <p>
4130 A description of a single change to a single file. 3061 The index of the item representing the superclass of
4131 </p> 3062 this class. This field will be omitted if this item
4132 <object> 3063 represents the class Object.
4133 <field name="offset"> 3064 </p>
4134 <ref>int</ref> 3065 </field>
4135 <p> 3066 <field name="interfaces">
4136 The offset of the region to be modified. 3067 <list>
4137 </p> 3068 <ref>int</ref>
4138 </field> 3069 </list>
4139 <field name="length"> 3070 <p>
4140 <ref>int</ref> 3071 The indexes of the items representing the interfaces
4141 <p> 3072 implemented by this class. The list will be empty if
4142 The length of the region to be modified. 3073 there are no implemented interfaces.
4143 </p> 3074 </p>
4144 </field> 3075 </field>
4145 <field name="replacement"> 3076 <field name="mixins">
4146 <ref>String</ref> 3077 <list>
4147 <p> 3078 <ref>int</ref>
4148 The code that is to replace the specified region in the 3079 </list>
4149 original code. 3080 <p>
4150 </p> 3081 The indexes of the items representing the mixins
4151 </field> 3082 referenced by this class. The list will be empty if
4152 <field name="id" optional="true"> 3083 there are no classes mixed in to this class.
4153 <ref>String</ref> 3084 </p>
4154 <p> 3085 </field>
4155 An identifier that uniquely identifies this source edit from other 3086 <field name="subclasses">
4156 edits in the same response. This field is omitted unless a 3087 <list>
4157 containing structure needs to be able to identify the edit for 3088 <ref>int</ref>
4158 some reason. 3089 </list>
4159 </p> 3090 <p>
4160 <p> 3091 The indexes of the items representing the subtypes of
4161 For example, some refactoring operations can produce edits that 3092 this class. The list will be empty if there are no
4162 might not be appropriate (referred to as potential edits). Such 3093 subtypes or if this item represents a supertype of the
4163 edits will have an id so that they can be referenced. Edits in 3094 pivot type.
4164 the same response that do not need to be referenced will not have 3095 </p>
4165 an id. 3096 </field>
4166 </p> 3097 </object>
4167 </field> 3098 </type>
4168 </object> 3099 </types>
4169 </type> 3100 <refactorings>
4170 <type name="SourceFileEdit"> 3101 <h2><a name="refactorings">Refactorings</a></h2>
4171 <p> 3102 <p>
4172 A description of a set of changes to a single file. 3103 This section contains additional information for each kind of
4173 </p> 3104 refactoring. In addition to a brief description of the
4174 <object> 3105 refactoring, there is a specification of the feedback that is
4175 <field name="file"> 3106 provided when a refactoring is requested using the
4176 <ref>FilePath</ref> 3107 edit.getRefactoring request (designed to improve the UX)
4177 <p> 3108 and the options that may be provided to edit.getRefactoring.
4178 The file containing the code to be modified. 3109 </p>
4179 </p> 3110 <refactoring kind="CONVERT_GETTER_TO_METHOD">
4180 </field> 3111 <p>
4181 <field name="fileStamp"> 3112 Convert a getter into a method by removing the keyword get
4182 <ref>long</ref> 3113 and adding an empty parameter list.
4183 <p> 3114 </p>
4184 The modification stamp of the file at the moment when the change 3115 <p>
4185 was created, in milliseconds since the "Unix epoch". Will be -1 if 3116 It is an error if the range contains anything other than all
4186 the file did not exist and should be created. The client may use 3117 or part of the name of a single getter.
4187 this field to make sure that the file was not changed since then, 3118 </p>
4188 so it is safe to apply the change. 3119 </refactoring>
4189 </p> 3120 <refactoring kind="CONVERT_METHOD_TO_GETTER">
4190 </field> 3121 <p>
4191 <field name="edits"> 3122 Convert a method into a getter by adding the keyword get and
4192 <list><ref>SourceEdit</ref></list> 3123 removing the parameter list.
4193 <p> 3124 </p>
4194 A list of the edits used to effect the change. 3125 <p>
4195 </p> 3126 It is an error if the range contains anything other than all
4196 </field> 3127 or part of the name of a single method or if the method has
4197 </object> 3128 a non-empty parameter list.
4198 </type> 3129 </p>
4199 <type name="TypeHierarchyItem"> 3130 </refactoring>
4200 <p> 3131 <refactoring kind="EXTRACT_LOCAL_VARIABLE">
4201 A representation of a class in a type hierarchy. 3132 <p>
4202 </p> 3133 Create a local variable initialized by the expression that covers
4203 <object> 3134 the specified selection.
4204 <field name="classElement"> 3135 </p>
4205 <ref>Element</ref> 3136 <p>
4206 <p> 3137 It is an error if the selection range is not covered by a
4207 The class element represented by this item. 3138 complete expression.
4208 </p> 3139 </p>
4209 </field> 3140 <feedback>
4210 <field name="displayName" optional="true"> 3141 <field name="coveringExpressionOffsets" optional="true">
4211 <ref>String</ref> 3142 <list>
4212 <p> 3143 <ref>int</ref>
4213 The name to be displayed for the class. This field will be 3144 </list>
4214 omitted if the display name is the same as the name of the 3145 <p>
4215 element. The display name is different if there is 3146 The offsets of the expressions that cover the specified
4216 additional type information to be displayed, such as type 3147 selection, from the down most to the up most.
4217 arguments. 3148 </p>
4218 </p> 3149 </field>
4219 </field> 3150 <field name="coveringExpressionLengths" optional="true">
4220 <field name="memberElement" optional="true"> 3151 <list>
4221 <ref>Element</ref> 3152 <ref>int</ref>
4222 <p> 3153 </list>
4223 The member in the class corresponding to the member on 3154 <p>
4224 which the hierarchy was requested. This field will be 3155 The lengths of the expressions that cover the specified
4225 omitted if the hierarchy was not requested for a member or 3156 selection, from the down most to the up most.
4226 if the class does not have a corresponding member. 3157 </p>
4227 </p> 3158 </field>
4228 </field> 3159 <field name="names">
4229 <field name="superclass" optional="true"> 3160 <list>
4230 <ref>int</ref> 3161 <ref>String</ref>
4231 <p> 3162 </list>
4232 The index of the item representing the superclass of 3163 <p>
4233 this class. This field will be omitted if this item 3164 The proposed names for the local variable.
4234 represents the class Object. 3165 </p>
4235 </p> 3166 </field>
4236 </field> 3167 <field name="offsets">
4237 <field name="interfaces"> 3168 <list>
4238 <list><ref>int</ref></list> 3169 <ref>int</ref>
4239 <p> 3170 </list>
4240 The indexes of the items representing the interfaces 3171 <p>
4241 implemented by this class. The list will be empty if 3172 The offsets of the expressions that would be replaced by
4242 there are no implemented interfaces. 3173 a reference to the variable.
4243 </p> 3174 </p>
4244 </field> 3175 </field>
4245 <field name="mixins"> 3176 <field name="lengths">
4246 <list><ref>int</ref></list> 3177 <list>
4247 <p> 3178 <ref>int</ref>
4248 The indexes of the items representing the mixins 3179 </list>
4249 referenced by this class. The list will be empty if 3180 <p>
4250 there are no classes mixed in to this class. 3181 The lengths of the expressions that would be replaced by
4251 </p> 3182 a reference to the variable. The lengths correspond to
4252 </field> 3183 the offsets. In other words, for a given expression, if
4253 <field name="subclasses"> 3184 the offset of that expression is <tt>offsets[i]</tt>, then
4254 <list><ref>int</ref></list> 3185 the length of that expression is <tt>lengths[i]</tt>.
4255 <p> 3186 </p>
4256 The indexes of the items representing the subtypes of 3187 </field>
4257 this class. The list will be empty if there are no 3188 </feedback>
4258 subtypes or if this item represents a supertype of the 3189 <options>
4259 pivot type. 3190 <field name="name">
4260 </p> 3191 <ref>String</ref>
4261 </field> 3192 <p>
4262 </object> 3193 The name that the local variable should be given.
4263 </type> 3194 </p>
4264 </types> 3195 </field>
4265 <refactorings> 3196 <field name="extractAll">
4266 <h2><a name="refactorings">Refactorings</a></h2> 3197 <ref>bool</ref>
4267 <p> 3198 <p>
4268 This section contains additional information for each kind of 3199 True if all occurrences of the expression within the
4269 refactoring. In addition to a brief description of the 3200 scope in which the variable will be defined should be
4270 refactoring, there is a specification of the feedback that is 3201 replaced by a reference to the local variable. The
4271 provided when a refactoring is requested using the 3202 expression used to initiate the refactoring will always
4272 edit.getRefactoring request (designed to improve the UX) 3203 be replaced.
4273 and the options that may be provided to edit.getRefactoring. 3204 </p>
4274 </p> 3205 </field>
4275 <refactoring kind="CONVERT_GETTER_TO_METHOD"> 3206 </options>
4276 <p> 3207 </refactoring>
4277 Convert a getter into a method by removing the keyword get 3208 <refactoring kind="EXTRACT_METHOD">
4278 and adding an empty parameter list. 3209 <p>
4279 </p> 3210 Create a method whose body is the specified expression or
4280 <p> 3211 list of statements, possibly augmented with a return
4281 It is an error if the range contains anything other than all 3212 statement.
4282 or part of the name of a single getter. 3213 </p>
4283 </p> 3214 <p>
4284 </refactoring> 3215 It is an error if the range contains anything other than a
4285 <refactoring kind="CONVERT_METHOD_TO_GETTER"> 3216 complete expression (no partial expressions are allowed) or
4286 <p> 3217 a complete sequence of statements.
4287 Convert a method into a getter by adding the keyword get and 3218 </p>
4288 removing the parameter list. 3219 <feedback>
4289 </p> 3220 <field name="offset">
4290 <p> 3221 <ref>int</ref>
4291 It is an error if the range contains anything other than all 3222 <p>
4292 or part of the name of a single method or if the method has 3223 The offset to the beginning of the expression or
4293 a non-empty parameter list. 3224 statements that will be extracted.
4294 </p> 3225 </p>
4295 </refactoring> 3226 </field>
4296 <refactoring kind="EXTRACT_LOCAL_VARIABLE"> 3227 <field name="length">
4297 <p> 3228 <ref>int</ref>
4298 Create a local variable initialized by the expression that covers 3229 <p>
4299 the specified selection. 3230 The length of the expression or statements that will be
4300 </p> 3231 extracted.
4301 <p> 3232 </p>
4302 It is an error if the selection range is not covered by a 3233 </field>
4303 complete expression. 3234 <field name="returnType">
4304 </p> 3235 <ref>String</ref>
4305 <feedback> 3236 <p>
4306 <field name="coveringExpressionOffsets" optional="true"> 3237 The proposed return type for the method.
4307 <list><ref>int</ref></list> 3238 If the returned element does not have a declared return type,
4308 <p> 3239 this field will contain an empty string.
4309 The offsets of the expressions that cover the specified 3240 </p>
4310 selection, from the down most to the up most. 3241 </field>
4311 </p> 3242 <field name="names">
4312 </field> 3243 <list>
4313 <field name="coveringExpressionLengths" optional="true"> 3244 <ref>String</ref>
4314 <list><ref>int</ref></list> 3245 </list>
4315 <p> 3246 <p>
4316 The lengths of the expressions that cover the specified 3247 The proposed names for the method.
4317 selection, from the down most to the up most. 3248 </p>
4318 </p> 3249 </field>
4319 </field> 3250 <field name="canCreateGetter">
4320 <field name="names"> 3251 <ref>bool</ref>
4321 <list><ref>String</ref></list> 3252 <p>
4322 <p> 3253 True if a getter could be created rather than a method.
4323 The proposed names for the local variable. 3254 </p>
4324 </p> 3255 </field>
4325 </field> 3256 <field name="parameters">
4326 <field name="offsets"> 3257 <list>
4327 <list><ref>int</ref></list> 3258 <ref>RefactoringMethodParameter</ref>
4328 <p> 3259 </list>
4329 The offsets of the expressions that would be replaced by 3260 <p>
4330 a reference to the variable. 3261 The proposed parameters for the method.
4331 </p> 3262 </p>
4332 </field> 3263 </field>
4333 <field name="lengths"> 3264 <field name="offsets">
4334 <list><ref>int</ref></list> 3265 <list>
4335 <p> 3266 <ref>int</ref>
4336 The lengths of the expressions that would be replaced by 3267 </list>
4337 a reference to the variable. The lengths correspond to 3268 <p>
4338 the offsets. In other words, for a given expression, if 3269 The offsets of the expressions or statements that would
4339 the offset of that expression is <tt>offsets[i]</tt>, then 3270 be replaced by an invocation of the method.
4340 the length of that expression is <tt>lengths[i]</tt>. 3271 </p>
4341 </p> 3272 </field>
4342 </field> 3273 <field name="lengths">
4343 </feedback> 3274 <list>
4344 <options> 3275 <ref>int</ref>
4345 <field name="name"> 3276 </list>
4346 <ref>String</ref> 3277 <p>
4347 <p> 3278 The lengths of the expressions or statements that would
4348 The name that the local variable should be given. 3279 be replaced by an invocation of the method. The lengths
4349 </p> 3280 correspond to the offsets. In other words, for a given
4350 </field> 3281 expression (or block of statements), if the offset of
4351 <field name="extractAll"> 3282 that expression is <tt>offsets[i]</tt>, then the length
4352 <ref>bool</ref> 3283 of that expression is <tt>lengths[i]</tt>.
4353 <p> 3284 </p>
4354 True if all occurrences of the expression within the 3285 </field>
4355 scope in which the variable will be defined should be 3286 </feedback>
4356 replaced by a reference to the local variable. The 3287 <options>
4357 expression used to initiate the refactoring will always 3288 <field name="returnType">
4358 be replaced. 3289 <ref>String</ref>
4359 </p> 3290 <p>
4360 </field> 3291 The return type that should be defined for the method.
4361 </options> 3292 </p>
4362 </refactoring> 3293 </field>
4363 <refactoring kind="EXTRACT_METHOD"> 3294 <field name="createGetter">
4364 <p> 3295 <ref>bool</ref>
4365 Create a method whose body is the specified expression or 3296 <p>
4366 list of statements, possibly augmented with a return 3297 True if a getter should be created rather than a
4367 statement. 3298 method. It is an error if this field is true and the
4368 </p> 3299 list of parameters is non-empty.
4369 <p> 3300 </p>
4370 It is an error if the range contains anything other than a 3301 </field>
4371 complete expression (no partial expressions are allowed) or 3302 <field name="name">
4372 a complete sequence of statements. 3303 <ref>String</ref>
4373 </p> 3304 <p>
4374 <feedback> 3305 The name that the method should be given.
4375 <field name="offset"> 3306 </p>
4376 <ref>int</ref> 3307 </field>
4377 <p> 3308 <field name="parameters">
4378 The offset to the beginning of the expression or 3309 <list>
4379 statements that will be extracted. 3310 <ref>RefactoringMethodParameter</ref>
4380 </p> 3311 </list>
4381 </field> 3312 <p>
4382 <field name="length"> 3313 The parameters that should be defined for the method.
4383 <ref>int</ref> 3314 </p>
4384 <p> 3315 <p>
4385 The length of the expression or statements that will be 3316 It is an error if a REQUIRED or NAMED parameter follows a
4386 extracted. 3317 POSITIONAL parameter.
4387 </p> 3318 It is an error if a REQUIRED or POSITIONAL parameter follows a
4388 </field> 3319 NAMED parameter.
4389 <field name="returnType"> 3320 </p>
4390 <ref>String</ref> 3321 <ul>
4391 <p> 3322 <li>
4392 The proposed return type for the method. 3323 To change the order and/or update proposed parameters, add
4393 If the returned element does not have a declared return type, 3324 parameters with the same identifiers as proposed.
4394 this field will contain an empty string. 3325 </li>
4395 </p> 3326 <li>To add new parameters, omit their identifier.</li>
4396 </field> 3327 <li>To remove some parameters, omit them in this list.</li>
4397 <field name="names"> 3328 </ul>
4398 <list><ref>String</ref></list> 3329 </field>
4399 <p> 3330 <field name="extractAll">
4400 The proposed names for the method. 3331 <ref>bool</ref>
4401 </p> 3332 <p>
4402 </field> 3333 True if all occurrences of the expression or statements
4403 <field name="canCreateGetter"> 3334 should be replaced by an invocation of the method. The
4404 <ref>bool</ref> 3335 expression or statements used to initiate the
4405 <p> 3336 refactoring will always be replaced.
4406 True if a getter could be created rather than a method. 3337 </p>
4407 </p> 3338 </field>
4408 </field> 3339 </options>
4409 <field name="parameters"> 3340 </refactoring>
4410 <list><ref>RefactoringMethodParameter</ref></list> 3341 <refactoring kind="INLINE_LOCAL_VARIABLE">
4411 <p> 3342 <p>
4412 The proposed parameters for the method. 3343 Inline the initializer expression of a local variable in
4413 </p> 3344 place of any references to that variable.
4414 </field> 3345 </p>
4415 <field name="offsets"> 3346 <p>
4416 <list><ref>int</ref></list> 3347 It is an error if the range contains anything other than all
4417 <p> 3348 or part of the name of a single local variable.
4418 The offsets of the expressions or statements that would 3349 </p>
4419 be replaced by an invocation of the method. 3350 <feedback>
4420 </p> 3351 <field name="name">
4421 </field> 3352 <ref>String</ref>
4422 <field name="lengths"> 3353 <p>
4423 <list><ref>int</ref></list> 3354 The name of the variable being inlined.
4424 <p> 3355 </p>
4425 The lengths of the expressions or statements that would 3356 </field>
4426 be replaced by an invocation of the method. The lengths 3357 <field name="occurrences">
4427 correspond to the offsets. In other words, for a given 3358 <ref>int</ref>
4428 expression (or block of statements), if the offset of 3359 <p>
4429 that expression is <tt>offsets[i]</tt>, then the length 3360 The number of times the variable occurs.
4430 of that expression is <tt>lengths[i]</tt>. 3361 </p>
4431 </p> 3362 </field>
4432 </field> 3363 </feedback>
4433 </feedback> 3364 </refactoring>
4434 <options> 3365 <refactoring kind="INLINE_METHOD">
4435 <field name="returnType"> 3366 <p>
4436 <ref>String</ref> 3367 Inline a method in place of one or all references to that
4437 <p> 3368 method.
4438 The return type that should be defined for the method. 3369 </p>
4439 </p> 3370 <p>
4440 </field> 3371 It is an error if the range contains anything other than all
4441 <field name="createGetter"> 3372 or part of the name of a single method.
4442 <ref>bool</ref> 3373 </p>
4443 <p> 3374 <feedback>
4444 True if a getter should be created rather than a 3375 <field name="className" optional="true">
4445 method. It is an error if this field is true and the 3376 <ref>String</ref>
4446 list of parameters is non-empty. 3377 <p>
4447 </p> 3378 The name of the class enclosing the method being inlined.
4448 </field> 3379 If not a class member is being inlined, this field will be absent.
4449 <field name="name"> 3380 </p>
4450 <ref>String</ref> 3381 </field>
4451 <p> 3382 <field name="methodName">
4452 The name that the method should be given. 3383 <ref>String</ref>
4453 </p> 3384 <p>
4454 </field> 3385 The name of the method (or function) being inlined.
4455 <field name="parameters"> 3386 </p>
4456 <list><ref>RefactoringMethodParameter</ref></list> 3387 </field>
4457 <p> 3388 <field name="isDeclaration">
4458 The parameters that should be defined for the method. 3389 <ref>bool</ref>
4459 </p> 3390 <p>
4460 <p> 3391 True if the declaration of the method is selected.
4461 It is an error if a REQUIRED or NAMED parameter follows a 3392 So all references should be inlined.
4462 POSITIONAL parameter. 3393 </p>
4463 It is an error if a REQUIRED or POSITIONAL parameter follows a 3394 </field>
4464 NAMED parameter. 3395 </feedback>
4465 </p> 3396 <options>
4466 <ul> 3397 <field name="deleteSource">
4467 <li> 3398 <ref>bool</ref>
4468 To change the order and/or update proposed parameters, add 3399 <p>
4469 parameters with the same identifiers as proposed. 3400 True if the method being inlined should be removed.
4470 </li> 3401 It is an error if this field is true and inlineAll is false.
4471 <li>To add new parameters, omit their identifier.</li> 3402 </p>
4472 <li>To remove some parameters, omit them in this list.</li> 3403 </field>
4473 </ul> 3404 <field name="inlineAll">
4474 </field> 3405 <ref>bool</ref>
4475 <field name="extractAll"> 3406 <p>
4476 <ref>bool</ref> 3407 True if all invocations of the method should be inlined,
4477 <p> 3408 or false if only the invocation site used to create this
4478 True if all occurrences of the expression or statements 3409 refactoring should be inlined.
4479 should be replaced by an invocation of the method. The 3410 </p>
4480 expression or statements used to initiate the 3411 </field>
4481 refactoring will always be replaced. 3412 </options>
4482 </p> 3413 </refactoring>
4483 </field> 3414 <refactoring kind="MOVE_FILE">
4484 </options> 3415 <p>
4485 </refactoring> 3416 Move the given file and update all of the references to that file
4486 <refactoring kind="INLINE_LOCAL_VARIABLE"> 3417 and from it. The move operation is supported in general case - for
4487 <p> 3418 renaming a file in the same folder, moving it to a different folder
4488 Inline the initializer expression of a local variable in 3419 or both.
4489 place of any references to that variable. 3420 </p>
4490 </p> 3421 <p>
4491 <p> 3422 The refactoring must be activated before an actual file moving
4492 It is an error if the range contains anything other than all 3423 operation is performed.
4493 or part of the name of a single local variable. 3424 </p>
4494 </p> 3425 <p>
4495 <feedback> 3426 The "offset" and "length" fields from the request are ignored, but the
4496 <field name="name"> 3427 file specified in the request specifies the file to be moved.
4497 <ref>String</ref> 3428 </p>
4498 <p> 3429 <options>
4499 The name of the variable being inlined. 3430 <field name="newFile">
4500 </p> 3431 <ref>FilePath</ref>
4501 </field> 3432 <p>
4502 <field name="occurrences"> 3433 The new file path to which the given file is being moved.
4503 <ref>int</ref> 3434 </p>
4504 <p> 3435 </field>
4505 The number of times the variable occurs. 3436 </options>
4506 </p> 3437 </refactoring>
4507 </field> 3438 <refactoring kind="RENAME">
4508 </feedback> 3439 <p>
4509 </refactoring> 3440 Rename a given element and all of the references to that
4510 <refactoring kind="INLINE_METHOD"> 3441 element.
4511 <p> 3442 </p>
4512 Inline a method in place of one or all references to that 3443 <p>
4513 method. 3444 It is an error if the range contains anything other than all
4514 </p> 3445 or part of the name of a single function (including methods,
4515 <p> 3446 getters and setters), variable (including fields, parameters
4516 It is an error if the range contains anything other than all 3447 and local variables), class or function type.
4517 or part of the name of a single method. 3448 </p>
4518 </p> 3449 <feedback>
4519 <feedback> 3450 <field name="offset">
4520 <field name="className" optional="true"> 3451 <ref>int</ref>
4521 <ref>String</ref> 3452 <p>
4522 <p> 3453 The offset to the beginning of the name selected to be
4523 The name of the class enclosing the method being inlined. 3454 renamed.
4524 If not a class member is being inlined, this field will be absent. 3455 </p>
4525 </p> 3456 </field>
4526 </field> 3457 <field name="length">
4527 <field name="methodName"> 3458 <ref>int</ref>
4528 <ref>String</ref> 3459 <p>
4529 <p> 3460 The length of the name selected to be renamed.
4530 The name of the method (or function) being inlined. 3461 </p>
4531 </p> 3462 </field>
4532 </field> 3463 <field name="elementKindName">
4533 <field name="isDeclaration"> 3464 <ref>String</ref>
4534 <ref>bool</ref> 3465 <p>
4535 <p> 3466 The human-readable description of the kind of element being
4536 True if the declaration of the method is selected. 3467 renamed (such as "class" or "function type
4537 So all references should be inlined. 3468 alias").
4538 </p> 3469 </p>
4539 </field> 3470 </field>
4540 </feedback> 3471 <field name="oldName">
4541 <options> 3472 <ref>String</ref>
4542 <field name="deleteSource"> 3473 <p>
4543 <ref>bool</ref> 3474 The old name of the element before the refactoring.
4544 <p> 3475 </p>
4545 True if the method being inlined should be removed. 3476 </field>
4546 It is an error if this field is true and inlineAll is false. 3477 </feedback>
4547 </p> 3478 <options>
4548 </field> 3479 <field name="newName">
4549 <field name="inlineAll"> 3480 <ref>String</ref>
4550 <ref>bool</ref> 3481 <p>
4551 <p> 3482 The name that the element should have after the
4552 True if all invocations of the method should be inlined, 3483 refactoring.
4553 or false if only the invocation site used to create this 3484 </p>
4554 refactoring should be inlined. 3485 </field>
4555 </p> 3486 </options>
4556 </field> 3487 </refactoring>
4557 </options> 3488 </refactorings>
4558 </refactoring> 3489 <h2>Errors</h2>
4559 <refactoring kind="MOVE_FILE"> 3490 <p>
4560 <p> 3491 This section contains a list of all of the errors that are
4561 Move the given file and update all of the references to that file 3492 produced by the server and the data that is returned with each.
4562 and from it. The move operation is supported in general case - for 3493 </p>
4563 renaming a file in the same folder, moving it to a different folder 3494 <p>
4564 or both. 3495 TODO: TBD
4565 </p> 3496 </p>
4566 <p> 3497 <h2 class="domain"><a name="index">Index</a></h2>
4567 The refactoring must be activated before an actual file moving 3498 <index></index>
4568 operation is performed. 3499 </body>
4569 </p>
4570 <p>
4571 The "offset" and "length" fields from the request are ignored, but the
4572 file specified in the request specifies the file to be moved.
4573 </p>
4574 <options>
4575 <field name="newFile">
4576 <ref>FilePath</ref>
4577 <p>
4578 The new file path to which the given file is being moved.
4579 </p>
4580 </field>
4581 </options>
4582 </refactoring>
4583 <refactoring kind="RENAME">
4584 <p>
4585 Rename a given element and all of the references to that
4586 element.
4587 </p>
4588 <p>
4589 It is an error if the range contains anything other than all
4590 or part of the name of a single function (including methods,
4591 getters and setters), variable (including fields, parameters
4592 and local variables), class or function type.
4593 </p>
4594 <feedback>
4595 <field name="offset">
4596 <ref>int</ref>
4597 <p>
4598 The offset to the beginning of the name selected to be
4599 renamed.
4600 </p>
4601 </field>
4602 <field name="length">
4603 <ref>int</ref>
4604 <p>
4605 The length of the name selected to be renamed.
4606 </p>
4607 </field>
4608 <field name="elementKindName">
4609 <ref>String</ref>
4610 <p>
4611 The human-readable description of the kind of element being
4612 renamed (such as "class" or "function type
4613 alias").
4614 </p>
4615 </field>
4616 <field name="oldName">
4617 <ref>String</ref>
4618 <p>
4619 The old name of the element before the refactoring.
4620 </p>
4621 </field>
4622 </feedback>
4623 <options>
4624 <field name="newName">
4625 <ref>String</ref>
4626 <p>
4627 The name that the element should have after the
4628 refactoring.
4629 </p>
4630 </field>
4631 </options>
4632 </refactoring>
4633 </refactorings>
4634 <h2>Errors</h2>
4635 <p>
4636 This section contains a list of all of the errors that are
4637 produced by the server and the data that is returned with each.
4638 </p>
4639 <p>
4640 TODO: TBD
4641 </p>
4642 <h2 class="domain"><a name="index">Index</a></h2>
4643 <index></index>
4644 </body>
4645 </html> 3500 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698