| 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 services.src.refactoring.inline_local; | 5 library services.src.refactoring.inline_local; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/protocol_server.dart' hide Element; | 9 import 'package:analysis_server/src/protocol_server.dart' hide Element; |
| 10 import 'package:analysis_server/src/services/correction/source_range.dart'; | 10 import 'package:analysis_server/src/services/correction/source_range.dart'; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 @override | 67 @override |
| 68 Future<RefactoringStatus> checkInitialConditions() async { | 68 Future<RefactoringStatus> checkInitialConditions() async { |
| 69 RefactoringStatus result = new RefactoringStatus(); | 69 RefactoringStatus result = new RefactoringStatus(); |
| 70 // prepare variable | 70 // prepare variable |
| 71 { | 71 { |
| 72 AstNode offsetNode = new NodeLocator(offset).searchWithin(unit); | 72 AstNode offsetNode = new NodeLocator(offset).searchWithin(unit); |
| 73 if (offsetNode is SimpleIdentifier) { | 73 if (offsetNode is SimpleIdentifier) { |
| 74 Element element = offsetNode.staticElement; | 74 Element element = offsetNode.staticElement; |
| 75 if (element is LocalVariableElement) { | 75 if (element is LocalVariableElement) { |
| 76 _variableElement = element; | 76 _variableElement = element; |
| 77 _variableNode = element.node; | 77 _variableNode = element.computeNode(); |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 // validate node declaration | 81 // validate node declaration |
| 82 if (!_isVariableDeclaredInStatement()) { | 82 if (!_isVariableDeclaredInStatement()) { |
| 83 result = new RefactoringStatus.fatal( | 83 result = new RefactoringStatus.fatal( |
| 84 'Local variable declaration or reference must be selected ' | 84 'Local variable declaration or reference must be selected ' |
| 85 'to activate this refactoring.'); | 85 'to activate this refactoring.'); |
| 86 return new Future.value(result); | 86 return new Future.value(result); |
| 87 } | 87 } |
| 88 // should have initializer at declaration | 88 // should have initializer at declaration |
| 89 if (_variableNode.initializer == null) { | 89 if (_variableNode.initializer == null) { |
| 90 String message = format( | 90 String message = format( |
| 91 "Local variable '{0}' is not initialized at declaration.", | 91 "Local variable '{0}' is not initialized at declaration.", |
| 92 _variableElement.displayName); | 92 _variableElement.displayName); |
| 93 result = new RefactoringStatus.fatal( | 93 result = new RefactoringStatus.fatal( |
| 94 message, newLocation_fromNode(_variableNode)); | 94 message, newLocation_fromNode(_variableNode)); |
| 95 return new Future.value(result); | 95 return new Future.value(result); |
| 96 } | 96 } |
| 97 // prepare references | 97 // prepare references |
| 98 _references = await searchEngine.searchReferences(_variableElement); | 98 _references = await searchEngine.searchReferences(_variableElement); |
| 99 // should not have assignments | 99 // should not have assignments |
| 100 for (SearchMatch reference in _references) { | 100 for (SearchMatch reference in _references) { |
| 101 if (reference.kind != MatchKind.READ) { | 101 if (reference.kind != MatchKind.READ) { |
| 102 String message = format( | 102 String message = format( |
| 103 "Local variable '{0}' is assigned more than once.", [ | 103 "Local variable '{0}' is assigned more than once.", |
| 104 _variableElement.displayName | 104 [_variableElement.displayName]); |
| 105 ]); | |
| 106 return new RefactoringStatus.fatal( | 105 return new RefactoringStatus.fatal( |
| 107 message, newLocation_fromMatch(reference)); | 106 message, newLocation_fromMatch(reference)); |
| 108 } | 107 } |
| 109 } | 108 } |
| 110 // done | 109 // done |
| 111 return result; | 110 return result; |
| 112 } | 111 } |
| 113 | 112 |
| 114 @override | 113 @override |
| 115 Future<SourceChange> createChange() { | 114 Future<SourceChange> createChange() { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 if (initializerOperator == TokenType.MINUS || | 201 if (initializerOperator == TokenType.MINUS || |
| 203 initializerOperator == TokenType.MINUS_MINUS) { | 202 initializerOperator == TokenType.MINUS_MINUS) { |
| 204 return true; | 203 return true; |
| 205 } | 204 } |
| 206 } | 205 } |
| 207 } | 206 } |
| 208 // no () is needed | 207 // no () is needed |
| 209 return false; | 208 return false; |
| 210 } | 209 } |
| 211 } | 210 } |
| OLD | NEW |