| OLD | NEW |
| 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 operation.analysis; | 5 library operation.analysis; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/analysis_server.dart'; | 7 import 'package:analysis_server/src/analysis_server.dart'; |
| 8 import 'package:analysis_server/src/computer/computer_highlights.dart'; | 8 import 'package:analysis_server/src/computer/computer_highlights.dart'; |
| 9 import 'package:analysis_server/src/computer/computer_navigation.dart'; | 9 import 'package:analysis_server/src/computer/computer_navigation.dart'; |
| 10 import 'package:analysis_server/src/computer/computer_occurrences.dart'; | 10 import 'package:analysis_server/src/computer/computer_occurrences.dart'; |
| 11 import 'package:analysis_server/src/computer/computer_outline.dart'; | 11 import 'package:analysis_server/src/computer/computer_outline.dart'; |
| 12 import 'package:analysis_server/src/computer/computer_overrides.dart'; | 12 import 'package:analysis_server/src/computer/computer_overrides.dart'; |
| 13 import 'package:analysis_server/src/operation/operation.dart'; | 13 import 'package:analysis_server/src/operation/operation.dart'; |
| 14 import 'package:analysis_server/src/protocol_server.dart' as protocol; | 14 import 'package:analysis_server/src/protocol_server.dart' as protocol; |
| 15 import 'package:analysis_server/src/services/index/index.dart'; | 15 import 'package:analysis_server/src/services/index/index.dart'; |
| 16 import 'package:analyzer/src/generated/ast.dart'; | 16 import 'package:analyzer/src/generated/ast.dart'; |
| 17 import 'package:analyzer/src/generated/engine.dart'; | 17 import 'package:analyzer/src/generated/engine.dart'; |
| 18 import 'package:analyzer/src/generated/error.dart'; | 18 import 'package:analyzer/src/generated/error.dart'; |
| 19 import 'package:analyzer/src/generated/html.dart'; | 19 import 'package:analyzer/src/generated/html.dart'; |
| 20 import 'package:analyzer/src/generated/source.dart'; | 20 import 'package:analyzer/src/generated/source.dart'; |
| 21 | 21 |
| 22 | 22 |
| 23 void sendAnalysisNotificationErrors(AnalysisServer server, String file, | 23 void sendAnalysisNotificationErrors(AnalysisServer server, String file, |
| 24 LineInfo lineInfo, List<AnalysisError> errors) { | 24 LineInfo lineInfo, List<AnalysisError> errors) { |
| 25 if (errors == null) { | 25 try { |
| 26 errors = <AnalysisError>[]; | 26 if (errors == null) { |
| 27 errors = <AnalysisError>[]; |
| 28 } |
| 29 var serverErrors = |
| 30 protocol.doAnalysisError_listFromEngine(lineInfo, errors); |
| 31 var params = new protocol.AnalysisErrorsParams(file, serverErrors); |
| 32 server.sendNotification(params.toNotification()); |
| 33 } catch (exception, stackTrace) { |
| 34 server.sendServerErrorNotification(exception, stackTrace); |
| 27 } | 35 } |
| 28 var serverErrors = protocol.doAnalysisError_listFromEngine(lineInfo, errors); | |
| 29 var params = new protocol.AnalysisErrorsParams(file, serverErrors); | |
| 30 server.sendNotification(params.toNotification()); | |
| 31 } | 36 } |
| 32 | 37 |
| 33 | 38 |
| 34 void sendAnalysisNotificationHighlights(AnalysisServer server, String file, | 39 void sendAnalysisNotificationHighlights(AnalysisServer server, String file, |
| 35 CompilationUnit dartUnit) { | 40 CompilationUnit dartUnit) { |
| 36 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); | 41 try { |
| 37 var params = new protocol.AnalysisHighlightsParams(file, regions); | 42 var regions = new DartUnitHighlightsComputer(dartUnit).compute(); |
| 38 server.sendNotification(params.toNotification()); | 43 var params = new protocol.AnalysisHighlightsParams(file, regions); |
| 44 server.sendNotification(params.toNotification()); |
| 45 } catch (exception, stackTrace) { |
| 46 server.sendServerErrorNotification(exception, stackTrace); |
| 47 } |
| 39 } | 48 } |
| 40 | 49 |
| 41 | 50 |
| 42 void sendAnalysisNotificationNavigation(AnalysisServer server, String file, | 51 void sendAnalysisNotificationNavigation(AnalysisServer server, String file, |
| 43 CompilationUnit dartUnit) { | 52 CompilationUnit dartUnit) { |
| 44 var computer = new DartUnitNavigationComputer(dartUnit); | 53 try { |
| 45 computer.compute(); | 54 var computer = new DartUnitNavigationComputer(dartUnit); |
| 46 var params = new protocol.AnalysisNavigationParams( | 55 computer.compute(); |
| 47 file, | 56 var params = new protocol.AnalysisNavigationParams( |
| 48 computer.regions, | 57 file, |
| 49 computer.targets, | 58 computer.regions, |
| 50 computer.files); | 59 computer.targets, |
| 51 server.sendNotification(params.toNotification()); | 60 computer.files); |
| 61 server.sendNotification(params.toNotification()); |
| 62 } catch (exception, stackTrace) { |
| 63 server.sendServerErrorNotification(exception, stackTrace); |
| 64 } |
| 52 } | 65 } |
| 53 | 66 |
| 54 | 67 |
| 55 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, | 68 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, |
| 56 CompilationUnit dartUnit) { | 69 CompilationUnit dartUnit) { |
| 57 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); | 70 try { |
| 58 var params = new protocol.AnalysisOccurrencesParams(file, occurrences); | 71 var occurrences = new DartUnitOccurrencesComputer(dartUnit).compute(); |
| 59 server.sendNotification(params.toNotification()); | 72 var params = new protocol.AnalysisOccurrencesParams(file, occurrences); |
| 73 server.sendNotification(params.toNotification()); |
| 74 } catch (exception, stackTrace) { |
| 75 server.sendServerErrorNotification(exception, stackTrace); |
| 76 } |
| 60 } | 77 } |
| 61 | 78 |
| 62 | 79 |
| 63 void sendAnalysisNotificationOutline(AnalysisServer server, Source source, | 80 void sendAnalysisNotificationOutline(AnalysisServer server, Source source, |
| 64 LineInfo lineInfo, CompilationUnit dartUnit) { | 81 LineInfo lineInfo, CompilationUnit dartUnit) { |
| 65 var outline = | 82 try { |
| 66 new DartUnitOutlineComputer(source, lineInfo, dartUnit).compute(); | 83 var computer = new DartUnitOutlineComputer(source, lineInfo, dartUnit); |
| 67 var params = new protocol.AnalysisOutlineParams(source.fullName, outline); | 84 var outline = computer.compute(); |
| 68 server.sendNotification(params.toNotification()); | 85 var params = new protocol.AnalysisOutlineParams(source.fullName, outline); |
| 86 server.sendNotification(params.toNotification()); |
| 87 } catch (exception, stackTrace) { |
| 88 server.sendServerErrorNotification(exception, stackTrace); |
| 89 } |
| 69 } | 90 } |
| 70 | 91 |
| 71 | 92 |
| 72 void sendAnalysisNotificationOverrides(AnalysisServer server, String file, | 93 void sendAnalysisNotificationOverrides(AnalysisServer server, String file, |
| 73 CompilationUnit dartUnit) { | 94 CompilationUnit dartUnit) { |
| 74 var overrides = new DartUnitOverridesComputer(dartUnit).compute(); | 95 try { |
| 75 var params = new protocol.AnalysisOverridesParams(file, overrides); | 96 var overrides = new DartUnitOverridesComputer(dartUnit).compute(); |
| 76 server.sendNotification(params.toNotification()); | 97 var params = new protocol.AnalysisOverridesParams(file, overrides); |
| 98 server.sendNotification(params.toNotification()); |
| 99 } catch (exception, stackTrace) { |
| 100 server.sendServerErrorNotification(exception, stackTrace); |
| 101 } |
| 77 } | 102 } |
| 78 | 103 |
| 79 | 104 |
| 80 /** | 105 /** |
| 81 * Instances of [PerformAnalysisOperation] perform a single analysis task. | 106 * Instances of [PerformAnalysisOperation] perform a single analysis task. |
| 82 */ | 107 */ |
| 83 class PerformAnalysisOperation extends ServerOperation { | 108 class PerformAnalysisOperation extends ServerOperation { |
| 84 final AnalysisContext context; | 109 final AnalysisContext context; |
| 85 final bool isContinue; | 110 final bool isContinue; |
| 86 | 111 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 109 AnalysisResult result = context.performAnalysisTask(); | 134 AnalysisResult result = context.performAnalysisTask(); |
| 110 List<ChangeNotice> notices = result.changeNotices; | 135 List<ChangeNotice> notices = result.changeNotices; |
| 111 if (notices == null) { | 136 if (notices == null) { |
| 112 server.sendContextAnalysisDoneNotifications( | 137 server.sendContextAnalysisDoneNotifications( |
| 113 context, | 138 context, |
| 114 AnalysisDoneReason.COMPLETE); | 139 AnalysisDoneReason.COMPLETE); |
| 115 return; | 140 return; |
| 116 } | 141 } |
| 117 // process results | 142 // process results |
| 118 sendNotices(server, notices); | 143 sendNotices(server, notices); |
| 119 updateIndex(server.index, notices); | 144 updateIndex(server, notices); |
| 120 // continue analysis | 145 // continue analysis |
| 121 server.addOperation(new PerformAnalysisOperation(context, true)); | 146 server.addOperation(new PerformAnalysisOperation(context, true)); |
| 122 } | 147 } |
| 123 | 148 |
| 124 /** | 149 /** |
| 125 * Send the information in the given list of notices back to the client. | 150 * Send the information in the given list of notices back to the client. |
| 126 */ | 151 */ |
| 127 void sendNotices(AnalysisServer server, List<ChangeNotice> notices) { | 152 void sendNotices(AnalysisServer server, List<ChangeNotice> notices) { |
| 128 for (int i = 0; i < notices.length; i++) { | 153 for (int i = 0; i < notices.length; i++) { |
| 129 ChangeNotice notice = notices[i]; | 154 ChangeNotice notice = notices[i]; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 sendAnalysisNotificationErrors( | 188 sendAnalysisNotificationErrors( |
| 164 server, | 189 server, |
| 165 file, | 190 file, |
| 166 notice.lineInfo, | 191 notice.lineInfo, |
| 167 notice.errors); | 192 notice.errors); |
| 168 } | 193 } |
| 169 server.fileAnalyzed(notice); | 194 server.fileAnalyzed(notice); |
| 170 } | 195 } |
| 171 } | 196 } |
| 172 | 197 |
| 173 void updateIndex(Index index, List<ChangeNotice> notices) { | 198 void updateIndex(AnalysisServer server, List<ChangeNotice> notices) { |
| 199 Index index = server.index; |
| 174 if (index == null) { | 200 if (index == null) { |
| 175 return; | 201 return; |
| 176 } | 202 } |
| 177 for (ChangeNotice notice in notices) { | 203 for (ChangeNotice notice in notices) { |
| 178 // Dart | 204 // Dart |
| 179 { | 205 try { |
| 180 CompilationUnit dartUnit = notice.compilationUnit; | 206 CompilationUnit dartUnit = notice.compilationUnit; |
| 181 if (dartUnit != null) { | 207 if (dartUnit != null) { |
| 182 index.indexUnit(context, dartUnit); | 208 index.indexUnit(context, dartUnit); |
| 183 } | 209 } |
| 210 } catch (exception, stackTrace) { |
| 211 server.sendServerErrorNotification(exception, stackTrace); |
| 184 } | 212 } |
| 185 // HTML | 213 // HTML |
| 186 { | 214 try { |
| 187 HtmlUnit htmlUnit = notice.htmlUnit; | 215 HtmlUnit htmlUnit = notice.htmlUnit; |
| 188 if (htmlUnit != null) { | 216 if (htmlUnit != null) { |
| 189 index.indexHtmlUnit(context, htmlUnit); | 217 index.indexHtmlUnit(context, htmlUnit); |
| 190 } | 218 } |
| 219 } catch (exception, stackTrace) { |
| 220 server.sendServerErrorNotification(exception, stackTrace); |
| 191 } | 221 } |
| 192 } | 222 } |
| 193 } | 223 } |
| 194 } | 224 } |
| OLD | NEW |