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

Side by Side Diff: pkg/analysis_server/lib/src/protocol_server.dart

Issue 628023003: Move Engine to Server element / error converters into protocol_server.dart (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library protocol.server; 5 library protocol.server;
6 6
7 import 'package:analysis_server/src/computer/element.dart';
8 import 'package:analysis_server/src/protocol.dart'; 7 import 'package:analysis_server/src/protocol.dart';
9 import 'package:analysis_server/src/services/search/search_engine.dart' as 8 import 'package:analysis_server/src/services/search/search_engine.dart' as
10 engine; 9 engine;
11 import 'package:analyzer/src/generated/ast.dart' as engine; 10 import 'package:analyzer/src/generated/ast.dart' as engine;
12 import 'package:analyzer/src/generated/element.dart' as engine; 11 import 'package:analyzer/src/generated/element.dart' as engine;
13 import 'package:analyzer/src/generated/engine.dart' as engine; 12 import 'package:analyzer/src/generated/engine.dart' as engine;
14 import 'package:analyzer/src/generated/error.dart' as engine; 13 import 'package:analyzer/src/generated/error.dart' as engine;
15 import 'package:analyzer/src/generated/source.dart' as engine; 14 import 'package:analyzer/src/generated/source.dart' as engine;
15 import 'package:analyzer/src/generated/utilities_dart.dart' as engine;
16 16
17 export 'package:analysis_server/src/protocol.dart'; 17 export 'package:analysis_server/src/protocol.dart';
18 18
19 19
20 /** 20 /**
21 * Returns a list of AnalysisErrors correponding to the given list of Engine 21 * Returns a list of AnalysisErrors correponding to the given list of Engine
22 * errors. 22 * errors.
23 */ 23 */
24 List<AnalysisError> doAnalysisError_listFromEngine(engine.LineInfo lineInfo, 24 List<AnalysisError> doAnalysisError_listFromEngine(engine.LineInfo lineInfo,
25 List<engine.AnalysisError> errors) { 25 List<engine.AnalysisError> errors) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 return ElementKind.TYPE_PARAMETER; 196 return ElementKind.TYPE_PARAMETER;
197 } 197 }
198 return ElementKind.UNKNOWN; 198 return ElementKind.UNKNOWN;
199 } 199 }
200 200
201 201
202 /** 202 /**
203 * Construct based on a value from the analyzer engine. 203 * Construct based on a value from the analyzer engine.
204 */ 204 */
205 Element newElement_fromEngine(engine.Element element) { 205 Element newElement_fromEngine(engine.Element element) {
206 return elementFromEngine(element); 206 String name = element.displayName;
207 String elementParameters = _getParametersString(element);
208 String elementReturnType = _getReturnTypeString(element);
209 return new Element(
210 newElementKind_fromEngine(element.kind),
211 name,
212 Element.makeFlags(
213 isPrivate: element.isPrivate,
214 isDeprecated: element.isDeprecated,
215 isAbstract: _isAbstract(element),
216 isConst: _isConst(element),
217 isFinal: _isFinal(element),
218 isStatic: _isStatic(element)),
219 location: newLocation_fromElement(element),
220 parameters: elementParameters,
221 returnType: elementReturnType);
207 } 222 }
208 223
209 224
210 /** 225 /**
211 * Create a Location based on an [engine.Element]. 226 * Create a Location based on an [engine.Element].
212 */ 227 */
213 Location newLocation_fromElement(engine.Element element) { 228 Location newLocation_fromElement(engine.Element element) {
214 engine.AnalysisContext context = element.context; 229 engine.AnalysisContext context = element.context;
215 engine.Source source = element.source; 230 engine.Source source = element.source;
216 if (context == null || source == null) { 231 if (context == null || source == null) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 engine.AnalysisContext context = unitElement.context; 278 engine.AnalysisContext context = unitElement.context;
264 engine.Source source = unitElement.source; 279 engine.Source source = unitElement.source;
265 return _locationForArgs(context, source, range); 280 return _locationForArgs(context, source, range);
266 } 281 }
267 282
268 283
269 /** 284 /**
270 * Construct based on an element from the analyzer engine. 285 * Construct based on an element from the analyzer engine.
271 */ 286 */
272 OverriddenMember newOverriddenMember_fromEngine(engine.Element member) { 287 OverriddenMember newOverriddenMember_fromEngine(engine.Element member) {
273 Element element = elementFromEngine(member); 288 Element element = newElement_fromEngine(member);
274 String className = member.enclosingElement.displayName; 289 String className = member.enclosingElement.displayName;
275 return new OverriddenMember(element, className); 290 return new OverriddenMember(element, className);
276 } 291 }
277 292
278 293
279 294
280 /** 295 /**
281 * Construct based on a value from the search engine. 296 * Construct based on a value from the search engine.
282 */ 297 */
283 SearchResultKind newSearchResultKind_fromEngine(engine.MatchKind kind) { 298 SearchResultKind newSearchResultKind_fromEngine(engine.MatchKind kind) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 List<Element> _computePath(engine.Element element) { 340 List<Element> _computePath(engine.Element element) {
326 List<Element> path = <Element>[]; 341 List<Element> path = <Element>[];
327 while (element != null) { 342 while (element != null) {
328 path.add(newElement_fromEngine(element)); 343 path.add(newElement_fromEngine(element));
329 element = element.enclosingElement; 344 element = element.enclosingElement;
330 } 345 }
331 return path; 346 return path;
332 } 347 }
333 348
334 349
350 String _getParametersString(engine.Element element) {
351 // TODO(scheglov) expose the corresponding feature from ExecutableElement
352 if (element is engine.ExecutableElement) {
353 var sb = new StringBuffer();
354 String closeOptionalString = '';
355 for (var parameter in element.parameters) {
356 if (sb.isNotEmpty) {
357 sb.write(', ');
358 }
359 if (closeOptionalString.isEmpty) {
360 if (parameter.kind == engine.ParameterKind.NAMED) {
361 sb.write('{');
362 closeOptionalString = '}';
363 }
364 if (parameter.kind == engine.ParameterKind.POSITIONAL) {
365 sb.write('[');
366 closeOptionalString = ']';
367 }
368 }
369 sb.write(parameter.toString());
370 }
371 sb.write(closeOptionalString);
372 return '(' + sb.toString() + ')';
373 } else {
374 return null;
375 }
376 }
377
378
379 String _getReturnTypeString(engine.Element element) {
380 if (element is engine.ExecutableElement) {
381 if (element.kind == engine.ElementKind.SETTER) {
382 return null;
383 } else {
384 return element.returnType.toString();
385 }
386 } else {
387 return null;
388 }
389 }
390
391 bool _isAbstract(engine.Element element) {
392 // TODO(scheglov) add isAbstract to Element API
Brian Wilkerson 2014/10/07 22:21:55 It doesn't make sense to ask isAbstract, etc. for
393 if (element is engine.ClassElement) {
394 return element.isAbstract;
395 }
396 if (element is engine.MethodElement) {
397 return element.isAbstract;
398 }
399 if (element is engine.PropertyAccessorElement) {
400 return element.isAbstract;
401 }
402 return false;
403 }
404
405 bool _isConst(engine.Element element) {
406 // TODO(scheglov) add isConst to Element API
407 if (element is engine.ConstructorElement) {
408 return element.isConst;
409 }
410 if (element is engine.VariableElement) {
411 return element.isConst;
412 }
413 return false;
414 }
415
416 bool _isFinal(engine.Element element) {
417 // TODO(scheglov) add isFinal to Element API
418 if (element is engine.VariableElement) {
419 return element.isFinal;
420 }
421 return false;
422 }
423
424 bool _isStatic(engine.Element element) {
425 // TODO(scheglov) add isStatic to Element API
426 if (element is engine.ExecutableElement) {
427 return element.isStatic;
428 }
429 if (element is engine.PropertyInducingElement) {
430 return element.isStatic;
431 }
432 return false;
433 }
434
335 /** 435 /**
336 * Creates a new [Location]. 436 * Creates a new [Location].
337 */ 437 */
338 Location _locationForArgs(engine.AnalysisContext context, engine.Source source, 438 Location _locationForArgs(engine.AnalysisContext context, engine.Source source,
339 engine.SourceRange range) { 439 engine.SourceRange range) {
340 int startLine = 0; 440 int startLine = 0;
341 int startColumn = 0; 441 int startColumn = 0;
342 { 442 {
343 engine.LineInfo lineInfo = context.getLineInfo(source); 443 engine.LineInfo lineInfo = context.getLineInfo(source);
344 if (lineInfo != null) { 444 if (lineInfo != null) {
345 engine.LineInfo_Location offsetLocation = 445 engine.LineInfo_Location offsetLocation =
346 lineInfo.getLocation(range.offset); 446 lineInfo.getLocation(range.offset);
347 startLine = offsetLocation.lineNumber; 447 startLine = offsetLocation.lineNumber;
348 startColumn = offsetLocation.columnNumber; 448 startColumn = offsetLocation.columnNumber;
349 } 449 }
350 } 450 }
351 return new Location( 451 return new Location(
352 source.fullName, 452 source.fullName,
353 range.offset, 453 range.offset,
354 range.length, 454 range.length,
355 startLine, 455 startLine,
356 startColumn); 456 startColumn);
357 } 457 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/computer/element.dart ('k') | pkg/analysis_server/lib/src/search/type_hierarchy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698