| 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 edit.domain; | 5 library edit.domain; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; | 9 import 'package:analysis_server/plugin/edit/assist/assist_core.dart'; |
| 10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; | 10 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart'; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 134 |
| 135 return new EditFormatResult(edits, newStart, newLength) | 135 return new EditFormatResult(edits, newStart, newLength) |
| 136 .toResponse(request.id); | 136 .toResponse(request.id); |
| 137 } | 137 } |
| 138 | 138 |
| 139 Future getAssists(Request request) async { | 139 Future getAssists(Request request) async { |
| 140 EditGetAssistsParams params = new EditGetAssistsParams.fromRequest(request); | 140 EditGetAssistsParams params = new EditGetAssistsParams.fromRequest(request); |
| 141 List<Assist> assists; | 141 List<Assist> assists; |
| 142 if (server.options.enableNewAnalysisDriver) { | 142 if (server.options.enableNewAnalysisDriver) { |
| 143 AnalysisResult result = await server.getAnalysisResult(params.file); | 143 AnalysisResult result = await server.getAnalysisResult(params.file); |
| 144 CompilationUnit unit = result.unit; | 144 if (result != null) { |
| 145 DartAssistContext dartAssistContext = new _DartAssistContextForValues( | 145 CompilationUnit unit = result.unit; |
| 146 unit.element.source, | 146 DartAssistContext dartAssistContext = new _DartAssistContextForValues( |
| 147 params.offset, | 147 unit.element.source, |
| 148 params.length, | 148 params.offset, |
| 149 unit.element.context, | 149 params.length, |
| 150 unit); | 150 unit.element.context, |
| 151 try { | 151 unit); |
| 152 AssistProcessor processor = new AssistProcessor(dartAssistContext); | 152 try { |
| 153 assists = await processor.compute(); | 153 AssistProcessor processor = new AssistProcessor(dartAssistContext); |
| 154 } catch (_) {} | 154 assists = await processor.compute(); |
| 155 } catch (_) {} |
| 156 } |
| 155 } else { | 157 } else { |
| 156 ContextSourcePair pair = server.getContextSourcePair(params.file); | 158 ContextSourcePair pair = server.getContextSourcePair(params.file); |
| 157 engine.AnalysisContext context = pair.context; | 159 engine.AnalysisContext context = pair.context; |
| 158 Source source = pair.source; | 160 Source source = pair.source; |
| 159 if (context != null && source != null) { | 161 if (context != null && source != null) { |
| 160 assists = await computeAssists( | 162 assists = await computeAssists( |
| 161 server.serverPlugin, context, source, params.offset, params.length); | 163 server.serverPlugin, context, source, params.offset, params.length); |
| 162 } | 164 } |
| 163 } | 165 } |
| 164 // Send the assist changes. | 166 // Send the assist changes. |
| 165 List<SourceChange> changes = <SourceChange>[]; | 167 List<SourceChange> changes = <SourceChange>[]; |
| 166 assists?.forEach((Assist assist) { | 168 assists?.forEach((Assist assist) { |
| 167 changes.add(assist.change); | 169 changes.add(assist.change); |
| 168 }); | 170 }); |
| 169 Response response = | 171 Response response = |
| 170 new EditGetAssistsResult(changes).toResponse(request.id); | 172 new EditGetAssistsResult(changes).toResponse(request.id); |
| 171 server.sendResponse(response); | 173 server.sendResponse(response); |
| 172 } | 174 } |
| 173 | 175 |
| 174 Future getFixes(Request request) async { | 176 Future getFixes(Request request) async { |
| 175 var params = new EditGetFixesParams.fromRequest(request); | 177 var params = new EditGetFixesParams.fromRequest(request); |
| 176 String file = params.file; | 178 String file = params.file; |
| 177 int offset = params.offset; | 179 int offset = params.offset; |
| 178 | 180 |
| 179 List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[]; | 181 List<AnalysisErrorFixes> errorFixesList = <AnalysisErrorFixes>[]; |
| 180 if (server.options.enableNewAnalysisDriver) { | 182 if (server.options.enableNewAnalysisDriver) { |
| 181 AnalysisResult result = await server.getAnalysisResult(file); | 183 AnalysisResult result = await server.getAnalysisResult(file); |
| 182 CompilationUnit unit = result.unit; | 184 if (result != null) { |
| 183 LineInfo lineInfo = result.lineInfo; | 185 CompilationUnit unit = result.unit; |
| 184 int requestLine = lineInfo.getLocation(offset).lineNumber; | 186 LineInfo lineInfo = result.lineInfo; |
| 185 for (engine.AnalysisError error in result.errors) { | 187 int requestLine = lineInfo.getLocation(offset).lineNumber; |
| 186 int errorLine = lineInfo.getLocation(error.offset).lineNumber; | 188 for (engine.AnalysisError error in result.errors) { |
| 187 if (errorLine == requestLine) { | 189 int errorLine = lineInfo.getLocation(error.offset).lineNumber; |
| 188 var context = new _DartFixContextImpl( | 190 if (errorLine == requestLine) { |
| 189 server.resourceProvider, unit.element.context, unit, error); | 191 var context = new _DartFixContextImpl( |
| 190 List<Fix> fixes = | 192 server.resourceProvider, unit.element.context, unit, error); |
| 191 await new DefaultFixContributor().internalComputeFixes(context); | 193 List<Fix> fixes = |
| 192 if (fixes.isNotEmpty) { | 194 await new DefaultFixContributor().internalComputeFixes(context); |
| 193 AnalysisError serverError = | 195 if (fixes.isNotEmpty) { |
| 194 newAnalysisError_fromEngine(lineInfo, error); | 196 AnalysisError serverError = |
| 195 AnalysisErrorFixes errorFixes = new AnalysisErrorFixes(serverError); | 197 newAnalysisError_fromEngine(lineInfo, error); |
| 196 errorFixesList.add(errorFixes); | 198 AnalysisErrorFixes errorFixes = |
| 197 fixes.forEach((fix) { | 199 new AnalysisErrorFixes(serverError); |
| 198 errorFixes.fixes.add(fix.change); | 200 errorFixesList.add(errorFixes); |
| 199 }); | 201 fixes.forEach((fix) { |
| 202 errorFixes.fixes.add(fix.change); |
| 203 }); |
| 204 } |
| 200 } | 205 } |
| 201 } | 206 } |
| 202 } | 207 } |
| 203 } else { | 208 } else { |
| 204 CompilationUnit unit = await server.getResolvedCompilationUnit(file); | 209 CompilationUnit unit = await server.getResolvedCompilationUnit(file); |
| 205 engine.AnalysisErrorInfo errorInfo = server.getErrors(file); | 210 engine.AnalysisErrorInfo errorInfo = server.getErrors(file); |
| 206 if (errorInfo != null) { | 211 LineInfo lineInfo = errorInfo?.lineInfo; |
| 207 LineInfo lineInfo = errorInfo.lineInfo; | 212 if (unit != null && errorInfo != null && lineInfo != null) { |
| 208 if (lineInfo != null) { | 213 int requestLine = lineInfo.getLocation(offset).lineNumber; |
| 209 int requestLine = lineInfo.getLocation(offset).lineNumber; | 214 for (engine.AnalysisError error in errorInfo.errors) { |
| 210 for (engine.AnalysisError error in errorInfo.errors) { | 215 int errorLine = lineInfo.getLocation(error.offset).lineNumber; |
| 211 int errorLine = lineInfo.getLocation(error.offset).lineNumber; | 216 if (errorLine == requestLine) { |
| 212 if (errorLine == requestLine) { | 217 List<Fix> fixes = await computeFixes(server.serverPlugin, |
| 213 List<Fix> fixes = await computeFixes(server.serverPlugin, | 218 server.resourceProvider, unit.element.context, error); |
| 214 server.resourceProvider, unit.element.context, error); | 219 if (fixes.isNotEmpty) { |
| 215 if (fixes.isNotEmpty) { | 220 AnalysisError serverError = |
| 216 AnalysisError serverError = | 221 newAnalysisError_fromEngine(lineInfo, error); |
| 217 newAnalysisError_fromEngine(lineInfo, error); | 222 AnalysisErrorFixes errorFixes = |
| 218 AnalysisErrorFixes errorFixes = | 223 new AnalysisErrorFixes(serverError); |
| 219 new AnalysisErrorFixes(serverError); | 224 errorFixesList.add(errorFixes); |
| 220 errorFixesList.add(errorFixes); | 225 fixes.forEach((fix) { |
| 221 fixes.forEach((fix) { | 226 errorFixes.fixes.add(fix.change); |
| 222 errorFixes.fixes.add(fix.change); | 227 }); |
| 223 }); | |
| 224 } | |
| 225 } | 228 } |
| 226 } | 229 } |
| 227 } | 230 } |
| 228 } | 231 } |
| 229 } | 232 } |
| 230 | 233 |
| 231 // Send the response. | 234 // Send the response. |
| 232 server.sendResponse( | 235 server.sendResponse( |
| 233 new EditGetFixesResult(errorFixesList).toResponse(request.id)); | 236 new EditGetFixesResult(errorFixesList).toResponse(request.id)); |
| 234 } | 237 } |
| (...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 } | 953 } |
| 951 return new RefactoringStatus(); | 954 return new RefactoringStatus(); |
| 952 } | 955 } |
| 953 } | 956 } |
| 954 | 957 |
| 955 /** | 958 /** |
| 956 * [_RefactoringManager] throws instances of this class internally to stop | 959 * [_RefactoringManager] throws instances of this class internally to stop |
| 957 * processing in a manager that was reset. | 960 * processing in a manager that was reset. |
| 958 */ | 961 */ |
| 959 class _ResetError {} | 962 class _ResetError {} |
| OLD | NEW |