| 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/src/analysis_server.dart'; | 9 import 'package:analysis_server/src/analysis_server.dart'; |
| 10 import 'package:analysis_server/src/constants.dart'; | 10 import 'package:analysis_server/src/constants.dart'; |
| 11 import 'package:analysis_server/src/protocol.dart' hide Element; | 11 import 'package:analysis_server/src/protocol.dart' hide Element; |
| 12 import 'package:analysis_server/src/services/correction/assist.dart'; | 12 import 'package:analysis_server/src/services/correction/assist.dart'; |
| 13 import 'package:analysis_server/src/services/correction/fix.dart'; | 13 import 'package:analysis_server/src/services/correction/fix.dart'; |
| 14 import 'package:analysis_server/src/services/correction/status.dart'; | 14 import 'package:analysis_server/src/services/correction/status.dart'; |
| 15 import 'package:analysis_server/src/services/json.dart'; | 15 import 'package:analysis_server/src/services/json.dart'; |
| 16 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; | 16 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; |
| 17 import 'package:analysis_server/src/services/search/search_engine.dart'; | 17 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 18 import 'package:analyzer/src/generated/ast.dart'; | 18 import 'package:analyzer/src/generated/ast.dart'; |
| 19 import 'package:analyzer/src/generated/element.dart'; | 19 import 'package:analyzer/src/generated/element.dart'; |
| 20 import 'package:analyzer/src/generated/engine.dart' as engine; | 20 import 'package:analyzer/src/generated/engine.dart' as engine; |
| 21 import 'package:analyzer/src/generated/error.dart' as engine; | 21 import 'package:analyzer/src/generated/error.dart' as engine; |
| 22 import 'package:analyzer/src/generated/source.dart'; | 22 import 'package:analyzer/src/generated/source.dart'; |
| 23 import 'package:analyzer/src/generated/engine.dart'; | |
| 24 | 23 |
| 25 | 24 |
| 26 /** | 25 /** |
| 27 * Instances of the class [EditDomainHandler] implement a [RequestHandler] | 26 * Instances of the class [EditDomainHandler] implement a [RequestHandler] |
| 28 * that handles requests in the edit domain. | 27 * that handles requests in the edit domain. |
| 29 */ | 28 */ |
| 30 class EditDomainHandler implements RequestHandler { | 29 class EditDomainHandler implements RequestHandler { |
| 31 /** | 30 /** |
| 32 * The analysis server that is using this handler to process requests. | 31 * The analysis server that is using this handler to process requests. |
| 33 */ | 32 */ |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 bool get _hasFatalError { | 187 bool get _hasFatalError { |
| 189 return initStatus.hasFatalError || | 188 return initStatus.hasFatalError || |
| 190 optionsStatus.hasFatalError || | 189 optionsStatus.hasFatalError || |
| 191 finalStatus.hasFatalError; | 190 finalStatus.hasFatalError; |
| 192 } | 191 } |
| 193 | 192 |
| 194 /** | 193 /** |
| 195 * Checks if [refactoring] requires options. | 194 * Checks if [refactoring] requires options. |
| 196 */ | 195 */ |
| 197 bool get _requiresOptions { | 196 bool get _requiresOptions { |
| 198 if (refactoring is ConvertMethodToGetterRefactoring || | 197 return refactoring is ExtractLocalRefactoring || |
| 199 refactoring is InlineLocalRefactoring) { | 198 refactoring is ExtractMethodRefactoring || |
| 200 return false; | 199 refactoring is InlineMethodRefactoring || |
| 201 } | 200 refactoring is MoveFileRefactoring || |
| 202 return true; | 201 refactoring is RenameRefactoring; |
| 203 } | 202 } |
| 204 | 203 |
| 205 void getRefactoring(Request request) { | 204 void getRefactoring(Request request) { |
| 206 // prepare for processing the request | 205 // prepare for processing the request |
| 207 requestId = request.id; | 206 requestId = request.id; |
| 208 result = new EditGetRefactoringResult( | 207 result = new EditGetRefactoringResult( |
| 209 EMPTY_PROBLEM_LIST, | 208 EMPTY_PROBLEM_LIST, |
| 210 EMPTY_PROBLEM_LIST, | 209 EMPTY_PROBLEM_LIST, |
| 211 EMPTY_PROBLEM_LIST); | 210 EMPTY_PROBLEM_LIST); |
| 212 // process the request | 211 // process the request |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 this.offset == offset && | 258 this.offset == offset && |
| 260 this.length == length) { | 259 this.length == length) { |
| 261 return new Future.value(initStatus); | 260 return new Future.value(initStatus); |
| 262 } | 261 } |
| 263 _reset(); | 262 _reset(); |
| 264 this.kind = kind; | 263 this.kind = kind; |
| 265 this.file = file; | 264 this.file = file; |
| 266 this.offset = offset; | 265 this.offset = offset; |
| 267 this.length = length; | 266 this.length = length; |
| 268 // create a new Refactoring instance | 267 // create a new Refactoring instance |
| 268 if (kind == RefactoringKind.CONVERT_GETTER_TO_METHOD) { |
| 269 List<Element> elements = server.getElementsAtOffset(file, offset); |
| 270 if (elements.isNotEmpty) { |
| 271 Element element = elements[0]; |
| 272 if (element is ExecutableElement) { |
| 273 refactoring = |
| 274 new ConvertGetterToMethodRefactoring(searchEngine, element); |
| 275 } |
| 276 } |
| 277 } |
| 269 if (kind == RefactoringKind.CONVERT_METHOD_TO_GETTER) { | 278 if (kind == RefactoringKind.CONVERT_METHOD_TO_GETTER) { |
| 270 List<Element> elements = server.getElementsAtOffset(file, offset); | 279 List<Element> elements = server.getElementsAtOffset(file, offset); |
| 271 if (elements.isNotEmpty) { | 280 if (elements.isNotEmpty) { |
| 272 Element element = elements[0]; | 281 Element element = elements[0]; |
| 273 if (element is ExecutableElement) { | 282 if (element is ExecutableElement) { |
| 274 refactoring = | 283 refactoring = |
| 275 new ConvertMethodToGetterRefactoring(searchEngine, element); | 284 new ConvertMethodToGetterRefactoring(searchEngine, element); |
| 276 } | 285 } |
| 277 } | 286 } |
| 278 } | 287 } |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 if (refactoring is RenameRefactoring) { | 380 if (refactoring is RenameRefactoring) { |
| 372 RenameRefactoring refactoring = this.refactoring; | 381 RenameRefactoring refactoring = this.refactoring; |
| 373 RenameFeedback feedback = this.feedback; | 382 RenameFeedback feedback = this.feedback; |
| 374 feedback.elementKindName = refactoring.elementKindName; | 383 feedback.elementKindName = refactoring.elementKindName; |
| 375 feedback.oldName = refactoring.oldName; | 384 feedback.oldName = refactoring.oldName; |
| 376 } | 385 } |
| 377 return initStatus; | 386 return initStatus; |
| 378 }); | 387 }); |
| 379 } | 388 } |
| 380 | 389 |
| 381 void _reset([AnalysisContext context]) { | 390 void _reset([engine.AnalysisContext context]) { |
| 382 kind = null; | 391 kind = null; |
| 383 offset = null; | 392 offset = null; |
| 384 length = null; | 393 length = null; |
| 385 refactoring = null; | 394 refactoring = null; |
| 386 feedback = null; | 395 feedback = null; |
| 387 initStatus = new RefactoringStatus(); | 396 initStatus = new RefactoringStatus(); |
| 388 optionsStatus = new RefactoringStatus(); | 397 optionsStatus = new RefactoringStatus(); |
| 389 finalStatus = new RefactoringStatus(); | 398 finalStatus = new RefactoringStatus(); |
| 390 } | 399 } |
| 391 | 400 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 439 } | 448 } |
| 440 if (refactoring is RenameRefactoring) { | 449 if (refactoring is RenameRefactoring) { |
| 441 RenameRefactoring renameRefactoring = refactoring; | 450 RenameRefactoring renameRefactoring = refactoring; |
| 442 RenameOptions renameOptions = params.options; | 451 RenameOptions renameOptions = params.options; |
| 443 renameRefactoring.newName = renameOptions.newName; | 452 renameRefactoring.newName = renameOptions.newName; |
| 444 return renameRefactoring.checkNewName(); | 453 return renameRefactoring.checkNewName(); |
| 445 } | 454 } |
| 446 return new RefactoringStatus(); | 455 return new RefactoringStatus(); |
| 447 } | 456 } |
| 448 } | 457 } |
| OLD | NEW |