| 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 protocol.server; | 5 library protocol.server; |
| 6 | 6 |
| 7 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 7 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
| 8 import 'package:analysis_server/plugin/protocol/protocol_dart.dart'; | 8 import 'package:analysis_server/plugin/protocol/protocol_dart.dart'; |
| 9 import 'package:analysis_server/src/services/correction/fix.dart'; | 9 import 'package:analysis_server/src/services/correction/fix.dart'; |
| 10 import 'package:analysis_server/src/services/search/search_engine.dart' | 10 import 'package:analysis_server/src/services/search/search_engine.dart' |
| 11 as engine; | 11 as engine; |
| 12 import 'package:analyzer/source/error_processor.dart'; |
| 12 import 'package:analyzer/src/generated/ast.dart' as engine; | 13 import 'package:analyzer/src/generated/ast.dart' as engine; |
| 13 import 'package:analyzer/src/generated/element.dart' as engine; | 14 import 'package:analyzer/src/generated/element.dart' as engine; |
| 14 import 'package:analyzer/src/generated/engine.dart' as engine; | 15 import 'package:analyzer/src/generated/engine.dart' as engine; |
| 15 import 'package:analyzer/src/generated/error.dart' as engine; | 16 import 'package:analyzer/src/generated/error.dart' as engine; |
| 16 import 'package:analyzer/src/generated/source.dart' as engine; | 17 import 'package:analyzer/src/generated/source.dart' as engine; |
| 17 import 'package:analyzer/src/generated/utilities_dart.dart' as engine; | 18 import 'package:analyzer/src/generated/utilities_dart.dart' as engine; |
| 18 | 19 |
| 19 export 'package:analysis_server/plugin/protocol/protocol.dart'; | 20 export 'package:analysis_server/plugin/protocol/protocol.dart'; |
| 20 export 'package:analysis_server/plugin/protocol/protocol_dart.dart'; | 21 export 'package:analysis_server/plugin/protocol/protocol_dart.dart'; |
| 21 | 22 |
| 22 /** | 23 /** |
| 23 * Returns a list of AnalysisErrors correponding to the given list of Engine | 24 * Returns a list of AnalysisErrors corresponding to the given list of Engine |
| 24 * errors. | 25 * errors. |
| 25 */ | 26 */ |
| 26 List<AnalysisError> doAnalysisError_listFromEngine( | 27 List<AnalysisError> doAnalysisError_listFromEngine( |
| 27 engine.LineInfo lineInfo, List<engine.AnalysisError> errors) { | 28 engine.AnalysisContext context, |
| 28 return errors.map((engine.AnalysisError error) { | 29 engine.LineInfo lineInfo, |
| 29 return newAnalysisError_fromEngine(lineInfo, error); | 30 List<engine.AnalysisError> errors) { |
| 30 }).toList(); | 31 List<AnalysisError> serverErrors = <AnalysisError>[]; |
| 32 for (engine.AnalysisError error in errors) { |
| 33 ErrorProcessor processor = ErrorProcessor.getProcessor(context, error); |
| 34 if (processor != null) { |
| 35 engine.ErrorSeverity severity = processor.severity; |
| 36 // Errors with null severity are filtered out. |
| 37 if (severity != null) { |
| 38 // Specified severities override. |
| 39 serverErrors |
| 40 .add(newAnalysisError_fromEngine(lineInfo, error, severity)); |
| 41 } |
| 42 } else { |
| 43 serverErrors.add(newAnalysisError_fromEngine(lineInfo, error)); |
| 44 } |
| 45 } |
| 46 return serverErrors; |
| 31 } | 47 } |
| 32 | 48 |
| 33 /** | 49 /** |
| 34 * Adds [edit] to the [FileEdit] for the given [element]. | 50 * Adds [edit] to the [FileEdit] for the given [element]. |
| 35 */ | 51 */ |
| 36 void doSourceChange_addElementEdit( | 52 void doSourceChange_addElementEdit( |
| 37 SourceChange change, engine.Element element, SourceEdit edit) { | 53 SourceChange change, engine.Element element, SourceEdit edit) { |
| 38 engine.AnalysisContext context = element.context; | 54 engine.AnalysisContext context = element.context; |
| 39 engine.Source source = element.source; | 55 engine.Source source = element.source; |
| 40 doSourceChange_addSourceEdit(change, context, source, edit); | 56 doSourceChange_addSourceEdit(change, context, source, edit); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 62 return type != null ? type.displayName : 'dynamic'; | 78 return type != null ? type.displayName : 'dynamic'; |
| 63 } else if (element is engine.FunctionTypeAliasElement) { | 79 } else if (element is engine.FunctionTypeAliasElement) { |
| 64 return element.returnType.toString(); | 80 return element.returnType.toString(); |
| 65 } else { | 81 } else { |
| 66 return null; | 82 return null; |
| 67 } | 83 } |
| 68 } | 84 } |
| 69 | 85 |
| 70 /** | 86 /** |
| 71 * Construct based on error information from the analyzer engine. | 87 * Construct based on error information from the analyzer engine. |
| 88 * |
| 89 * If an [errorSeverity] is specified, it will override the one in [error]. |
| 72 */ | 90 */ |
| 73 AnalysisError newAnalysisError_fromEngine( | 91 AnalysisError newAnalysisError_fromEngine( |
| 74 engine.LineInfo lineInfo, engine.AnalysisError error) { | 92 engine.LineInfo lineInfo, engine.AnalysisError error, |
| 93 [engine.ErrorSeverity errorSeverity]) { |
| 75 engine.ErrorCode errorCode = error.errorCode; | 94 engine.ErrorCode errorCode = error.errorCode; |
| 76 // prepare location | 95 // prepare location |
| 77 Location location; | 96 Location location; |
| 78 { | 97 { |
| 79 String file = error.source.fullName; | 98 String file = error.source.fullName; |
| 80 int offset = error.offset; | 99 int offset = error.offset; |
| 81 int length = error.length; | 100 int length = error.length; |
| 82 int startLine = -1; | 101 int startLine = -1; |
| 83 int startColumn = -1; | 102 int startColumn = -1; |
| 84 if (lineInfo != null) { | 103 if (lineInfo != null) { |
| 85 engine.LineInfo_Location lineLocation = lineInfo.getLocation(offset); | 104 engine.LineInfo_Location lineLocation = lineInfo.getLocation(offset); |
| 86 if (lineLocation != null) { | 105 if (lineLocation != null) { |
| 87 startLine = lineLocation.lineNumber; | 106 startLine = lineLocation.lineNumber; |
| 88 startColumn = lineLocation.columnNumber; | 107 startColumn = lineLocation.columnNumber; |
| 89 } | 108 } |
| 90 } | 109 } |
| 91 location = new Location(file, offset, length, startLine, startColumn); | 110 location = new Location(file, offset, length, startLine, startColumn); |
| 92 } | 111 } |
| 112 |
| 113 // Deafult to the error's severity if none is specified. |
| 114 errorSeverity ??= errorCode.errorSeverity; |
| 115 |
| 93 // done | 116 // done |
| 94 var severity = new AnalysisErrorSeverity(errorCode.errorSeverity.name); | 117 var severity = new AnalysisErrorSeverity(errorSeverity.name); |
| 95 var type = new AnalysisErrorType(errorCode.type.name); | 118 var type = new AnalysisErrorType(errorCode.type.name); |
| 96 String message = error.message; | 119 String message = error.message; |
| 97 String correction = error.correction; | 120 String correction = error.correction; |
| 98 bool fix = hasFix(error.errorCode); | 121 bool fix = hasFix(error.errorCode); |
| 99 return new AnalysisError(severity, type, location, message, | 122 return new AnalysisError(severity, type, location, message, |
| 100 correction: correction, hasFix: fix); | 123 correction: correction, hasFix: fix); |
| 101 } | 124 } |
| 102 | 125 |
| 103 /** | 126 /** |
| 104 * Create a Location based on an [engine.Element]. | 127 * Create a Location based on an [engine.Element]. |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 if (lineInfo != null) { | 255 if (lineInfo != null) { |
| 233 engine.LineInfo_Location offsetLocation = | 256 engine.LineInfo_Location offsetLocation = |
| 234 lineInfo.getLocation(range.offset); | 257 lineInfo.getLocation(range.offset); |
| 235 startLine = offsetLocation.lineNumber; | 258 startLine = offsetLocation.lineNumber; |
| 236 startColumn = offsetLocation.columnNumber; | 259 startColumn = offsetLocation.columnNumber; |
| 237 } | 260 } |
| 238 } | 261 } |
| 239 return new Location( | 262 return new Location( |
| 240 source.fullName, range.offset, range.length, startLine, startColumn); | 263 source.fullName, range.offset, range.length, startLine, startColumn); |
| 241 } | 264 } |
| OLD | NEW |