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

Side by Side Diff: pkg/analysis_server/lib/src/operation/operation_analysis.dart

Issue 415263002: Drop 'errorToJson', use server's AnalysisError. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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 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/constants.dart'; 13 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/operation/operation.dart'; 14 import 'package:analysis_server/src/operation/operation.dart';
15 import 'package:analysis_server/src/protocol.dart'; 15 import 'package:analysis_server/src/protocol.dart';
16 import 'package:analysis_services/constants.dart'; 16 import 'package:analysis_services/constants.dart';
17 import 'package:analysis_services/index/index.dart'; 17 import 'package:analysis_services/index/index.dart';
18 import 'package:analyzer/src/generated/ast.dart'; 18 import 'package:analyzer/src/generated/ast.dart';
19 import 'package:analyzer/src/generated/engine.dart'; 19 import 'package:analyzer/src/generated/engine.dart';
20 import 'package:analyzer/src/generated/error.dart'; 20 import 'package:analyzer/src/generated/error.dart';
21 import 'package:analyzer/src/generated/html.dart'; 21 import 'package:analyzer/src/generated/html.dart';
22 import 'package:analyzer/src/generated/source.dart'; 22 import 'package:analyzer/src/generated/source.dart';
23 23 import 'package:analysis_server/src/computer/error.dart' as server_prefix;
24
25 Map<String, Object> errorToJson(LineInfo lineInfo, AnalysisError analysisError)
26 {
27 ErrorCode errorCode = analysisError.errorCode;
28 // prepare location
29 int offset = analysisError.offset;
30 Map<String, Object> location = {
31 FILE: analysisError.source.fullName,
32 OFFSET: offset,
33 LENGTH: analysisError.length
34 };
35 if (lineInfo != null) {
36 LineInfo_Location lineLocation = lineInfo.getLocation(offset);
37 if (lineLocation != null) {
38 location[START_LINE] = lineLocation.lineNumber;
39 location[START_COLUMN] = lineLocation.columnNumber;
40 }
41 }
42 // fill JSON
43 Map<String, Object> result = {
44 // TODO(scheglov) add Enum.fullName ?
45 SEVERITY: errorCode.errorSeverity.name,
46 TYPE: errorCode.type.name,
47 LOCATION: location,
48 MESSAGE: analysisError.message
49 };
50 if (analysisError.correction != null) {
51 result[CORRECTION] = analysisError.correction;
52 }
53 return result;
54 }
55 24
56 25
57 void sendAnalysisNotificationErrors(AnalysisServer server, String file, 26 void sendAnalysisNotificationErrors(AnalysisServer server, String file,
58 LineInfo lineInfo, List<AnalysisError> errors) { 27 LineInfo lineInfo, List<AnalysisError> errors) {
59 Notification notification = new Notification(ANALYSIS_ERRORS); 28 Notification notification = new Notification(ANALYSIS_ERRORS);
60 notification.setParameter(FILE, file); 29 notification.setParameter(FILE, file);
61 notification.setParameter(ERRORS, errors.map((error) { 30 notification.setParameter(
62 return errorToJson(lineInfo, error); 31 ERRORS,
63 }).toList()); 32 server_prefix.engineErrorsToJson(lineInfo, errors));
64 server.sendNotification(notification); 33 server.sendNotification(notification);
65 } 34 }
66 35
67 36
68 void sendAnalysisNotificationHighlights(AnalysisServer server, String file, 37 void sendAnalysisNotificationHighlights(AnalysisServer server, String file,
69 CompilationUnit dartUnit) { 38 CompilationUnit dartUnit) {
70 Notification notification = new Notification(ANALYSIS_HIGHLIGHTS); 39 Notification notification = new Notification(ANALYSIS_HIGHLIGHTS);
71 notification.setParameter(FILE, file); 40 notification.setParameter(FILE, file);
72 notification.setParameter(REGIONS, new DartUnitHighlightsComputer( 41 notification.setParameter(
73 dartUnit).compute()); 42 REGIONS,
43 new DartUnitHighlightsComputer(dartUnit).compute());
74 server.sendNotification(notification); 44 server.sendNotification(notification);
75 } 45 }
76 46
77 47
78 void sendAnalysisNotificationNavigation(AnalysisServer server, String file, 48 void sendAnalysisNotificationNavigation(AnalysisServer server, String file,
79 CompilationUnit dartUnit) { 49 CompilationUnit dartUnit) {
80 Notification notification = new Notification(ANALYSIS_NAVIGATION); 50 Notification notification = new Notification(ANALYSIS_NAVIGATION);
81 notification.setParameter(FILE, file); 51 notification.setParameter(FILE, file);
82 notification.setParameter(REGIONS, new DartUnitNavigationComputer( 52 notification.setParameter(
83 dartUnit).compute()); 53 REGIONS,
54 new DartUnitNavigationComputer(dartUnit).compute());
84 server.sendNotification(notification); 55 server.sendNotification(notification);
85 } 56 }
86 57
87 58
88 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file, 59 void sendAnalysisNotificationOccurrences(AnalysisServer server, String file,
89 CompilationUnit dartUnit) { 60 CompilationUnit dartUnit) {
90 Notification notification = new Notification(ANALYSIS_OCCURRENCES); 61 Notification notification = new Notification(ANALYSIS_OCCURRENCES);
91 notification.setParameter(FILE, file); 62 notification.setParameter(FILE, file);
92 notification.setParameter(OCCURRENCES, new DartUnitOccurrencesComputer( 63 notification.setParameter(
93 dartUnit).compute()); 64 OCCURRENCES,
65 new DartUnitOccurrencesComputer(dartUnit).compute());
94 server.sendNotification(notification); 66 server.sendNotification(notification);
95 } 67 }
96 68
97 69
98 void sendAnalysisNotificationOutline(AnalysisServer server, 70 void sendAnalysisNotificationOutline(AnalysisServer server,
99 AnalysisContext context, Source source, CompilationUnit dartUnit) { 71 AnalysisContext context, Source source, CompilationUnit dartUnit) {
100 Notification notification = new Notification(ANALYSIS_OUTLINE); 72 Notification notification = new Notification(ANALYSIS_OUTLINE);
101 notification.setParameter(FILE, source.fullName); 73 notification.setParameter(FILE, source.fullName);
102 notification.setParameter(OUTLINE, new DartUnitOutlineComputer(context, 74 notification.setParameter(
103 source, dartUnit).compute()); 75 OUTLINE,
76 new DartUnitOutlineComputer(context, source, dartUnit).compute());
104 server.sendNotification(notification); 77 server.sendNotification(notification);
105 } 78 }
106 79
107 80
108 void sendAnalysisNotificationOverrides(AnalysisServer server, 81 void sendAnalysisNotificationOverrides(AnalysisServer server, String file,
109 String file, CompilationUnit dartUnit) { 82 CompilationUnit dartUnit) {
110 Notification notification = new Notification(ANALYSIS_OVERRIDES); 83 Notification notification = new Notification(ANALYSIS_OVERRIDES);
111 notification.setParameter(FILE, file); 84 notification.setParameter(FILE, file);
112 notification.setParameter(OVERRIDES, new DartUnitOverridesComputer( 85 notification.setParameter(
113 dartUnit).compute()); 86 OVERRIDES,
87 new DartUnitOverridesComputer(dartUnit).compute());
114 server.sendNotification(notification); 88 server.sendNotification(notification);
115 } 89 }
116 90
117 91
118 /** 92 /**
119 * Instances of [PerformAnalysisOperation] perform a single analysis task. 93 * Instances of [PerformAnalysisOperation] perform a single analysis task.
120 */ 94 */
121 class PerformAnalysisOperation extends ServerOperation { 95 class PerformAnalysisOperation extends ServerOperation {
122 final AnalysisContext context; 96 final AnalysisContext context;
123 final bool isContinue; 97 final bool isContinue;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 153 }
180 if (server.hasAnalysisSubscription(AnalysisService.OUTLINE, file)) { 154 if (server.hasAnalysisSubscription(AnalysisService.OUTLINE, file)) {
181 sendAnalysisNotificationOutline(server, context, source, dartUnit); 155 sendAnalysisNotificationOutline(server, context, source, dartUnit);
182 } 156 }
183 if (server.hasAnalysisSubscription(AnalysisService.OVERRIDES, file)) { 157 if (server.hasAnalysisSubscription(AnalysisService.OVERRIDES, file)) {
184 sendAnalysisNotificationOverrides(server, file, dartUnit); 158 sendAnalysisNotificationOverrides(server, file, dartUnit);
185 } 159 }
186 } 160 }
187 // TODO(scheglov) use default subscriptions 161 // TODO(scheglov) use default subscriptions
188 if (!source.isInSystemLibrary) { 162 if (!source.isInSystemLibrary) {
189 sendAnalysisNotificationErrors(server, file, notice.lineInfo, 163 sendAnalysisNotificationErrors(
164 server,
165 file,
166 notice.lineInfo,
190 notice.errors); 167 notice.errors);
191 } 168 }
192 } 169 }
193 } 170 }
194 171
195 void updateIndex(Index index, List<ChangeNotice> notices) { 172 void updateIndex(Index index, List<ChangeNotice> notices) {
196 if (index == null) { 173 if (index == null) {
197 return; 174 return;
198 } 175 }
199 for (ChangeNotice notice in notices) { 176 for (ChangeNotice notice in notices) {
200 // Dart 177 // Dart
201 { 178 {
202 CompilationUnit dartUnit = notice.compilationUnit; 179 CompilationUnit dartUnit = notice.compilationUnit;
203 if (dartUnit != null) { 180 if (dartUnit != null) {
204 index.indexUnit(context, dartUnit); 181 index.indexUnit(context, dartUnit);
205 } 182 }
206 } 183 }
207 // HTML 184 // HTML
208 { 185 {
209 HtmlUnit htmlUnit = notice.htmlUnit; 186 HtmlUnit htmlUnit = notice.htmlUnit;
210 if (htmlUnit != null) { 187 if (htmlUnit != null) {
211 index.indexHtmlUnit(context, htmlUnit); 188 index.indexHtmlUnit(context, htmlUnit);
212 } 189 }
213 } 190 }
214 } 191 }
215 } 192 }
216 } 193 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/domain_analysis.dart ('k') | pkg/analysis_server/test/computer/error_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698