| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 analyzer.src.context.context; | 5 library analyzer.src.context.context; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 | 9 |
| 10 import 'package:analyzer/instrumentation/instrumentation.dart'; | 10 import 'package:analyzer/instrumentation/instrumentation.dart'; |
| 11 import 'package:analyzer/plugin/task.dart'; | 11 import 'package:analyzer/plugin/task.dart'; |
| 12 import 'package:analyzer/src/cancelable_future.dart'; | 12 import 'package:analyzer/src/cancelable_future.dart'; |
| 13 import 'package:analyzer/src/context/cache.dart'; | 13 import 'package:analyzer/src/context/cache.dart'; |
| 14 import 'package:analyzer/src/generated/ast.dart'; | 14 import 'package:analyzer/src/generated/ast.dart'; |
| 15 import 'package:analyzer/src/generated/constant.dart'; | 15 import 'package:analyzer/src/generated/constant.dart'; |
| 16 import 'package:analyzer/src/generated/element.dart'; | 16 import 'package:analyzer/src/generated/element.dart'; |
| 17 import 'package:analyzer/src/generated/engine.dart' | 17 import 'package:analyzer/src/generated/engine.dart' |
| 18 hide | 18 hide |
| 19 AnalysisCache, | 19 AnalysisCache, |
| 20 CachePartition, | 20 CachePartition, |
| 21 SdkCachePartition, | 21 SdkCachePartition, |
| 22 UniversalCachePartition, | 22 UniversalCachePartition, |
| 23 WorkManager; | 23 WorkManager; |
| 24 import 'package:analyzer/src/generated/error.dart'; | 24 import 'package:analyzer/src/generated/error.dart'; |
| 25 import 'package:analyzer/src/generated/html.dart' as ht show HtmlUnit; | 25 import 'package:analyzer/src/generated/html.dart' as ht show HtmlUnit; |
| 26 import 'package:analyzer/src/generated/incremental_resolver.dart'; | 26 import 'package:analyzer/src/generated/incremental_resolver.dart'; |
| 27 import 'package:analyzer/src/generated/java_core.dart'; | 27 import 'package:analyzer/src/generated/java_core.dart'; |
| 28 import 'package:analyzer/src/generated/java_engine.dart'; | 28 import 'package:analyzer/src/generated/java_engine.dart'; |
| 29 import 'package:analyzer/src/generated/resolver.dart'; | 29 import 'package:analyzer/src/generated/resolver.dart'; |
| 30 import 'package:analyzer/src/generated/scanner.dart'; | |
| 31 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; | 30 import 'package:analyzer/src/generated/sdk.dart' show DartSdk; |
| 32 import 'package:analyzer/src/generated/source.dart'; | 31 import 'package:analyzer/src/generated/source.dart'; |
| 33 import 'package:analyzer/src/generated/utilities_collection.dart'; | 32 import 'package:analyzer/src/generated/utilities_collection.dart'; |
| 34 import 'package:analyzer/src/task/dart.dart'; | 33 import 'package:analyzer/src/task/dart.dart'; |
| 35 import 'package:analyzer/src/task/dart_work_manager.dart'; | 34 import 'package:analyzer/src/task/dart_work_manager.dart'; |
| 36 import 'package:analyzer/src/task/driver.dart'; | 35 import 'package:analyzer/src/task/driver.dart'; |
| 37 import 'package:analyzer/src/task/incremental_element_builder.dart'; | 36 import 'package:analyzer/src/task/incremental_element_builder.dart'; |
| 38 import 'package:analyzer/src/task/manager.dart'; | 37 import 'package:analyzer/src/task/manager.dart'; |
| 39 import 'package:analyzer/task/dart.dart'; | 38 import 'package:analyzer/task/dart.dart'; |
| 40 import 'package:analyzer/task/general.dart'; | 39 import 'package:analyzer/task/general.dart'; |
| (...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 565 | 564 |
| 566 @override | 565 @override |
| 567 String computeDocumentationComment(Element element) { | 566 String computeDocumentationComment(Element element) { |
| 568 if (element == null) { | 567 if (element == null) { |
| 569 return null; | 568 return null; |
| 570 } | 569 } |
| 571 Source source = element.source; | 570 Source source = element.source; |
| 572 if (source == null) { | 571 if (source == null) { |
| 573 return null; | 572 return null; |
| 574 } | 573 } |
| 575 CompilationUnit unit = parseCompilationUnit(source); | 574 SourceRange docRange = element.docRange; |
| 576 if (unit == null) { | 575 if (docRange == null) { |
| 577 return null; | 576 return null; |
| 578 } | 577 } |
| 579 NodeLocator locator = new NodeLocator(element.nameOffset); | 578 String code = getContents(source).data; |
| 580 AstNode nameNode = locator.searchWithin(unit); | 579 String comment = code.substring(docRange.offset, docRange.end); |
| 581 while (nameNode != null) { | 580 return comment.replaceAll('\r\n', '\n'); |
| 582 if (nameNode is AnnotatedNode) { | |
| 583 Comment comment = nameNode.documentationComment; | |
| 584 if (comment == null) { | |
| 585 return null; | |
| 586 } | |
| 587 StringBuffer buffer = new StringBuffer(); | |
| 588 List<Token> tokens = comment.tokens; | |
| 589 for (int i = 0; i < tokens.length; i++) { | |
| 590 if (i > 0) { | |
| 591 buffer.write("\n"); | |
| 592 } | |
| 593 buffer.write(tokens[i].lexeme); | |
| 594 } | |
| 595 return buffer.toString(); | |
| 596 } | |
| 597 nameNode = nameNode.parent; | |
| 598 } | |
| 599 return null; | |
| 600 } | 581 } |
| 601 | 582 |
| 602 @override | 583 @override |
| 603 List<AnalysisError> computeErrors(Source source) { | 584 List<AnalysisError> computeErrors(Source source) { |
| 604 String name = source.shortName; | 585 String name = source.shortName; |
| 605 if (AnalysisEngine.isDartFileName(name)) { | 586 if (AnalysisEngine.isDartFileName(name)) { |
| 606 return computeResult(source, DART_ERRORS); | 587 return computeResult(source, DART_ERRORS); |
| 607 } else if (AnalysisEngine.isHtmlFileName(name)) { | 588 } else if (AnalysisEngine.isHtmlFileName(name)) { |
| 608 return computeResult(source, HTML_ERRORS); | 589 return computeResult(source, HTML_ERRORS); |
| 609 } | 590 } |
| (...skipping 1498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2108 new PendingFuture<T>(_context, target, computeValue); | 2089 new PendingFuture<T>(_context, target, computeValue); |
| 2109 if (!pendingFuture.evaluate(entry)) { | 2090 if (!pendingFuture.evaluate(entry)) { |
| 2110 _context._pendingFutureTargets | 2091 _context._pendingFutureTargets |
| 2111 .putIfAbsent(target, () => <PendingFuture>[]) | 2092 .putIfAbsent(target, () => <PendingFuture>[]) |
| 2112 .add(pendingFuture); | 2093 .add(pendingFuture); |
| 2113 scheduleComputation(); | 2094 scheduleComputation(); |
| 2114 } | 2095 } |
| 2115 return pendingFuture.future; | 2096 return pendingFuture.future; |
| 2116 } | 2097 } |
| 2117 } | 2098 } |
| OLD | NEW |